apps.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. from django.apps import AppConfig
  2. from django.utils.translation import gettext_lazy as _
  3. from ..conf import settings
  4. from .pages import user_profile, usercp, users_list
  5. class MisagoUsersConfig(AppConfig):
  6. name = "misago.users"
  7. label = "misago_users"
  8. verbose_name = "Misago Auth"
  9. def ready(self):
  10. from . import signals as _
  11. from .admin import tasks # pylint: disable=unused-import
  12. self.register_default_usercp_pages()
  13. self.register_default_users_list_pages()
  14. self.register_default_user_profile_pages()
  15. def register_default_usercp_pages(self):
  16. usercp.add_section(
  17. link="misago:usercp-change-forum-options",
  18. name=_("Forum options"),
  19. component="forum-options",
  20. icon="settings",
  21. )
  22. usercp.add_section(
  23. link="misago:usercp-edit-details",
  24. name=_("Edit details"),
  25. component="edit-details",
  26. icon="person_outline",
  27. )
  28. usercp.add_section(
  29. link="misago:usercp-change-username",
  30. name=_("Change username"),
  31. component="change-username",
  32. icon="card_membership",
  33. )
  34. usercp.add_section(
  35. link="misago:usercp-change-email-password",
  36. name=_("Change email or password"),
  37. component="sign-in-credentials",
  38. icon="vpn_key",
  39. )
  40. if settings.MISAGO_ENABLE_DOWNLOAD_OWN_DATA:
  41. usercp.add_section(
  42. link="misago:usercp-download-data",
  43. name=_("Download data"),
  44. component="download-data",
  45. icon="save_alt",
  46. )
  47. if settings.MISAGO_ENABLE_DELETE_OWN_ACCOUNT:
  48. usercp.add_section(
  49. link="misago:usercp-delete-account",
  50. name=_("Delete account"),
  51. component="delete-account",
  52. icon="cancel",
  53. )
  54. def register_default_users_list_pages(self):
  55. users_list.add_section(
  56. link="misago:users-active-posters",
  57. component="active-posters",
  58. name=_("Active poster"),
  59. )
  60. def register_default_user_profile_pages(self):
  61. def can_see_names_history(request, profile):
  62. if request.user.is_authenticated:
  63. is_account_owner = profile.pk == request.user.pk
  64. has_permission = request.user_acl["can_see_users_name_history"]
  65. return is_account_owner or has_permission
  66. return False
  67. def can_see_ban_details(request, profile):
  68. if request.user.is_authenticated:
  69. if request.user_acl["can_see_ban_details"]:
  70. from .bans import get_user_ban
  71. return bool(get_user_ban(profile, request.cache_versions))
  72. return False
  73. return False
  74. user_profile.add_section(
  75. link="misago:user-posts", name=_("Posts"), icon="message", component="posts"
  76. )
  77. user_profile.add_section(
  78. link="misago:user-threads",
  79. name=_("Threads"),
  80. icon="forum",
  81. component="threads",
  82. )
  83. user_profile.add_section(
  84. link="misago:user-followers",
  85. name=_("Followers"),
  86. icon="favorite",
  87. component="followers",
  88. )
  89. user_profile.add_section(
  90. link="misago:user-follows",
  91. name=_("Follows"),
  92. icon="favorite_border",
  93. component="follows",
  94. )
  95. user_profile.add_section(
  96. link="misago:user-details",
  97. name=_("Details"),
  98. icon="person_outline",
  99. component="details",
  100. )
  101. user_profile.add_section(
  102. link="misago:username-history",
  103. name=_("Username history"),
  104. icon="card_membership",
  105. component="username-history",
  106. visible_if=can_see_names_history,
  107. )
  108. user_profile.add_section(
  109. link="misago:user-ban",
  110. name=_("Ban details"),
  111. icon="remove_circle_outline",
  112. component="ban-details",
  113. visible_if=can_see_ban_details,
  114. )