admin.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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(object):
  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=_("User Accounts"),
  97. icon="fa fa-users",
  98. parent="misago:admin:users",
  99. namespace="misago:admin:users:accounts",
  100. link="misago:admin:users:accounts:index",
  101. )
  102. site.add_node(
  103. name=_("Ranks"),
  104. icon="fa fa-graduation-cap",
  105. parent="misago:admin:users",
  106. after="misago:admin:users:accounts:index",
  107. namespace="misago:admin:users:ranks",
  108. link="misago:admin:users:ranks:index",
  109. )
  110. site.add_node(
  111. name=_("Bans"),
  112. icon="fa fa-lock",
  113. parent="misago:admin:users",
  114. after="misago:admin:users:ranks:index",
  115. namespace="misago:admin:users:bans",
  116. link="misago:admin:users:bans:index",
  117. )
  118. site.add_node(
  119. name=_("Data downloads"),
  120. icon="fa fa-download",
  121. parent="misago:admin:users",
  122. after="misago:admin:users:bans:index",
  123. namespace="misago:admin:users:data-downloads",
  124. link="misago:admin:users:data-downloads:index",
  125. )