from django.apps import AppConfig from django.utils.translation import gettext_lazy as _ from misago.conf import settings from .pages import user_profile, usercp, users_list class MisagoUsersConfig(AppConfig): name = "misago.users" label = "misago_users" verbose_name = "Misago Auth" def ready(self): from . import signals as _ self.register_default_usercp_pages() self.register_default_users_list_pages() self.register_default_user_profile_pages() def register_default_usercp_pages(self): usercp.add_section( link="misago:usercp-change-forum-options", name=_("Forum options"), component="forum-options", icon="settings", ) usercp.add_section( link="misago:usercp-edit-details", name=_("Edit details"), component="edit-details", icon="person_outline", ) usercp.add_section( link="misago:usercp-change-username", name=_("Change username"), component="change-username", icon="card_membership", ) usercp.add_section( link="misago:usercp-change-email-password", name=_("Change email or password"), component="sign-in-credentials", icon="vpn_key", ) if settings.MISAGO_ENABLE_DOWNLOAD_OWN_DATA: usercp.add_section( link="misago:usercp-download-data", name=_("Download data"), component="download-data", icon="save_alt", ) if settings.MISAGO_ENABLE_DELETE_OWN_ACCOUNT: usercp.add_section( link="misago:usercp-delete-account", name=_("Delete account"), component="delete-account", icon="cancel", ) def register_default_users_list_pages(self): users_list.add_section( link="misago:users-active-posters", component="active-posters", name=_("Active poster"), ) def register_default_user_profile_pages(self): def can_see_names_history(request, profile): if request.user.is_authenticated: is_account_owner = profile.pk == request.user.pk has_permission = request.user_acl["can_see_users_name_history"] return is_account_owner or has_permission else: return False def can_see_ban_details(request, profile): if request.user.is_authenticated: if request.user_acl["can_see_ban_details"]: from .bans import get_user_ban return bool(get_user_ban(profile, request.cache_versions)) else: return False else: return False user_profile.add_section( link="misago:user-posts", name=_("Posts"), icon="message", component="posts" ) user_profile.add_section( link="misago:user-threads", name=_("Threads"), icon="forum", component="threads", ) user_profile.add_section( link="misago:user-followers", name=_("Followers"), icon="favorite", component="followers", ) user_profile.add_section( link="misago:user-follows", name=_("Follows"), icon="favorite_border", component="follows", ) user_profile.add_section( link="misago:user-details", name=_("Details"), icon="person_outline", component="details", ) user_profile.add_section( link="misago:username-history", name=_("Username history"), icon="card_membership", component="username-history", visible_if=can_see_names_history, ) user_profile.add_section( link="misago:user-ban", name=_("Ban details"), icon="remove_circle_outline", component="ban-details", visible_if=can_see_ban_details, )