apps.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. from django.apps import AppConfig
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.users.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 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. )
  22. usercp.add_section(
  23. link='misago:usercp-change-username',
  24. name=_('Change username'),
  25. component='change-username',
  26. icon='card_membership',
  27. )
  28. usercp.add_section(
  29. link='misago:usercp-change-email-password',
  30. name=_('Change email or password'),
  31. component='sign-in-credentials',
  32. icon='vpn_key',
  33. )
  34. def register_default_users_list_pages(self):
  35. users_list.add_section(
  36. link='misago:users-active-posters',
  37. component='active-posters',
  38. name=_('Active posters'))
  39. def register_default_user_profile_pages(self):
  40. def posts_badge(request, profile):
  41. return {
  42. 'value': profile.posts,
  43. 'attr': 'posts',
  44. }
  45. def threads_badge(request, profile):
  46. return {
  47. 'value': profile.threads,
  48. 'attr': 'threads',
  49. }
  50. def followers_badge(request, profile):
  51. return {
  52. 'value': profile.followers,
  53. 'attr': 'followers',
  54. }
  55. def following_badge(request, profile):
  56. return {
  57. 'value': profile.following,
  58. 'attr': 'following',
  59. }
  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. else:
  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 misago.users.bans import get_user_ban
  71. return bool(get_user_ban(profile))
  72. else:
  73. return False
  74. else:
  75. return False
  76. user_profile.add_section(
  77. link='misago:user-posts',
  78. name=_("Posts"),
  79. icon='message',
  80. component='posts',
  81. get_metadata=posts_badge,
  82. )
  83. user_profile.add_section(
  84. link='misago:user-threads',
  85. name=_("Threads"),
  86. icon='forum',
  87. component='threads',
  88. get_metadata=threads_badge,
  89. )
  90. user_profile.add_section(
  91. link='misago:user-followers',
  92. name=_("Followers"),
  93. icon='favorite',
  94. component='followers',
  95. get_metadata=followers_badge,
  96. )
  97. user_profile.add_section(
  98. link='misago:user-follows',
  99. name=_("Follows"),
  100. icon='favorite_border',
  101. component='follows',
  102. get_metadata=following_badge,
  103. )
  104. user_profile.add_section(
  105. link='misago:username-history',
  106. name=_("Username history"),
  107. icon='card_membership',
  108. component='username-history',
  109. visible_if=can_see_names_history,
  110. )
  111. user_profile.add_section(
  112. link='misago:user-ban',
  113. name=_("Ban details"),
  114. icon='remove_circle_outline',
  115. component='ban-details',
  116. visible_if=can_see_ban_details,
  117. )