apps.py 4.1 KB

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