apps.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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=_('Change forum options'),
  18. icon='fa fa-check-square-o')
  19. usercp.add_section(
  20. link='misago:usercp_change_avatar',
  21. name=_('Change avatar'),
  22. icon='fa fa-image')
  23. usercp.add_section(
  24. link='misago:usercp_edit_signature',
  25. name=_('Edit your signature'),
  26. icon='fa fa-pencil',
  27. visible_if=show_signature_cp)
  28. usercp.add_section(
  29. link='misago:usercp_change_username',
  30. name=_('Change username'),
  31. icon='fa fa-credit-card')
  32. usercp.add_section(
  33. link='misago:usercp_change_email_password',
  34. name=_('Change email or password'),
  35. icon='fa fa-ticket')
  36. def register_default_users_list_pages(self):
  37. def can_see_online_list(request):
  38. return request.user.acl['can_see_users_online_list']
  39. users_list.add_section(
  40. link='misago:users_active_posters',
  41. name=_('Active posters'))
  42. users_list.add_section(
  43. link='misago:users_online',
  44. name=_('Online'),
  45. visible_if=can_see_online_list)
  46. def register_default_user_profile_pages(self):
  47. def posts_badge(request, profile):
  48. return profile.posts
  49. def threads_badge(request, profile):
  50. return profile.threads
  51. def followers_badge(request, profile):
  52. return profile.followers
  53. def following_badge(request, profile):
  54. return profile.following
  55. def can_see_names_history(request, profile):
  56. if request.user.is_authenticated():
  57. is_account_owner = profile.pk == request.user.pk
  58. has_permission = request.user.acl['can_see_users_name_history']
  59. return is_account_owner or has_permission
  60. else:
  61. return False
  62. def can_see_warnings(request, profile):
  63. if request.user.is_authenticated():
  64. is_account_owner = profile.pk == request.user.pk
  65. user_acl = request.user.acl
  66. has_permission = user_acl['can_see_other_users_warnings']
  67. return is_account_owner or has_permission
  68. else:
  69. return False
  70. def can_see_ban_details(request, profile):
  71. if request.user.is_authenticated():
  72. if request.user.acl['can_see_ban_details']:
  73. from misago.users.bans import get_user_ban
  74. return bool(get_user_ban(profile))
  75. else:
  76. return False
  77. else:
  78. return False
  79. user_profile.add_section(
  80. link='misago:user_posts',
  81. name=_("Posts"),
  82. get_metadata=posts_badge)
  83. user_profile.add_section(
  84. link='misago:user_threads',
  85. name=_("Threads"),
  86. get_metadata=threads_badge)
  87. user_profile.add_section(
  88. link='misago:user_followers',
  89. name=_("Followers"),
  90. get_metadata=followers_badge)
  91. user_profile.add_section(
  92. link='misago:user_follows',
  93. name=_("Follows"),
  94. get_metadata=following_badge)
  95. user_profile.add_section(
  96. link='misago:user_name_history',
  97. name=_("Name history"),
  98. visible_if=can_see_names_history)
  99. user_profile.add_section(
  100. link='misago:user_warnings',
  101. name=_("Warnings"),
  102. visible_if=can_see_warnings)
  103. user_profile.add_section(
  104. link='misago:user_ban',
  105. name=_("Ban"),
  106. visible_if=can_see_ban_details)