|
@@ -13,7 +13,7 @@ class VPNAdmin(admin.ModelAdmin):
|
|
|
'administrative_subscription__member__last_name',
|
|
|
'administrative_subscription__member__email')
|
|
|
actions = ("generate_endpoints", "generate_endpoints_v4",
|
|
|
- "generate_endpoints_v6")
|
|
|
+ "generate_endpoints_v6", "activate", "deactivate")
|
|
|
|
|
|
def get_readonly_fields(self, request, obj=None):
|
|
|
if obj:
|
|
@@ -21,6 +21,28 @@ class VPNAdmin(admin.ModelAdmin):
|
|
|
else:
|
|
|
return []
|
|
|
|
|
|
+ def set_activation(self, request, queryset, value):
|
|
|
+ count = 0
|
|
|
+ # We must update each object individually, because we want to run
|
|
|
+ # the save() method to update the backend.
|
|
|
+ for vpn in queryset:
|
|
|
+ if vpn.activated != value:
|
|
|
+ vpn.activated = value
|
|
|
+ vpn.full_clean()
|
|
|
+ vpn.save()
|
|
|
+ count += 1
|
|
|
+ action = "activated" if value else "deactivated"
|
|
|
+ msg = "{} VPN subscription(s) {}.".format(count, action)
|
|
|
+ self.message_user(request, msg)
|
|
|
+
|
|
|
+ def activate(self, request, queryset):
|
|
|
+ self.set_activation(request, queryset, True)
|
|
|
+ activate.short_description = "Activate selected VPNs"
|
|
|
+
|
|
|
+ def deactivate(self, request, queryset):
|
|
|
+ self.set_activation(request, queryset, False)
|
|
|
+ deactivate.short_description = "Deactivate selected VPNs"
|
|
|
+
|
|
|
def generate_endpoints_generic(self, request, queryset, v4=True, v6=True):
|
|
|
count = 0
|
|
|
for vpn in queryset:
|