Commit eff32210 by Barnabás Czémán

ADD search & pagination

parent 3f1b8167
...@@ -12,6 +12,20 @@ ...@@ -12,6 +12,20 @@
<h1>{% trans "Blacklist" %} <small></small></h1> <h1>{% trans "Blacklist" %} <small></small></h1>
</div> </div>
<div class="row">
<div class="col-md-3">
<form action="" method="GET" id="network-blacklist-list-form">
<div class="input-group">
<input type="text" id="network-blacklist-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
{% render_table table %} {% render_table table %}
</div> </div>
......
...@@ -12,6 +12,20 @@ ...@@ -12,6 +12,20 @@
<h1>{% trans "Domains" %}</h1> <h1>{% trans "Domains" %}</h1>
</div> </div>
<div class="row">
<div class="col-md-3">
<form action="" method="GET" id="network-domain-list-form">
<div class="input-group">
<input type="text" id="network-domain-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
{% render_table table %} {% render_table table %}
</div> </div>
......
...@@ -14,6 +14,20 @@ ...@@ -14,6 +14,20 @@
<h1>{% trans "Firewalls" %}</h1> <h1>{% trans "Firewalls" %}</h1>
</div> </div>
<div class="row">
<div class="col-md-3">
<form action="" method="GET" id="network-firewall-list-form">
<div class="input-group">
<input type="text" id="network-firewall-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
{% render_table table %} {% render_table table %}
</div> </div>
......
...@@ -12,5 +12,21 @@ ...@@ -12,5 +12,21 @@
<h1>{% trans "Host groups" %}</h1> <h1>{% trans "Host groups" %}</h1>
</div> </div>
{% render_table table %} <div class="row">
<div class="col-md-3">
<form action="" method="GET" id="network-group-list-form">
<div class="input-group">
<input type="text" id="network-group-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive">
{% render_table table %}
</div>
{% endblock %} {% endblock %}
...@@ -17,13 +17,28 @@ ...@@ -17,13 +17,28 @@
</h1> </h1>
</div> </div>
<ul class="nav nav-pills" style="margin: 5px 0 20px 0;"> <div class="row">
<div class="col-md-9">
<ul class="nav nav-pills" style="margin: 5px 0 20px 0;">
<li class="disabled"><a href="#">{% trans "Filter by type" %}</a></li> <li class="disabled"><a href="#">{% trans "Filter by type" %}</a></li>
<li {% if not request.GET.type %} class="active"{% endif %}><a href="{{ request.path }}">{% trans "ALL" %}</a></li> <li {% if not request.GET.type %} class="active"{% endif %}><a href="{{ request.path }}">{% trans "ALL" %}</a></li>
{% for type in types %} {% for type in types %}
<li{% if request.GET.type == type.0 %} class="active"{% endif %}><a href="?type={{ type.0 }}">{{ type.0 }}</a></li> <li{% if request.GET.type == type.0 %} class="active"{% endif %}><a href="?type={{ type.0 }}">{{ type.0 }}</a></li>
{% endfor %} {% endfor %}
</ul> </ul>
</div>
<div class="col-md-3">
<form action="" method="GET" id="network-record-list-form">
<div class="input-group">
<input type="text" id="network-record-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
{% render_table table %} {% render_table table %}
......
...@@ -12,5 +12,21 @@ ...@@ -12,5 +12,21 @@
<h1>{% trans "Vlan groups" %}</h1> <h1>{% trans "Vlan groups" %}</h1>
</div> </div>
{% render_table table %} <div class="row">
<div class="col-md-3">
<form action="" method="GET" id="network-blacklist-list-form">
<div class="input-group">
<input type="text" id="network-blacklist-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive">
{% render_table table %}
</div>
{% endblock %} {% endblock %}
...@@ -12,6 +12,20 @@ ...@@ -12,6 +12,20 @@
<h1>Vlans <small>{% trans "list of all vlans" %}</small></h1> <h1>Vlans <small>{% trans "list of all vlans" %}</small></h1>
</div> </div>
<div class="row">
<div class="col-md-3">
<form action="" method="GET" id="network-vlan-list-form">
<div class="input-group">
<input type="text" id="network-vlan-list-input" name="s" class="form-control"
value="{{ request.GET.s }}" placeholder="{% trans "Search..." %}"/>
<span class="input-group-btn">
<button class="btn btn-primary"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
{% render_table table %} {% render_table table %}
</div> </div>
......
...@@ -23,7 +23,7 @@ from django.views.generic import (TemplateView, UpdateView, DeleteView, ...@@ -23,7 +23,7 @@ from django.views.generic import (TemplateView, UpdateView, DeleteView,
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse_lazy from django.core.urlresolvers import reverse_lazy
from django.shortcuts import render, redirect, get_object_or_404 from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponse, Http404 from django.http import Http404
from django.db.models import Q from django.db.models import Q
from django_tables2 import SingleTableView from django_tables2 import SingleTableView
...@@ -38,10 +38,7 @@ from .tables import ( ...@@ -38,10 +38,7 @@ from .tables import (
SmallRuleTable, SmallGroupRuleTable, SmallRecordTable, SwitchPortTable, SmallRuleTable, SmallGroupRuleTable, SmallRecordTable, SwitchPortTable,
SmallDhcpTable, FirewallTable, FirewallRuleTable, SmallDhcpTable, FirewallTable, FirewallRuleTable,
) )
from .forms import ( from . import forms
HostForm, VlanForm, DomainForm, GroupForm, RecordForm, BlacklistItemForm,
RuleForm, VlanGroupForm, SwitchPortForm, FirewallForm
)
from django.contrib import messages from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin from django.contrib.messages.views import SuccessMessageMixin
...@@ -54,22 +51,7 @@ from itertools import chain ...@@ -54,22 +51,7 @@ from itertools import chain
from dashboard.views import AclUpdateView from dashboard.views import AclUpdateView
from dashboard.forms import AclUserOrGroupAddForm from dashboard.forms import AclUserOrGroupAddForm
try: from django.http import JsonResponse
from django.http import JsonResponse
except ImportError:
from django.utils import simplejson
class JsonResponse(HttpResponse):
"""JSON response for Django < 1.7
https://gist.github.com/philippeowagner/3179eb475fe1795d6515
"""
def __init__(self, content, mimetype='application/json',
status=None, content_type=None):
super(JsonResponse, self).__init__(
content=simplejson.dumps(content),
mimetype=mimetype,
status=status,
content_type=content_type)
class MagicMixin(object): class MagicMixin(object):
...@@ -129,14 +111,24 @@ class BlacklistList(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -129,14 +111,24 @@ class BlacklistList(LoginRequiredMixin, SuperuserRequiredMixin,
model = BlacklistItem model = BlacklistItem
table_class = BlacklistItemTable table_class = BlacklistItemTable
template_name = "network/blacklist-list.html" template_name = "network/blacklist-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_table_data(self):
data = self.model.objects.all()
search = self.request.GET.get("s")
if search:
data = data.filter(Q(host__hostname__icontains=search) | Q(ipv4__icontains=search) | Q(reason__icontains=search))
return data
class BlacklistDetail(LoginRequiredMixin, SuperuserRequiredMixin, class BlacklistDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = BlacklistItem model = BlacklistItem
template_name = "network/blacklist-edit.html" template_name = "network/blacklist-edit.html"
form_class = BlacklistItemForm form_class = forms.BlacklistItemForm
success_message = _(u'Successfully modified blacklist item %(ipv4)s.') success_message = _(u'Successfully modified blacklist item %(ipv4)s.')
def get_success_url(self): def get_success_url(self):
...@@ -153,7 +145,7 @@ class BlacklistCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -153,7 +145,7 @@ class BlacklistCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, CreateView): SuccessMessageMixin, CreateView):
model = BlacklistItem model = BlacklistItem
template_name = "network/blacklist-create.html" template_name = "network/blacklist-create.html"
form_class = BlacklistItemForm form_class = forms.BlacklistItemForm
success_message = _(u'Successfully created blacklist item %(ipv4)s') success_message = _(u'Successfully created blacklist item %(ipv4)s')
...@@ -181,14 +173,23 @@ class DomainList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -181,14 +173,23 @@ class DomainList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
model = Domain model = Domain
table_class = DomainTable table_class = DomainTable
template_name = "network/domain-list.html" template_name = "network/domain-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_table_data(self):
data = self.model.objects.all()
search = self.request.GET.get("s")
if search:
data = self.model.objects.filter(Q(name__icontains=search))
return data
class DomainDetail(LoginRequiredMixin, SuperuserRequiredMixin, class DomainDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Domain model = Domain
template_name = "network/domain-edit.html" template_name = "network/domain-edit.html"
form_class = DomainForm form_class = forms.DomainForm
success_message = _(u'Successfully modified domain %(name)s.') success_message = _(u'Successfully modified domain %(name)s.')
def get_success_url(self): def get_success_url(self):
...@@ -215,7 +216,7 @@ class DomainCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -215,7 +216,7 @@ class DomainCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = Domain model = Domain
template_name = "network/domain-create.html" template_name = "network/domain-create.html"
form_class = DomainForm form_class = forms.DomainForm
success_message = _(u'Successfully created domain %(name)s.') success_message = _(u'Successfully created domain %(name)s.')
...@@ -293,14 +294,24 @@ class FirewallList(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -293,14 +294,24 @@ class FirewallList(LoginRequiredMixin, SuperuserRequiredMixin,
model = Firewall model = Firewall
table_class = FirewallTable table_class = FirewallTable
template_name = "network/firewall-list.html" template_name = "network/firewall-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_table_data(self):
data = self.model.objects.all()
search = self.request.GET.get("s")
if search:
data = data.filter(Q(name__icontains=search))
return data
class FirewallDetail(LoginRequiredMixin, SuperuserRequiredMixin, class FirewallDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Firewall model = Firewall
template_name = "network/firewall-edit.html" template_name = "network/firewall-edit.html"
form_class = FirewallForm form_class = forms.FirewallForm
success_message = _(u'Succesfully modified firewall.') success_message = _(u'Succesfully modified firewall.')
def get_success_url(self): def get_success_url(self):
...@@ -319,7 +330,7 @@ class FirewallCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -319,7 +330,7 @@ class FirewallCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, CreateView): SuccessMessageMixin, CreateView):
model = Firewall model = Firewall
template_name = "network/firewall-create.html" template_name = "network/firewall-create.html"
form_class = FirewallForm form_class = forms.FirewallForm
success_message = _(u'Successfully created firewall.') success_message = _(u'Successfully created firewall.')
...@@ -339,14 +350,24 @@ class GroupList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -339,14 +350,24 @@ class GroupList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
model = Group model = Group
table_class = GroupTable table_class = GroupTable
template_name = "network/group-list.html" template_name = "network/group-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_table_data(self):
data = self.model.objects.all()
search = self.request.GET.get("s")
if search:
data = data.filter(Q(name__icontains=search) | Q(description__icontains=search))
return data
class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, class GroupCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = Group model = Group
template_name = "network/group-create.html" template_name = "network/group-create.html"
form_class = GroupForm form_class = forms.GroupForm
success_message = _(u'Successfully created host group %(name)s.') success_message = _(u'Successfully created host group %(name)s.')
...@@ -354,7 +375,7 @@ class GroupDetail(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -354,7 +375,7 @@ class GroupDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Group model = Group
template_name = "network/group-edit.html" template_name = "network/group-edit.html"
form_class = GroupForm form_class = forms.GroupForm
success_message = _(u'Successfully modified host group %(name)s.') success_message = _(u'Successfully modified host group %(name)s.')
def get_success_url(self): def get_success_url(self):
...@@ -412,7 +433,9 @@ class HostList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -412,7 +433,9 @@ class HostList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
model = Host model = Host
table_class = HostTable table_class = HostTable
template_name = "network/host-list.html" template_name = "network/host-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(HostList, self).get_context_data(**kwargs) context = super(HostList, self).get_context_data(**kwargs)
...@@ -423,9 +446,9 @@ class HostList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -423,9 +446,9 @@ class HostList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
def get_table_data(self): def get_table_data(self):
vlan_id = self.request.GET.get('vlan') vlan_id = self.request.GET.get('vlan')
if vlan_id: if vlan_id:
data = Host.objects.filter(vlan=vlan_id).select_related() data = self.model.objects.filter(vlan=vlan_id).select_related()
else: else:
data = Host.objects.select_related() data = self.model.objects.select_related()
search = self.request.GET.get("s") search = self.request.GET.get("s")
if search: if search:
...@@ -438,7 +461,7 @@ class HostDetail(HostMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -438,7 +461,7 @@ class HostDetail(HostMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Host model = Host
template_name = "network/host-edit.html" template_name = "network/host-edit.html"
form_class = HostForm form_class = forms.HostForm
success_message = _(u'Successfully modified host %(hostname)s.') success_message = _(u'Successfully modified host %(hostname)s.')
def _get_ajax(self, *args, **kwargs): def _get_ajax(self, *args, **kwargs):
...@@ -511,7 +534,7 @@ class HostCreate(HostMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -511,7 +534,7 @@ class HostCreate(HostMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = Host model = Host
template_name = "network/host-create.html" template_name = "network/host-create.html"
form_class = HostForm form_class = forms.HostForm
success_message = _(u'Successfully created host %(hostname)s.') success_message = _(u'Successfully created host %(hostname)s.')
def get_initial(self): def get_initial(self):
...@@ -572,7 +595,9 @@ class RecordList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -572,7 +595,9 @@ class RecordList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
model = Record model = Record
table_class = RecordTable table_class = RecordTable
template_name = "network/record-list.html" template_name = "network/record-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(RecordList, self).get_context_data(**kwargs) context = super(RecordList, self).get_context_data(**kwargs)
...@@ -585,6 +610,11 @@ class RecordList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -585,6 +610,11 @@ class RecordList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
data = Record.objects.filter(type=type_id).select_related() data = Record.objects.filter(type=type_id).select_related()
else: else:
data = Record.objects.select_related() data = Record.objects.select_related()
search = self.request.GET.get("s")
if search:
data = data.filter(Q(host__hostname__icontains=search) | Q(domain__name__icontains=search))
return data return data
...@@ -592,7 +622,7 @@ class RecordDetail(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -592,7 +622,7 @@ class RecordDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Record model = Record
template_name = "network/record-edit.html" template_name = "network/record-edit.html"
form_class = RecordForm form_class = forms.RecordForm
# TODO fqdn # TODO fqdn
success_message = _(u'Successfully modified record.') success_message = _(u'Successfully modified record.')
...@@ -611,7 +641,7 @@ class RecordCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -611,7 +641,7 @@ class RecordCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = Record model = Record
template_name = "network/record-create.html" template_name = "network/record-create.html"
form_class = RecordForm form_class = forms.RecordForm
# TODO fqdn # TODO fqdn
success_message = _(u'Successfully created record.') success_message = _(u'Successfully created record.')
...@@ -651,7 +681,9 @@ class RuleList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -651,7 +681,9 @@ class RuleList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
model = Rule model = Rule
table_class = RuleTable table_class = RuleTable
template_name = "network/rule-list.html" template_name = "network/rule-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
self.types = OrderedDict([ self.types = OrderedDict([
...@@ -664,8 +696,8 @@ class RuleList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -664,8 +696,8 @@ class RuleList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
return context return context
def get_table_data(self): def get_table_data(self):
rules = Rule.objects.select_related('host', 'hostgroup', 'vlan', rules = Rule.objects.select_related(
'vlangroup', 'firewall', 'host', 'hostgroup', 'vlan', 'vlangroup', 'firewall',
'foreign_network', 'owner') 'foreign_network', 'owner')
rule_type = self.request.GET.get("type") rule_type = self.request.GET.get("type")
...@@ -678,7 +710,7 @@ class RuleDetail(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -678,7 +710,7 @@ class RuleDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Rule model = Rule
template_name = "network/rule-edit.html" template_name = "network/rule-edit.html"
form_class = RuleForm form_class = forms.RuleForm
success_message = _(u'Successfully modified rule.') success_message = _(u'Successfully modified rule.')
def get_success_url(self): def get_success_url(self):
...@@ -698,7 +730,7 @@ class RuleCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -698,7 +730,7 @@ class RuleCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = Rule model = Rule
template_name = "network/rule-create.html" template_name = "network/rule-create.html"
form_class = RuleForm form_class = forms.RuleForm
success_message = _(u'Successfully created rule.') success_message = _(u'Successfully created rule.')
def get_initial(self): def get_initial(self):
...@@ -727,14 +759,16 @@ class SwitchPortList(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -727,14 +759,16 @@ class SwitchPortList(LoginRequiredMixin, SuperuserRequiredMixin,
model = SwitchPort model = SwitchPort
table_class = SwitchPortTable table_class = SwitchPortTable
template_name = "network/switch-port-list.html" template_name = "network/switch-port-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
class SwitchPortDetail(LoginRequiredMixin, SuperuserRequiredMixin, class SwitchPortDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = SwitchPort model = SwitchPort
template_name = "network/switch-port-edit.html" template_name = "network/switch-port-edit.html"
form_class = SwitchPortForm form_class = forms.SwitchPortForm
success_message = _(u'Succesfully modified switch port.') success_message = _(u'Succesfully modified switch port.')
def get_success_url(self): def get_success_url(self):
...@@ -753,7 +787,7 @@ class SwitchPortCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -753,7 +787,7 @@ class SwitchPortCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, CreateView): SuccessMessageMixin, CreateView):
model = SwitchPort model = SwitchPort
template_name = "network/switch-port-create.html" template_name = "network/switch-port-create.html"
form_class = SwitchPortForm form_class = forms.SwitchPortForm
success_message = _(u'Successfully created switch port.') success_message = _(u'Successfully created switch port.')
...@@ -773,7 +807,17 @@ class VlanList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView): ...@@ -773,7 +807,17 @@ class VlanList(LoginRequiredMixin, SuperuserRequiredMixin, SingleTableView):
model = Vlan model = Vlan
table_class = VlanTable table_class = VlanTable
template_name = "network/vlan-list.html" template_name = "network/vlan-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_table_data(self):
search = self.request.GET.get("s")
data = self.model.objects.all()
if search:
data = self.model.objects.filter(Q(name__icontains=search))
return data
class VlanAclUpdateView(AclUpdateView): class VlanAclUpdateView(AclUpdateView):
...@@ -798,7 +842,7 @@ class VlanDetail(VlanMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -798,7 +842,7 @@ class VlanDetail(VlanMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = Vlan model = Vlan
template_name = "network/vlan-edit.html" template_name = "network/vlan-edit.html"
form_class = VlanForm form_class = forms.VlanForm
slug_field = 'vid' slug_field = 'vid'
slug_url_kwarg = 'vid' slug_url_kwarg = 'vid'
success_message = _(u'Succesfully modified vlan %(name)s.') success_message = _(u'Succesfully modified vlan %(name)s.')
...@@ -820,7 +864,7 @@ class VlanCreate(VlanMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -820,7 +864,7 @@ class VlanCreate(VlanMagicMixin, LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = Vlan model = Vlan
template_name = "network/vlan-create.html" template_name = "network/vlan-create.html"
form_class = VlanForm form_class = forms.VlanForm
success_message = _(u'Successfully created vlan %(name)s.') success_message = _(u'Successfully created vlan %(name)s.')
...@@ -871,6 +915,7 @@ class VlanDelete(LoginRequiredMixin, SuperuserRequiredMixin, DeleteView): ...@@ -871,6 +915,7 @@ class VlanDelete(LoginRequiredMixin, SuperuserRequiredMixin, DeleteView):
context['deps'] = deps context['deps'] = deps
context['confirmation'] = True context['confirmation'] = True
return context return context
...@@ -879,14 +924,24 @@ class VlanGroupList(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -879,14 +924,24 @@ class VlanGroupList(LoginRequiredMixin, SuperuserRequiredMixin,
model = VlanGroup model = VlanGroup
table_class = VlanGroupTable table_class = VlanGroupTable
template_name = "network/vlan-group-list.html" template_name = "network/vlan-group-list.html"
table_pagination = False table_pagination = {
'per_page': 25
}
def get_table_data(self):
data = self.model.objects.all()
search = self.request.GET.get("s")
if search:
data = data.filter(Q(name__icontains=search) | Q(description__icontains=search))
return data
class VlanGroupDetail(LoginRequiredMixin, SuperuserRequiredMixin, class VlanGroupDetail(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, UpdateView): SuccessMessageMixin, UpdateView):
model = VlanGroup model = VlanGroup
template_name = "network/vlan-group-edit.html" template_name = "network/vlan-group-edit.html"
form_class = VlanGroupForm form_class = forms.VlanGroupForm
success_url = reverse_lazy('network.vlan_group_list') success_url = reverse_lazy('network.vlan_group_list')
success_message = _(u'Successfully modified vlan group %(name)s.') success_message = _(u'Successfully modified vlan group %(name)s.')
...@@ -900,7 +955,7 @@ class VlanGroupCreate(LoginRequiredMixin, SuperuserRequiredMixin, ...@@ -900,7 +955,7 @@ class VlanGroupCreate(LoginRequiredMixin, SuperuserRequiredMixin,
SuccessMessageMixin, InitialOwnerMixin, CreateView): SuccessMessageMixin, InitialOwnerMixin, CreateView):
model = VlanGroup model = VlanGroup
template_name = "network/vlan-group-create.html" template_name = "network/vlan-group-create.html"
form_class = VlanGroupForm form_class = forms.VlanGroupForm
success_message = _(u'Successfully created vlan group %(name)s.') success_message = _(u'Successfully created vlan group %(name)s.')
...@@ -922,22 +977,26 @@ def remove_host_group(request, **kwargs): ...@@ -922,22 +977,26 @@ def remove_host_group(request, **kwargs):
# for get we show the confirmation page # for get we show the confirmation page
if request.method == "GET": if request.method == "GET":
return render(request, return render(
request,
'network/confirm/remove_host_group.html', 'network/confirm/remove_host_group.html',
{ {
'group': group.name, 'group': group.name,
'host': host.hostname 'host': host.hostname
}) }
)
# for post we actually remove the group from the host # for post we actually remove the group from the host
elif request.method == "POST": elif request.method == "POST":
host.groups.remove(group) host.groups.remove(group)
if not request.is_ajax(): if not request.is_ajax():
messages.success(request, _(u"Successfully removed %(host)s from " messages.success(
"%(group)s group." % { request,
_(u"Successfully removed %(host)s from %(group)s group." % {
'host': host, 'host': host,
'group': group 'group': group
})) })
)
return redirect(reverse_lazy('network.host', return redirect(reverse_lazy('network.host',
kwargs={'pk': kwargs['pk']})) kwargs={'pk': kwargs['pk']}))
...@@ -949,11 +1008,13 @@ def add_host_group(request, **kwargs): ...@@ -949,11 +1008,13 @@ def add_host_group(request, **kwargs):
group = Group.objects.get(pk=group_pk) group = Group.objects.get(pk=group_pk)
host.groups.add(group) host.groups.add(group)
if not request.is_ajax(): if not request.is_ajax():
messages.success(request, _(u"Successfully added %(host)s to group" messages.success(
" %(group)s." % { request,
_(u"Successfully added %(host)s to group %(group)s." % {
'host': host, 'host': host,
'group': group 'group': group
})) })
)
return redirect(reverse_lazy('network.host', kwargs=kwargs)) return redirect(reverse_lazy('network.host', kwargs=kwargs))
...@@ -968,10 +1029,12 @@ def remove_switch_port_device(request, **kwargs): ...@@ -968,10 +1029,12 @@ def remove_switch_port_device(request, **kwargs):
elif request.method == "POST": elif request.method == "POST":
device.delete() device.delete()
if not request.is_ajax(): if not request.is_ajax():
messages.success(request, _(u"Successfully deleted ethernet device" messages.success(
" %(name)s." % { request,
_(u"Successfully deleted ethernet device %(name)s." % {
'name': device.name, 'name': device.name,
})) })
)
return redirect(reverse_lazy('network.switch_port', return redirect(reverse_lazy('network.switch_port',
kwargs={'pk': kwargs['pk']})) kwargs={'pk': kwargs['pk']}))
...@@ -986,16 +1049,20 @@ def add_switch_port_device(request, **kwargs): ...@@ -986,16 +1049,20 @@ def add_switch_port_device(request, **kwargs):
new_device = EthernetDevice(name=device_name, switch_port=switch_port) new_device = EthernetDevice(name=device_name, switch_port=switch_port)
new_device.save() new_device.save()
if not request.is_ajax(): if not request.is_ajax():
messages.success(request, _(u"Successfully added %(name)s to this" messages.success(
" switch port" % { request,
_(u"Successfully added %(name)s to this switch port" % {
'name': device_name, 'name': device_name,
})) })
)
return redirect(reverse_lazy('network.switch_port', kwargs=kwargs)) return redirect(reverse_lazy('network.switch_port', kwargs=kwargs))
elif not len(device_name) > 0: elif not len(device_name) > 0:
messages.error(request, _("Ethernet device name cannot be empty.")) messages.error(request, _("Ethernet device name cannot be empty."))
return redirect(reverse_lazy('network.switch_port', kwargs=kwargs)) return redirect(reverse_lazy('network.switch_port', kwargs=kwargs))
elif EthernetDevice.objects.get(name=device_name) is not None: elif EthernetDevice.objects.get(name=device_name) is not None:
messages.error(request, _("There is already an ethernet device with" messages.error(
" that name.")) request,
_("There is already an ethernet device with that name.")
)
return redirect(reverse_lazy('network.switch_port', kwargs=kwargs)) return redirect(reverse_lazy('network.switch_port', kwargs=kwargs))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment