diff --git a/modules/batch_users/batch_users.py b/modules/batch_users/batch_users.py index 6e94e0c..a8051d0 100644 --- a/modules/batch_users/batch_users.py +++ b/modules/batch_users/batch_users.py @@ -6,26 +6,31 @@ from datetime import datetime class DemographicInfo(BaseModel): - phone: str - passport_id: Optional[str] = None - country: Optional[str] = None + phone: str + passport_id: Optional[str] = None + country: Optional[str] = None + +class Entity(BaseModel): + id: str + role: str class UserDTO(BaseModel): - id: uuid.UUID = Field(default_factory=uuid.uuid4) - email: str - name: str - type: str - passport_id: str - passwordHash: str - passwordSalt: str - groupName: Optional[str] = None - corporate: Optional[str] = None - studentID: Optional[str] = None - expiryDate: Optional[str] = None - demographicInformation: Optional[DemographicInfo] = None + id: uuid.UUID = Field(default_factory=uuid.uuid4) + email: str + name: str + type: str + passport_id: str + passwordHash: str + passwordSalt: str + groupName: Optional[str] = None + corporate: Optional[str] = None + studentID: Optional[str] = None + expiryDate: Optional[str] = None + demographicInformation: Optional[DemographicInfo] = None + entities: list[Entity] class BatchUsersDTO(BaseModel): - makerID: str - users: list[UserDTO] + makerID: str + users: list[UserDTO] diff --git a/modules/batch_users/service.py b/modules/batch_users/service.py index 18155cf..12eaa7e 100644 --- a/modules/batch_users/service.py +++ b/modules/batch_users/service.py @@ -128,12 +128,6 @@ class BatchUsers: self._insert_new_user(user) code = self._create_code(user, maker_id) - if user.type == "corporate": - self._set_corporate_default_groups(user) - - if user.corporate: - self._assign_corporate_to_user(user, code) - if user.groupName and len(user.groupName.strip()) > 0: self._assign_user_to_group_by_name(user, maker_id) @@ -153,7 +147,8 @@ class BatchUsers: 'isFirstLogin': False, 'isVerified': True, 'registrationDate': datetime.now(), - 'subscriptionExpirationDate': user.expiryDate + 'subscriptionExpirationDate': user.expiryDate, + 'entities': user.entities } self._db.users.insert_one(new_user) @@ -173,81 +168,13 @@ class BatchUsers: }) return code - def _set_corporate_default_groups(self, user: UserDTO): - user_id = str(user.id) - default_groups = [ - { - 'admin': user_id, - 'id': str(uuid.uuid4()), - 'name': "Teachers", - 'participants': [], - 'disableEditing': True, - }, - { - 'admin': user_id, - 'id': str(uuid.uuid4()), - 'name': "Students", - 'participants': [], - 'disableEditing': True, - }, - { - 'admin': user_id, - 'id': str(uuid.uuid4()), - 'name': "Corporate", - 'participants': [], - 'disableEditing': True, - } - ] - for group in default_groups: - self._db.groups.insert_one(group) - - def _assign_corporate_to_user(self, user: UserDTO, code: str): - user_id = str(user.id) - corporate_user = self._db.users.find_one( - {"email": user.corporate} - ) - if corporate_user: - self._db.codes.update_one( - {"id": code}, - {"$set": {"creator": corporate_user.id}}, - upsert=True - ) - group_type = "Students" if user.type == "student" else "Teachers" - - group = self._db.groups.find_one( - { - "admin": corporate_user.id, - "name": group_type - } - ) - - if group: - participants = group['participants'] - if user_id not in participants: - participants.append(user_id) - self._db.groups.update_one( - {"id": group.id}, - {"$set": {"participants": participants}} - ) - - else: - group = { - 'admin': corporate_user.id, - 'id': str(uuid.uuid4()), - 'name': group_type, - 'participants': [user_id], - 'disableEditing': True, - } - - self._db.groups.insert_one(group) - def _assign_user_to_group_by_name(self, user: UserDTO, maker_id: str): user_id = str(user.id) group = self._db.groups.find_one( { "admin": maker_id, - "name": user.group_name.strip() + "name": user.groupName.strip() } )