admin.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. from django.conf.urls import url
  2. from django.contrib import admin as djadmin
  3. from django.contrib.auth import get_user_model
  4. from django.utils.translation import gettext_lazy as _
  5. from .djangoadmin import UserAdminModel
  6. from .views.admin.bans import BansList, DeleteBan, EditBan, NewBan
  7. from .views.admin.datadownloads import DataDownloadsList, RequestDataDownloads
  8. from .views.admin.ranks import (
  9. DefaultRank, DeleteRank, EditRank, MoveDownRank, MoveUpRank, NewRank, RanksList, RankUsers)
  10. from .views.admin.users import (
  11. DeleteAccountStep, DeletePostsStep, DeleteThreadsStep, EditUser, NewUser, UsersList)
  12. djadmin.site.register(model_or_iterable=get_user_model(), admin_class=UserAdminModel)
  13. class MisagoAdminExtension(object):
  14. def register_urlpatterns(self, urlpatterns):
  15. # Users section
  16. urlpatterns.namespace(r'^users/', 'users')
  17. # Accounts
  18. urlpatterns.namespace(r'^accounts/', 'accounts', 'users')
  19. urlpatterns.patterns(
  20. 'users:accounts',
  21. url(r'^$', UsersList.as_view(), name='index'),
  22. url(r'^(?P<page>\d+)/$', UsersList.as_view(), name='index'),
  23. url(r'^new/$', NewUser.as_view(), name='new'),
  24. url(r'^edit/(?P<pk>\d+)/$', EditUser.as_view(), name='edit'),
  25. url(
  26. r'^delete-threads/(?P<pk>\d+)/$',
  27. DeleteThreadsStep.as_view(),
  28. name='delete-threads'
  29. ),
  30. url(r'^delete-posts/(?P<pk>\d+)/$', DeletePostsStep.as_view(), name='delete-posts'),
  31. url(
  32. r'^delete-account/(?P<pk>\d+)/$',
  33. DeleteAccountStep.as_view(),
  34. name='delete-account'
  35. ),
  36. )
  37. # Ranks
  38. urlpatterns.namespace(r'^ranks/', 'ranks', 'users')
  39. urlpatterns.patterns(
  40. 'users:ranks',
  41. url(r'^$', RanksList.as_view(), name='index'),
  42. url(r'^new/$', NewRank.as_view(), name='new'),
  43. url(r'^edit/(?P<pk>\d+)/$', EditRank.as_view(), name='edit'),
  44. url(r'^default/(?P<pk>\d+)/$', DefaultRank.as_view(), name='default'),
  45. url(r'^move/down/(?P<pk>\d+)/$', MoveDownRank.as_view(), name='down'),
  46. url(r'^move/up/(?P<pk>\d+)/$', MoveUpRank.as_view(), name='up'),
  47. url(r'^users/(?P<pk>\d+)/$', RankUsers.as_view(), name='users'),
  48. url(r'^delete/(?P<pk>\d+)/$', DeleteRank.as_view(), name='delete'),
  49. )
  50. # Bans
  51. urlpatterns.namespace(r'^bans/', 'bans', 'users')
  52. urlpatterns.patterns(
  53. 'users:bans',
  54. url(r'^$', BansList.as_view(), name='index'),
  55. url(r'^(?P<page>\d+)/$', BansList.as_view(), name='index'),
  56. url(r'^new/$', NewBan.as_view(), name='new'),
  57. url(r'^edit/(?P<pk>\d+)/$', EditBan.as_view(), name='edit'),
  58. url(r'^delete/(?P<pk>\d+)/$', DeleteBan.as_view(), name='delete'),
  59. )
  60. # Data Downloads
  61. urlpatterns.namespace(r'^data-downloads/', 'data-downloads', 'users')
  62. urlpatterns.patterns(
  63. 'users:data-downloads',
  64. url(r'^$', DataDownloadsList.as_view(), name='index'),
  65. url(r'^(?P<page>\d+)/$', DataDownloadsList.as_view(), name='index'),
  66. url(r'^request/$', RequestDataDownloads.as_view(), name='request'),
  67. )
  68. def register_navigation_nodes(self, site):
  69. site.add_node(
  70. name=_("Users"),
  71. icon='fa fa-users',
  72. parent='misago:admin',
  73. after='misago:admin:index',
  74. namespace='misago:admin:users',
  75. link='misago:admin:users:accounts:index',
  76. )
  77. site.add_node(
  78. name=_("User Accounts"),
  79. icon='fa fa-users',
  80. parent='misago:admin:users',
  81. namespace='misago:admin:users:accounts',
  82. link='misago:admin:users:accounts:index',
  83. )
  84. site.add_node(
  85. name=_("Ranks"),
  86. icon='fa fa-graduation-cap',
  87. parent='misago:admin:users',
  88. after='misago:admin:users:accounts:index',
  89. namespace='misago:admin:users:ranks',
  90. link='misago:admin:users:ranks:index',
  91. )
  92. site.add_node(
  93. name=_("Bans"),
  94. icon='fa fa-lock',
  95. parent='misago:admin:users',
  96. after='misago:admin:users:ranks:index',
  97. namespace='misago:admin:users:bans',
  98. link='misago:admin:users:bans:index',
  99. )
  100. site.add_node(
  101. name=_("Data downloads"),
  102. icon='fa fa-download',
  103. parent='misago:admin:users',
  104. after='misago:admin:users:bans:index',
  105. namespace='misago:admin:users:data-downloads',
  106. link='misago:admin:users:data-downloads:index',
  107. )