Statistics
| Branch: | Tag: | Revision:

root / flowspec / admin.py @ dc9b0d59

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