testutils.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from hashlib import md5
  2. from time import time
  3. from misago.core import threadstore
  4. from misago.core.cache import cache
  5. from misago.acl.forms import get_permissions_forms
  6. from misago.acl.models import Role
  7. def fake_post_data(target, data_dict):
  8. """
  9. In order for form to don't fail submission, all permission fields need
  10. to receive values. This function populates data dict with default values
  11. for permissions, making form validation pass
  12. """
  13. for form in get_permissions_forms(target):
  14. for field in form:
  15. if field.value() == True:
  16. data_dict[field.html_name] = 1
  17. elif field.value() == False:
  18. data_dict[field.html_name] = 0
  19. else:
  20. data_dict[field.html_name] = field.value()
  21. return data_dict
  22. def override_acl(user, new_acl):
  23. """overrides user permissions with specified ones"""
  24. test_role = Role(name='Fake')
  25. test_role.permissions = new_acl
  26. test_role.save()
  27. user.rank.roles.clear()
  28. user.roles.clear()
  29. user.roles.add(test_role)
  30. user.acl_key = md5(unicode(time())).hexdigest()[:8]
  31. user.save()