Statistics
| Branch: | Tag: | Revision:

root / flowspec / admin.py @ 15d4014d

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