Sin descripción

django_user_repository.py 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from commu.interfaces.user_repository import UserRepository
  2. from django.contrib.auth.models import User as DjangoUser
  3. class DjangoUserRepository(UserRepository):
  4. def add(self, user):
  5. # user: commu.entities.user.User
  6. # Map role to Django flags
  7. is_staff = user.role.value in ("admin", "user") if hasattr(user.role, "value") else user.role in ("admin", "user")
  8. is_superuser = user.role.value == "admin" if hasattr(user.role, "value") else user.role == "admin"
  9. obj = DjangoUser.objects.create_user(
  10. username=user.username,
  11. password=None, # You may set/generate a password as needed!
  12. is_staff=is_staff,
  13. is_superuser=is_superuser,
  14. )
  15. user.id = str(obj.id)
  16. return user
  17. def get(self, user_id):
  18. try:
  19. obj = DjangoUser.objects.get(id=user_id)
  20. from commu.entities.user import User, UserRole
  21. role = self._role_from_django(obj)
  22. u = User(
  23. username=obj.username,
  24. role=role,
  25. )
  26. u.id = str(obj.id)
  27. return u
  28. except DjangoUser.DoesNotExist:
  29. return None
  30. def find_by_username(self, username):
  31. try:
  32. obj = DjangoUser.objects.get(username=username)
  33. from commu.entities.user import User, UserRole
  34. role = self._role_from_django(obj)
  35. u = User(
  36. username=obj.username,
  37. role=role,
  38. )
  39. u.id = str(obj.id)
  40. return u
  41. except DjangoUser.DoesNotExist:
  42. return None
  43. def _role_from_django(self, user_obj):
  44. from commu.entities.user import UserRole
  45. if user_obj.is_superuser:
  46. return UserRole.ADMIN
  47. elif user_obj.is_staff:
  48. return UserRole.USER
  49. else:
  50. return UserRole.GUEST