admin.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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, BankInfo
  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. fieldsets = (
  16. ('', {'fields': (
  17. ('street_address', 'extended_address', 'post_office_box'),
  18. ('postal_code', 'locality'),
  19. ('region', 'country_name'))}),
  20. ('Extras', {
  21. 'fields': ('siret',),
  22. 'description': 'Ces champs ne font pas partie de la spécification db.ffdn.org mais sont utilisés sur le site'})
  23. )
  24. class OtherWebsiteInline(admin.StackedInline):
  25. model = OtherWebsite
  26. extra = 0
  27. class ChatRoomInline(admin.StackedInline):
  28. model = ChatRoom
  29. extra = 0
  30. class CoveredAreaInline(admin.StackedInline):
  31. model = CoveredArea
  32. extra = 0
  33. class BankInfoInline(admin.StackedInline):
  34. model = BankInfo
  35. extra = 0
  36. fieldsets = (('', {
  37. 'fields': ('iban', 'bic', 'bank_name', 'check_order'),
  38. 'description': (
  39. 'Les coordonnées bancaires ne font pas partie de la'+
  40. ' spécification db.ffdn.org mais sont utilisées par le'+
  41. ' site (facturation notamment).')
  42. }),)
  43. class ISPInfoAdmin(SingleInstanceAdminMixin, admin.ModelAdmin):
  44. model = ISPInfo
  45. fieldsets = (
  46. ('General', {'fields': (
  47. ('name', 'shortname'),
  48. 'description',
  49. 'logoURL',
  50. ('creationDate', 'ffdnMemberSince'),
  51. 'progressStatus',
  52. ('latitude', 'longitude'))}),
  53. ('Contact', {'fields': (
  54. ('email', 'mainMailingList'),
  55. 'website')}),
  56. ('Extras', {
  57. 'fields': ('administrative_email', 'support_email', 'lists_url'),
  58. 'description':
  59. 'Ces champs ne font pas partie de la spécification db.ffdn.org mais sont utilisés sur le site'
  60. }),
  61. )
  62. inlines = (RegisteredOfficeInline, BankInfoInline, OtherWebsiteInline, ChatRoomInline,
  63. CoveredAreaInline)
  64. save_on_top = True
  65. admin.site.register(ISPInfo, ISPInfoAdmin)