apps.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from django.apps import AppConfig
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.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_DELETE_OWN_ACCOUNT:
  40. usercp.add_section(
  41. link='misago:usercp-delete-account',
  42. name=_("Delete account"),
  43. component='delete-account',
  44. icon='cancel',
  45. )
  46. def register_default_users_list_pages(self):
  47. users_list.add_section(
  48. link='misago:users-active-posters',
  49. component='active-posters',
  50. name=_("Active poster")
  51. )
  52. def register_default_user_profile_pages(self):
  53. def can_see_names_history(request, profile):
  54. if request.user.is_authenticated:
  55. is_account_owner = profile.pk == request.user.pk
  56. has_permission = request.user.acl_cache['can_see_users_name_history']
  57. return is_account_owner or has_permission
  58. else:
  59. return False
  60. def can_see_ban_details(request, profile):
  61. if request.user.is_authenticated:
  62. if request.user.acl_cache['can_see_ban_details']:
  63. from .bans import get_user_ban
  64. return bool(get_user_ban(profile))
  65. else:
  66. return False
  67. else:
  68. return False
  69. user_profile.add_section(
  70. link='misago:user-posts',
  71. name=_("Posts"),
  72. icon='message',
  73. component='posts',
  74. )
  75. user_profile.add_section(
  76. link='misago:user-threads',
  77. name=_("Threads"),
  78. icon='forum',
  79. component='threads',
  80. )
  81. user_profile.add_section(
  82. link='misago:user-followers',
  83. name=_("Followers"),
  84. icon='favorite',
  85. component='followers',
  86. )
  87. user_profile.add_section(
  88. link='misago:user-follows',
  89. name=_("Follows"),
  90. icon='favorite_border',
  91. component='follows',
  92. )
  93. user_profile.add_section(
  94. link='misago:user-details',
  95. name=_("Details"),
  96. icon='person_outline',
  97. component='details',
  98. )
  99. user_profile.add_section(
  100. link='misago:username-history',
  101. name=_("Username history"),
  102. icon='card_membership',
  103. component='username-history',
  104. visible_if=can_see_names_history,
  105. )
  106. user_profile.add_section(
  107. link='misago:user-ban',
  108. name=_("Ban details"),
  109. icon='remove_circle_outline',
  110. component='ban-details',
  111. visible_if=can_see_ban_details,
  112. )