admin.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from django.contrib import admin
  2. from coin.vpn.models import VPNSubscription
  3. # TODO: allow to regenerate IP endpoints (checkbox?)
  4. class VPNAdmin(admin.ModelAdmin):
  5. list_display = ('administrative_subscription', 'activated', 'login',
  6. 'ipv4_endpoint', 'ipv6_endpoint', 'comment')
  7. list_filter = ('activated',)
  8. search_fields = ('login', 'comment',
  9. # TODO: searching on member directly doesn't work
  10. 'administrative_subscription__member__first_name',
  11. 'administrative_subscription__member__last_name',
  12. 'administrative_subscription__member__email')
  13. actions = ("generate_endpoints", "generate_endpoints_v4",
  14. "generate_endpoints_v6")
  15. def get_readonly_fields(self, request, obj=None):
  16. if obj:
  17. return ['login',]
  18. else:
  19. return []
  20. def generate_endpoints_generic(self, request, queryset, v4=True, v6=True):
  21. count = 0
  22. for vpn in queryset:
  23. if vpn.generate_endpoints(v4, v6):
  24. vpn.full_clean()
  25. vpn.save()
  26. count += 1
  27. msg = "{} VPN subscription(s) updated.".format(count)
  28. self.message_user(request, msg)
  29. def generate_endpoints(self, request, queryset):
  30. self.generate_endpoints_generic(request, queryset)
  31. generate_endpoints.short_description = "Generate IPv4 and IPv6 endpoints"
  32. def generate_endpoints_v4(self, request, queryset):
  33. self.generate_endpoints_generic(request, queryset, v6=False)
  34. generate_endpoints_v4.short_description = "Generate IPv4 endpoints"
  35. def generate_endpoints_v6(self, request, queryset):
  36. self.generate_endpoints_generic(request, queryset, v4=False)
  37. generate_endpoints_v6.short_description = "Generate IPv6 endpoints"
  38. admin.site.register(VPNSubscription, VPNAdmin)