admin.py 3.21 KB
Newer Older
1 2
# -*- coding: utf8 -*-

Őry Máté committed
3
from django.contrib import admin
4
from firewall.models import *
django committed
5
from django import contrib
Őry Máté committed
6 7


django committed
8 9 10
class AliasInline(contrib.admin.TabularInline):
    model = Alias

Bach Dániel committed
11 12 13
class RuleInline(contrib.admin.TabularInline):
    model = Rule

Őry Máté committed
14
class HostAdmin(admin.ModelAdmin):
x committed
15
    list_display = ('hostname', 'vlan', 'ipv4', 'ipv6', 'pub_ipv4', 'mac', 'shared_ip', 'owner', 'description', 'reverse', 'groups_l')
django committed
16
    ordering = ('hostname', )
17 18
    list_filter = ('owner', 'vlan', 'groups')
    search_fields = ('hostname', 'description', 'ipv4', 'ipv6', 'mac')
Bach Dániel committed
19 20
    filter_horizontal = ('groups', )
    inlines = (AliasInline, RuleInline)
django committed
21

x committed
22 23 24 25 26 27
    def groups_l(self, instance):
        retval = []
        for i in instance.groups.all():
            retval.append(i.name)
        return u', '.join(retval)

django committed
28 29 30
class HostInline(contrib.admin.TabularInline):
    model = Host
    fields = ('hostname', 'ipv4', 'ipv6', 'pub_ipv4', 'mac', 'shared_ip', 'owner', 'reverse')
Őry Máté committed
31 32

class VlanAdmin(admin.ModelAdmin):
Bach Dániel committed
33
    list_display = ('vid', 'name', 'ipv4', 'net_ipv4', 'ipv6', 'net_ipv6', 'description', 'domain', 'snat_ip', )
django committed
34
    ordering = ('vid', )
x committed
35
    inlines = (RuleInline, )
Őry Máté committed
36 37

class RuleAdmin(admin.ModelAdmin):
Bach Dániel committed
38
    list_display = ('r_type', 'color_desc', 'owner', 'extra', 'direction', 'accept', 'proto', 'sport', 'dport', 'nat', 'nat_dport', 'used_in')
39
    list_filter = ('r_type', 'vlan', 'owner', 'direction', 'accept', 'proto', 'nat')
Őry Máté committed
40

Bach Dániel committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
    def color_desc(self, instance):
        para = '</span>'
        if(instance.dport):
            para = "dport=%s %s" % (instance.dport, para)
        if(instance.sport):
            para = "sport=%s %s" % (instance.sport, para)
        if(instance.proto):
            para = "proto=%s %s" % (instance.proto, para)
        para= u'<span style="color: #00FF00;">' + para
        return u'<span style="color: #FF0000;">[' + instance.r_type + u']</span> ' + (instance.foreign_network.name + u'<span style="color: #0000FF;"> ▸ </span>' + instance.r_type if instance.direction=='1' else instance.r_type + u'<span style="color: #0000FF;"> ▸ </span>' + instance.foreign_network.name) + ' ' + para + ' ' + instance.description
    color_desc.allow_tags = True

    def vlan_l(self, instance):
        retval = []
        for vl in instance.foreign_network.vlans.all():
            retval.append(vl.name)
        return u', '.join(retval)

    def used_in(self, instance):
        for field in [instance.vlan, instance.vlangroup, instance.host, instance.hostgroup, instance.firewall]:
            if field is not None:
                return unicode(field) + ' ' + field._meta.object_name


65
class AliasAdmin(admin.ModelAdmin):
django committed
66
    list_display = ('alias', 'host')
67

68
class SettingAdmin(admin.ModelAdmin):
Bach Dániel committed
69 70 71 72 73
    list_display = ('key', 'value', 'description')

class GroupAdmin(admin.ModelAdmin):
    list_display = ('name', 'owner', 'description')
    inlines = (RuleInline, )
74

Bach Dániel committed
75 76
class FirewallAdmin(admin.ModelAdmin):
    inlines = (RuleInline, )
77

Őry Máté committed
78 79 80
admin.site.register(Host, HostAdmin)
admin.site.register(Vlan, VlanAdmin)
admin.site.register(Rule, RuleAdmin)
81
admin.site.register(Alias, AliasAdmin)
82
admin.site.register(Setting, SettingAdmin)
Bach Dániel committed
83 84 85
admin.site.register(Group, GroupAdmin)
admin.site.register(VlanGroup)
admin.site.register(Firewall, FirewallAdmin)