__init__.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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.bans import BansList, DeleteBan, EditBan, NewBan
  7. from .views.datadownloads import DataDownloadsList, RequestDataDownloads
  8. from .views.ranks import (
  9. DefaultRank,
  10. DeleteRank,
  11. EditRank,
  12. MoveDownRank,
  13. MoveUpRank,
  14. NewRank,
  15. RanksList,
  16. RankUsers,
  17. )
  18. from .views.settings import ChangeCaptchaSettingsView, ChangeUsersSettingsView
  19. from .views.users import EditUser, NewUser, UsersList
  20. djadmin.site.register(model_or_iterable=get_user_model(), admin_class=UserAdminModel)
  21. class MisagoAdminExtension:
  22. def register_urlpatterns(self, urlpatterns):
  23. # Users section
  24. urlpatterns.namespace(r"^users/", "users")
  25. # Accounts
  26. urlpatterns.patterns(
  27. "users",
  28. url(r"^$", UsersList.as_view(), name="index"),
  29. url(r"^(?P<page>\d+)/$", UsersList.as_view(), name="index"),
  30. url(r"^new/$", NewUser.as_view(), name="new"),
  31. url(r"^edit/(?P<pk>\d+)/$", EditUser.as_view(), name="edit"),
  32. )
  33. # Bans
  34. urlpatterns.namespace(r"^bans/", "bans", "users")
  35. urlpatterns.patterns(
  36. "users:bans",
  37. url(r"^$", BansList.as_view(), name="index"),
  38. url(r"^(?P<page>\d+)/$", BansList.as_view(), name="index"),
  39. url(r"^new/$", NewBan.as_view(), name="new"),
  40. url(r"^edit/(?P<pk>\d+)/$", EditBan.as_view(), name="edit"),
  41. url(r"^delete/(?P<pk>\d+)/$", DeleteBan.as_view(), name="delete"),
  42. )
  43. # Data Downloads
  44. urlpatterns.namespace(r"^data-downloads/", "data-downloads", "users")
  45. urlpatterns.patterns(
  46. "users:data-downloads",
  47. url(r"^$", DataDownloadsList.as_view(), name="index"),
  48. url(r"^(?P<page>\d+)/$", DataDownloadsList.as_view(), name="index"),
  49. url(r"^request/$", RequestDataDownloads.as_view(), name="request"),
  50. )
  51. # Ranks
  52. urlpatterns.namespace(r"^ranks/", "ranks")
  53. urlpatterns.patterns(
  54. "ranks",
  55. url(r"^$", RanksList.as_view(), name="index"),
  56. url(r"^new/$", NewRank.as_view(), name="new"),
  57. url(r"^edit/(?P<pk>\d+)/$", EditRank.as_view(), name="edit"),
  58. url(r"^default/(?P<pk>\d+)/$", DefaultRank.as_view(), name="default"),
  59. url(r"^move/down/(?P<pk>\d+)/$", MoveDownRank.as_view(), name="down"),
  60. url(r"^move/up/(?P<pk>\d+)/$", MoveUpRank.as_view(), name="up"),
  61. url(r"^users/(?P<pk>\d+)/$", RankUsers.as_view(), name="users"),
  62. url(r"^delete/(?P<pk>\d+)/$", DeleteRank.as_view(), name="delete"),
  63. )
  64. # Settings
  65. urlpatterns.single_pattern(
  66. r"^users/", "users", "settings", ChangeUsersSettingsView.as_view()
  67. )
  68. urlpatterns.single_pattern(
  69. r"^captcha/", "captcha", "settings", ChangeCaptchaSettingsView.as_view()
  70. )
  71. def register_navigation_nodes(self, site):
  72. site.add_node(
  73. name=_("Users"), icon="fa fa-users", after="index", namespace="users"
  74. )
  75. site.add_node(name=_("Bans"), parent="users", namespace="bans")
  76. site.add_node(
  77. name=_("Data downloads"),
  78. parent="users",
  79. after="bans:index",
  80. namespace="data-downloads",
  81. )
  82. site.add_node(
  83. name=_("Ranks"),
  84. icon="fas fa-shield-alt",
  85. after="users:index",
  86. namespace="ranks",
  87. )
  88. site.add_node(
  89. name=_("Users"),
  90. description=_(
  91. "Customize user accounts default behaviour and features availability."
  92. ),
  93. parent="settings",
  94. namespace="users",
  95. after="general:index",
  96. )
  97. site.add_node(
  98. name=_("Captcha"),
  99. description=_(
  100. "Setup protection against automatic registrations on the site."
  101. ),
  102. parent="settings",
  103. namespace="captcha",
  104. after="users:index",
  105. )