Statistics
| Branch: | Tag: | Revision:

root / flowspec / admin.py @ d60db93b

History | View | Annotate | Download (3.2 kB)

1 a24fbf37 Leonidas Poulopoulos
from django.contrib import admin
2 a24fbf37 Leonidas Poulopoulos
from flowspy.flowspec.models import *
3 6ee21ffd Leonidas Poulopoulos
from flowspy.accounts.models import *
4 357d48dc Leonidas Poulopoulos
from utils import proxy as PR
5 d50fd7b6 Leonidas Poulopoulos
from flowspec.tasks import *
6 d50fd7b6 Leonidas Poulopoulos
from django.contrib.auth.models import User
7 d50fd7b6 Leonidas Poulopoulos
from django.contrib.auth.admin import UserAdmin
8 1e02e391 Leonidas Poulopoulos
from flowspy.peers.models import *
9 887b82c3 Leonidas Poulopoulos
from flowspy.flowspec.forms import *
10 fdc3d663 Leonidas Poulopoulos
import datetime
11 6e9a9419 Leonidas Poulopoulos
from django.conf import settings
12 357d48dc Leonidas Poulopoulos
13 2a2ea58f Leonidas Poulopoulos
from flowspy.monkey_patch.forms import UserCreationForm, UserChangeForm
14 2a2ea58f Leonidas Poulopoulos
15 d50fd7b6 Leonidas Poulopoulos
class RouteAdmin(admin.ModelAdmin):
16 887b82c3 Leonidas Poulopoulos
    form = RouteForm
17 d50fd7b6 Leonidas Poulopoulos
    actions = ['deactivate']
18 d50fd7b6 Leonidas Poulopoulos
    
19 d50fd7b6 Leonidas Poulopoulos
    def deactivate(self, request, queryset):
20 fd3870ee Leonidas Poulopoulos
        queryset = queryset.filter(status='ACTIVE')
21 d50fd7b6 Leonidas Poulopoulos
        response = batch_delete.delay(queryset, reason="ADMININACTIVE")
22 d50fd7b6 Leonidas Poulopoulos
        self.message_user(request, "Added request %s to job que. Check in a while for result" % response)
23 d50fd7b6 Leonidas Poulopoulos
    deactivate.short_description = "Remove selected routes from network"
24 d50fd7b6 Leonidas Poulopoulos
25 887b82c3 Leonidas Poulopoulos
    def save_model(self, request, obj, form, change):
26 887b82c3 Leonidas Poulopoulos
        obj.status = "PENDING"
27 887b82c3 Leonidas Poulopoulos
        obj.save()
28 6e9a9419 Leonidas Poulopoulos
        if change:
29 6e9a9419 Leonidas Poulopoulos
            obj.commit_edit()
30 6e9a9419 Leonidas Poulopoulos
        else:
31 6e9a9419 Leonidas Poulopoulos
            obj.commit_add()
32 887b82c3 Leonidas Poulopoulos
33 887b82c3 Leonidas Poulopoulos
    def has_delete_permission(self, request, obj=None):
34 887b82c3 Leonidas Poulopoulos
        return False
35 887b82c3 Leonidas Poulopoulos
36 7d408f6f Leonidas Poulopoulos
    list_display = ('name', 'status', 'applier' , 'applier_peer', 'get_match', 'get_then', 'response', "expires", "comments")
37 7d408f6f Leonidas Poulopoulos
38 d50fd7b6 Leonidas Poulopoulos
    fieldsets = [
39 d50fd7b6 Leonidas Poulopoulos
        (None,               {'fields': ['name','applier']}),
40 d50fd7b6 Leonidas Poulopoulos
        ("Match",               {'fields': ['source', 'sourceport', 'destination', 'destinationport', 'port']}),
41 d50fd7b6 Leonidas Poulopoulos
        ('Advanced Match Statements', {'fields': ['dscp', 'fragmenttype', 'icmpcode', 'icmptype', 'packetlength', 'protocol', 'tcpflag'], 'classes': ['collapse']}),
42 d50fd7b6 Leonidas Poulopoulos
        ("Then",               {'fields': ['then' ]}),
43 6e9a9419 Leonidas Poulopoulos
        ("Expires",               {'fields': ['expires' ]}),
44 d50fd7b6 Leonidas Poulopoulos
        (None,               {'fields': ['comments',]}),
45 d50fd7b6 Leonidas Poulopoulos
        
46 d50fd7b6 Leonidas Poulopoulos
    ]
47 d50fd7b6 Leonidas Poulopoulos
    
48 887b82c3 Leonidas Poulopoulos
49 887b82c3 Leonidas Poulopoulos
50 d50fd7b6 Leonidas Poulopoulos
class UserProfileInline(admin.StackedInline):
51 d50fd7b6 Leonidas Poulopoulos
    model = UserProfile
52 d50fd7b6 Leonidas Poulopoulos
    
53 d50fd7b6 Leonidas Poulopoulos
class UserProfileAdmin(UserAdmin):
54 2a2ea58f Leonidas Poulopoulos
    add_form = UserCreationForm
55 2a2ea58f Leonidas Poulopoulos
    form = UserChangeForm
56 ce1536e9 Leonidas Poulopoulos
    actions = ['deactivate', 'activate']
57 dc9b0d59 Leonidas Poulopoulos
    list_display = ('username', 'email', 'first_name' , 'last_name', 'is_staff', 'is_active', 'is_superuser', 'get_userprofile_peer')
58 d50fd7b6 Leonidas Poulopoulos
    inlines = [UserProfileInline]
59 ce1536e9 Leonidas Poulopoulos
60 ce1536e9 Leonidas Poulopoulos
    def deactivate(self, request, queryset):
61 ce1536e9 Leonidas Poulopoulos
        queryset = queryset.update(is_active=False)
62 ce1536e9 Leonidas Poulopoulos
    deactivate.short_description = "Deactivate Selected Users"
63 ce1536e9 Leonidas Poulopoulos
64 ce1536e9 Leonidas Poulopoulos
    def activate(self, request, queryset):
65 ce1536e9 Leonidas Poulopoulos
        queryset = queryset.update(is_active=True)
66 ce1536e9 Leonidas Poulopoulos
    activate.short_description = "Activate Selected Users"
67 ce1536e9 Leonidas Poulopoulos
68 ce1536e9 Leonidas Poulopoulos
    def get_userprofile_peer(self, instance):
69 ce1536e9 Leonidas Poulopoulos
        # instance is User instance
70 ce1536e9 Leonidas Poulopoulos
        return instance.get_profile().peer
71 ce1536e9 Leonidas Poulopoulos
    get_userprofile_peer.short_description = "User Peer"
72 b10e01d6 Leonidas Poulopoulos
#    fields = ('name', 'applier', 'expires')
73 357d48dc Leonidas Poulopoulos
74 357d48dc Leonidas Poulopoulos
    #def formfield_for_dbfield(self, db_field, **kwargs):
75 357d48dc Leonidas Poulopoulos
    #    if db_field.name == 'password':
76 357d48dc Leonidas Poulopoulos
    #        kwargs['widget'] = PasswordInput
77 357d48dc Leonidas Poulopoulos
    #    return db_field.formfield(**kwargs)
78 a24fbf37 Leonidas Poulopoulos
79 d50fd7b6 Leonidas Poulopoulos
admin.site.unregister(User)
80 a24fbf37 Leonidas Poulopoulos
admin.site.register(MatchPort)
81 7fac6521 Leonidas Poulopoulos
admin.site.register(MatchProtocol)
82 a24fbf37 Leonidas Poulopoulos
admin.site.register(MatchDscp)
83 a24fbf37 Leonidas Poulopoulos
admin.site.register(ThenAction)
84 d50fd7b6 Leonidas Poulopoulos
admin.site.register(Route, RouteAdmin)
85 d50fd7b6 Leonidas Poulopoulos
admin.site.register(User, UserProfileAdmin)
86 357d48dc Leonidas Poulopoulos
admin.site.disable_action('delete_selected')
87 357d48dc Leonidas Poulopoulos