apps.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. from django.apps import AppConfig
  2. from django.utils.translation import ugettext_lazy as _
  3. from .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 . 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_cache['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 can_see_names_history(request, profile):
  41. if request.user.is_authenticated:
  42. is_account_owner = profile.pk == request.user.pk
  43. has_permission = request.user.acl_cache['can_see_users_name_history']
  44. return is_account_owner or has_permission
  45. else:
  46. return False
  47. def can_see_ban_details(request, profile):
  48. if request.user.is_authenticated:
  49. if request.user.acl_cache['can_see_ban_details']:
  50. from .bans import get_user_ban
  51. return bool(get_user_ban(profile))
  52. else:
  53. return False
  54. else:
  55. return False
  56. user_profile.add_section(
  57. link='misago:user-posts',
  58. name=_("Posts"),
  59. icon='message',
  60. component='posts',
  61. )
  62. user_profile.add_section(
  63. link='misago:user-threads',
  64. name=_("Threads"),
  65. icon='forum',
  66. component='threads',
  67. )
  68. user_profile.add_section(
  69. link='misago:user-followers',
  70. name=_("Followers"),
  71. icon='favorite',
  72. component='followers',
  73. )
  74. user_profile.add_section(
  75. link='misago:user-follows',
  76. name=_("Follows"),
  77. icon='favorite_border',
  78. component='follows',
  79. )
  80. user_profile.add_section(
  81. link='misago:username-history',
  82. name=_("Username history"),
  83. icon='card_membership',
  84. component='username-history',
  85. visible_if=can_see_names_history,
  86. )
  87. user_profile.add_section(
  88. link='misago:user-ban',
  89. name=_("Ban details"),
  90. icon='remove_circle_outline',
  91. component='ban-details',
  92. visible_if=can_see_ban_details,
  93. )