12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from django.contrib import admin
- from coin.vpn.models import VPNSubscription
- class VPNAdmin(admin.ModelAdmin):
- list_display = ('administrative_subscription', 'activated', 'login',
- 'ipv4_endpoint', 'ipv6_endpoint', 'comment')
- list_filter = ('activated',)
- search_fields = ('login', 'comment',
- # TODO: searching on member directly doesn't work
- 'administrative_subscription__member__first_name',
- 'administrative_subscription__member__last_name',
- 'administrative_subscription__member__email')
- actions = ("generate_endpoints", "generate_endpoints_v4",
- "generate_endpoints_v6")
- def get_readonly_fields(self, request, obj=None):
- if obj:
- return ['login',]
- else:
- return []
- def generate_endpoints_generic(self, request, queryset, v4=True, v6=True):
- count = 0
- for vpn in queryset:
- if vpn.generate_endpoints(v4, v6):
- vpn.full_clean()
- vpn.save()
- count += 1
- msg = "{} VPN subscription(s) updated.".format(count)
- self.message_user(request, msg)
- def generate_endpoints(self, request, queryset):
- self.generate_endpoints_generic(request, queryset)
- generate_endpoints.short_description = "Generate IPv4 and IPv6 endpoints"
- def generate_endpoints_v4(self, request, queryset):
- self.generate_endpoints_generic(request, queryset, v6=False)
- generate_endpoints_v4.short_description = "Generate IPv4 endpoints"
- def generate_endpoints_v6(self, request, queryset):
- self.generate_endpoints_generic(request, queryset, v4=False)
- generate_endpoints_v6.short_description = "Generate IPv6 endpoints"
- admin.site.register(VPNSubscription, VPNAdmin)
|