diff --git a/network/forms.py b/network/forms.py index a0847b0..54913ab 100644 --- a/network/forms.py +++ b/network/forms.py @@ -5,7 +5,7 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Fieldset, Row, HTML from crispy_forms.layout import Div, ButtonHolder, Submit, BaseInput -from firewall.models import Host +from firewall.models import Host, Vlan class LinkButton(BaseInput): @@ -68,3 +68,58 @@ class HostForm(ModelForm): class Meta: model = Host + + +class VlanForm(ModelForm): + helper = FormHelper() + helper.layout = Layout( + Div( + Row( + Div( + Fieldset( + 'Identity', + 'name', + 'vid', + 'interface', + ), + Fieldset( + 'IPv4', + 'net4', + 'prefix4', + 'ipv4', + 'snat_to', + 'snat_ip', + 'dhcp_pool', + ), + Fieldset( + 'IPv6', + 'net6', + 'prefix6', + 'ipv6', + ), + Fieldset( + 'Domain name service', + 'domain', + 'reverse_domain', + ), + Fieldset( + 'Info', + 'description', + 'comment', + # 'created_at', + # 'modified_at', + ), + css_class='span8'), + Div( + HTML('<p>hello</p>'), + css_class='span4'), + ), + ButtonHolder( + Submit('submit', 'Save'), + LinkButton('back', 'Back', reverse_lazy( + 'network.host_list')) + ), + css_class="form-horizontal")) + + class Meta: + model = Vlan diff --git a/network/tables.py b/network/tables.py index c51a72c..6a3e271 100644 --- a/network/tables.py +++ b/network/tables.py @@ -1,7 +1,8 @@ from django_tables2 import Table, A from django_tables2.columns import LinkColumn -from firewall.models import Host +from firewall.models import Host, Vlan + class HostTable(Table): hostname = LinkColumn('network.host', args=[A('pk')]) @@ -12,3 +13,12 @@ class HostTable(Table): fields = ('hostname', 'vlan', 'mac', 'ipv4', 'ipv6', 'pub_ipv4', 'created_at', 'owner', ) + +class VlanTable(Table): + name = LinkColumn('network.vlan', args=[A('pk')]) + + class Meta: + model = Vlan + attrs = {'class': 'table table-striped table-condensed'} + fields = ('vid', 'name', 'interface', 'ipv4', 'ipv6', 'domain', ) + order_by = 'vid' diff --git a/network/templates/network/vlan-edit.html b/network/templates/network/vlan-edit.html new file mode 100644 index 0000000..d1d986c --- /dev/null +++ b/network/templates/network/vlan-edit.html @@ -0,0 +1,14 @@ +{% extends "network/base.html" %} +{% load render_table from django_tables2 %} +{% load i18n %} +{% load l10n %} +{% load staticfiles %} +{% load crispy_forms_tags %} + +{% block content %} +<div class="page-heading"> + <h1>{{ form.hostname.value }} <small>details of host</small></h1> +</div> + +{% crispy form %} +{% endblock %} diff --git a/network/templates/network/vlan-list.html b/network/templates/network/vlan-list.html new file mode 100644 index 0000000..e4229e6 --- /dev/null +++ b/network/templates/network/vlan-list.html @@ -0,0 +1,13 @@ +{% extends "network/base.html" %} +{% load render_table from django_tables2 %} +{% load i18n %} +{% load l10n %} +{% load staticfiles %} + +{% block content %} +<div class="page-heading"> + <h1>Hosts <small>list of all hosts</small></h1> +</div> + +{% render_table table %} +{% endblock %} diff --git a/network/urls.py b/network/urls.py index 9d53053..c10e7ef 100644 --- a/network/urls.py +++ b/network/urls.py @@ -1,6 +1,6 @@ from django.conf.urls import patterns, url -from .views import IndexView, HostList, HostDetail +from .views import IndexView, HostList, HostDetail, VlanList, VlanDetail urlpatterns = patterns( @@ -8,4 +8,6 @@ urlpatterns = patterns( url('^$', IndexView.as_view(), name='network.index'), url('^hosts/$', HostList.as_view(), name='network.host_list'), url('^hosts/(?P<pk>\d+)/$', HostDetail.as_view(), name='network.host'), + url('^vlans/$', VlanList.as_view(), name='network.vlan_list'), + url('^vlans/(?P<pk>\d+)/$', VlanDetail.as_view(), name='network.vlan'), ) diff --git a/network/views.py b/network/views.py index e427f54..ec160bc 100644 --- a/network/views.py +++ b/network/views.py @@ -3,9 +3,9 @@ from django.views.generic import UpdateView from django_tables2 import SingleTableView -from firewall.models import Host -from .tables import HostTable -from .forms import HostForm +from firewall.models import Host, Vlan +from .tables import HostTable, VlanTable +from .forms import HostForm, VlanForm class IndexView(TemplateView): @@ -22,3 +22,15 @@ class HostDetail(UpdateView): model = Host template_name = "network/host-edit.html" form_class = HostForm + + +class VlanList(SingleTableView): + model = Vlan + table_class = VlanTable + template_name = "network/vlan-list.html" + + +class VlanDetail(UpdateView): + model = Vlan + template_name = "network/vlan-edit.html" + form_class = VlanForm