from commu.interfaces.user_repository import UserRepository from django.contrib.auth.models import User as DjangoUser class DjangoUserRepository(UserRepository): def add(self, user): # user: commu.entities.user.User # Map role to Django flags is_staff = user.role.value in ("admin", "user") if hasattr(user.role, "value") else user.role in ("admin", "user") is_superuser = user.role.value == "admin" if hasattr(user.role, "value") else user.role == "admin" obj = DjangoUser.objects.create_user( username=user.username, password=None, # You may set/generate a password as needed! is_staff=is_staff, is_superuser=is_superuser, ) user.id = str(obj.id) return user def get(self, user_id): try: obj = DjangoUser.objects.get(id=user_id) from commu.entities.user import User, UserRole role = self._role_from_django(obj) u = User( username=obj.username, role=role, ) u.id = str(obj.id) return u except DjangoUser.DoesNotExist: return None def find_by_username(self, username): try: obj = DjangoUser.objects.get(username=username) from commu.entities.user import User, UserRole role = self._role_from_django(obj) u = User( username=obj.username, role=role, ) u.id = str(obj.id) return u except DjangoUser.DoesNotExist: return None def _role_from_django(self, user_obj): from commu.entities.user import UserRole if user_obj.is_superuser: return UserRole.ADMIN elif user_obj.is_staff: return UserRole.USER else: return UserRole.GUEST