users.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import floppyforms as forms
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago.acl.builder import BaseACL
  4. from misago.acl.exceptions import ACLError404
  5. from misago.forms import YesNoSwitch
  6. def make_form(request, role, form):
  7. form.base_fields['can_search_users'] = forms.BooleanField(label=_("Can search user profiles"),
  8. widget=YesNoSwitch, initial=False, required=False)
  9. form.base_fields['can_see_users_emails'] = forms.BooleanField(label=_("Can see members e-mail's"),
  10. widget=YesNoSwitch, initial=False, required=False)
  11. form.base_fields['can_see_users_trails'] = forms.BooleanField(label=_("Can see members ip's and user-agents"),
  12. widget=YesNoSwitch, initial=False, required=False)
  13. form.base_fields['can_see_hidden_users'] = forms.BooleanField(label=_("Can see mebers that hide their presence"),
  14. widget=YesNoSwitch, initial=False, required=False)
  15. form.fieldsets.append((
  16. _("User Profiles"),
  17. ('can_search_users', 'can_see_users_emails', 'can_see_users_trails', 'can_see_hidden_users')
  18. ))
  19. class UsersACL(BaseACL):
  20. def can_search_users(self):
  21. return self.acl['can_search_users']
  22. def can_see_users_emails(self):
  23. return self.acl['can_see_users_emails']
  24. def can_see_users_trails(self):
  25. return self.acl['can_see_users_trails']
  26. def can_see_hidden_users(self):
  27. return self.acl['can_see_hidden_users']
  28. def allow_details_view(self):
  29. if not self.acl['can_see_users_trails']:
  30. raise ACLError404()
  31. def build(acl, roles):
  32. acl.users = UsersACL()
  33. acl.users.acl['can_search_users'] = False
  34. acl.users.acl['can_see_users_emails'] = False
  35. acl.users.acl['can_see_users_trails'] = False
  36. acl.users.acl['can_see_hidden_users'] = False
  37. for role in roles:
  38. try:
  39. if 'can_search_users' in role and role['can_search_users']:
  40. acl.users.acl['can_search_users'] = True
  41. if 'can_see_users_emails' in role and role['can_see_users_emails']:
  42. acl.users.acl['can_see_users_emails'] = True
  43. if 'can_see_users_trails' in role and role['can_see_users_trails']:
  44. acl.users.acl['can_see_users_trails'] = True
  45. if 'can_see_hidden_users' in role and role['can_see_hidden_users']:
  46. acl.users.acl['can_see_hidden_users'] = True
  47. except KeyError:
  48. pass