apps.py 4.1 KB

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