admin.py 4.6 KB

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