permissions.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. __author__ = 'marcos.medeiros'
  2. from rapid import wrappers
  3. def default_read(model):
  4. m = wrappers.ModelData(model)
  5. def perm(request):
  6. if request.user.is_authenticated() and request.user.is_staff():
  7. return m.default_manager()
  8. return None
  9. return perm
  10. def default_write(model):
  11. def perm(request):
  12. return None
  13. return perm
  14. def to_profile(model, profile):
  15. m = wrappers.ModelData(model)
  16. if hasattr(profile, "__iter__"):
  17. def perm(request):
  18. if not request.user.is_authenticated():
  19. return None
  20. up = [p.pk for p in request.user.profile_set]
  21. for p in up:
  22. if p in profile:
  23. return m.default_manager()
  24. return None
  25. return perm
  26. def perm(request):
  27. if not request.user.is_authenticated():
  28. return None
  29. up = [p.pk for p in request.user.profile_set]
  30. if profile in up:
  31. return m.default_manager()
  32. return None
  33. return perm
  34. def to_staff(model):
  35. m = wrappers.ModelData(model)
  36. def perm(request):
  37. if request.user.is_authenticated() and request.user.is_staff():
  38. return m.default_manager()
  39. return None
  40. return perm
  41. def to_all(model):
  42. m = wrappers.ModelData(model)
  43. def perm(request):
  44. return m.default_manager()
  45. return perm
  46. def to_admins(model):
  47. m = wrappers.ModelData(model)
  48. def perm(request):
  49. if request.user.is_authenticated() and request.user.is_admin():
  50. return m.default_manager()
  51. return None
  52. return perm