apps.py 4.0 KB

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