apps.py 3.6 KB

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