admin.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.contrib import admin
  4. from coin.isp_database.models import ISPInfo, RegisteredOffice, OtherWebsite, ChatRoom, CoveredArea
  5. class SingleInstanceAdminMixin(object):
  6. """Hides the "Add" button when there is already an instance"""
  7. def has_add_permission(self, request):
  8. num_objects = self.model.objects.count()
  9. if num_objects >= 1:
  10. return False
  11. return super(SingleInstanceAdminMixin, self).has_add_permission(request)
  12. class RegisteredOfficeInline(admin.StackedInline):
  13. model = RegisteredOffice
  14. extra = 0
  15. fields = (('street_address', 'extended_address', 'post_office_box'),
  16. ('postal_code', 'locality'),
  17. ('region', 'country_name'))
  18. class OtherWebsiteInline(admin.StackedInline):
  19. model = OtherWebsite
  20. extra = 0
  21. class ChatRoomInline(admin.StackedInline):
  22. model = ChatRoom
  23. extra = 0
  24. class CoveredAreaInline(admin.StackedInline):
  25. model = CoveredArea
  26. extra = 0
  27. class ISPInfoAdmin(SingleInstanceAdminMixin, admin.ModelAdmin):
  28. model = ISPInfo
  29. fieldsets = (
  30. ('General', {'fields': (
  31. ('name', 'shortname'),
  32. 'description',
  33. 'logoURL',
  34. ('creationDate', 'ffdnMemberSince'),
  35. 'progressStatus',
  36. ('latitude', 'longitude'))}),
  37. ('Contact', {'fields': (
  38. ('email', 'mainMailingList'),
  39. 'website')}),
  40. )
  41. inlines = (RegisteredOfficeInline, OtherWebsiteInline, ChatRoomInline,
  42. CoveredAreaInline)
  43. save_on_top = True
  44. admin.site.register(ISPInfo, ISPInfoAdmin)