from django.conf.urls import url from django.contrib import admin as djadmin from django.contrib.auth import get_user_model from django.utils.translation import gettext_lazy as _ from .djangoadmin import UserAdminModel from .views.bans import BansList, DeleteBan, EditBan, NewBan from .views.datadownloads import DataDownloadsList, RequestDataDownloads from .views.ranks import ( DefaultRank, DeleteRank, EditRank, MoveDownRank, MoveUpRank, NewRank, RanksList, RankUsers, ) from .views.settings import ChangeCaptchaSettingsView, ChangeUsersSettingsView from .views.users import EditUser, NewUser, UsersList djadmin.site.register(model_or_iterable=get_user_model(), admin_class=UserAdminModel) class MisagoAdminExtension: def register_urlpatterns(self, urlpatterns): # Users section urlpatterns.namespace(r"^users/", "users") # Accounts urlpatterns.patterns( "users", url(r"^$", UsersList.as_view(), name="index"), url(r"^(?P\d+)/$", UsersList.as_view(), name="index"), url(r"^new/$", NewUser.as_view(), name="new"), url(r"^edit/(?P\d+)/$", EditUser.as_view(), name="edit"), ) # Bans urlpatterns.namespace(r"^bans/", "bans", "users") urlpatterns.patterns( "users:bans", url(r"^$", BansList.as_view(), name="index"), url(r"^(?P\d+)/$", BansList.as_view(), name="index"), url(r"^new/$", NewBan.as_view(), name="new"), url(r"^edit/(?P\d+)/$", EditBan.as_view(), name="edit"), url(r"^delete/(?P\d+)/$", DeleteBan.as_view(), name="delete"), ) # Data Downloads urlpatterns.namespace(r"^data-downloads/", "data-downloads", "users") urlpatterns.patterns( "users:data-downloads", url(r"^$", DataDownloadsList.as_view(), name="index"), url(r"^(?P\d+)/$", DataDownloadsList.as_view(), name="index"), url(r"^request/$", RequestDataDownloads.as_view(), name="request"), ) # Ranks urlpatterns.namespace(r"^ranks/", "ranks") urlpatterns.patterns( "ranks", url(r"^$", RanksList.as_view(), name="index"), url(r"^new/$", NewRank.as_view(), name="new"), url(r"^edit/(?P\d+)/$", EditRank.as_view(), name="edit"), url(r"^default/(?P\d+)/$", DefaultRank.as_view(), name="default"), url(r"^move/down/(?P\d+)/$", MoveDownRank.as_view(), name="down"), url(r"^move/up/(?P\d+)/$", MoveUpRank.as_view(), name="up"), url(r"^users/(?P\d+)/$", RankUsers.as_view(), name="users"), url(r"^delete/(?P\d+)/$", DeleteRank.as_view(), name="delete"), ) # Settings urlpatterns.single_pattern( r"^users/", "users", "settings", ChangeUsersSettingsView.as_view() ) urlpatterns.single_pattern( r"^captcha/", "captcha", "settings", ChangeCaptchaSettingsView.as_view() ) def register_navigation_nodes(self, site): site.add_node( name=_("Users"), icon="fa fa-users", after="index", namespace="users" ) site.add_node(name=_("Bans"), parent="users", namespace="bans") site.add_node( name=_("Data downloads"), parent="users", after="bans:index", namespace="data-downloads", ) site.add_node( name=_("Ranks"), icon="fas fa-shield-alt", after="users:index", namespace="ranks", ) site.add_node( name=_("Users"), description=_( "Customize user accounts default behaviour and features availability." ), parent="settings", namespace="users", after="general:index", ) site.add_node( name=_("Captcha"), description=_( "Setup protection against automatic registrations on the site." ), parent="settings", namespace="captcha", after="users:index", )