__init__.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from django.urls import path
  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.users import EditUser, NewUser, UsersList
  19. djadmin.site.register(model_or_iterable=get_user_model(), admin_class=UserAdminModel)
  20. class MisagoAdminExtension:
  21. def register_urlpatterns(self, urlpatterns):
  22. # Users section
  23. urlpatterns.namespace("users/", "users")
  24. # Accounts
  25. urlpatterns.patterns(
  26. "users",
  27. path("", UsersList.as_view(), name="index"),
  28. path("<int:page>/", UsersList.as_view(), name="index"),
  29. path("new/", NewUser.as_view(), name="new"),
  30. path("edit/<int:pk>/", EditUser.as_view(), name="edit"),
  31. )
  32. # Bans
  33. urlpatterns.namespace("bans/", "bans", "users")
  34. urlpatterns.patterns(
  35. "users:bans",
  36. path("", BansList.as_view(), name="index"),
  37. path("<int:page>/", BansList.as_view(), name="index"),
  38. path("new/", NewBan.as_view(), name="new"),
  39. path("edit/<int:pk>/", EditBan.as_view(), name="edit"),
  40. path("delete/<int:pk>/", DeleteBan.as_view(), name="delete"),
  41. )
  42. # Data Downloads
  43. urlpatterns.namespace("data-downloads/", "data-downloads", "users")
  44. urlpatterns.patterns(
  45. "users:data-downloads",
  46. path("", DataDownloadsList.as_view(), name="index"),
  47. path("<int:page>/", DataDownloadsList.as_view(), name="index"),
  48. path("request/", RequestDataDownloads.as_view(), name="request"),
  49. )
  50. # Ranks
  51. urlpatterns.namespace("ranks/", "ranks")
  52. urlpatterns.patterns(
  53. "ranks",
  54. path("", RanksList.as_view(), name="index"),
  55. path("new/", NewRank.as_view(), name="new"),
  56. path("edit/<int:pk>/", EditRank.as_view(), name="edit"),
  57. path("default/<int:pk>/", DefaultRank.as_view(), name="default"),
  58. path("move/down/<int:pk>/", MoveDownRank.as_view(), name="down"),
  59. path("move/up/<int:pk>/", MoveUpRank.as_view(), name="up"),
  60. path("users/<int:pk>/", RankUsers.as_view(), name="users"),
  61. path("delete/<int:pk>/", DeleteRank.as_view(), name="delete"),
  62. )
  63. def register_navigation_nodes(self, site):
  64. site.add_node(
  65. name=_("Users"), icon="fa fa-users", after="index", namespace="users"
  66. )
  67. site.add_node(name=_("Bans"), parent="users", namespace="bans")
  68. site.add_node(
  69. name=_("Data downloads"),
  70. parent="users",
  71. after="bans:index",
  72. namespace="data-downloads",
  73. )
  74. site.add_node(
  75. name=_("Ranks"),
  76. icon="fas fa-shield-alt",
  77. after="users:index",
  78. namespace="ranks",
  79. )