apps.py 4.3 KB

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