def __create_meeting(self, *args, **kwargs): creator_id = kwargs.get('creator_id', 0) attendees = kwargs.pop('attendees', []) user_service = UserFormService() if creator_id: creator = user_service.get_model(_id=creator_id) attendees_creator = CreateMeetingAttendees() if creator: kwargs[ 'associate_users'] = attendees_creator.create_associated_users( creator_id, attendees) new_meeting = super().create_new_model(*args, **kwargs) self.commit() return new_meeting else: raise InvalidUserIdException()
class AuthenticatedDecorator(BaseDecorator, ABC): def __init__(self): super().__init__() self._auth_user = None self.__user_service = UserFormService() def get_authenticated_user(self) -> User: """ Get the user that uses this service. Retrieve data from Resource's authentication :return: User, raise Exception if self.__auth_user is None """ if self._auth_user: return self._auth_user raise UnauthenticatedServiceLoginException() def set_authenticated_user(self, auth_user_id: dict): self._auth_user = self.__user_service.get_model(_id=auth_user_id) def _prepare_auth_service(self): """ If decorator's delegated service is an instance of AuthenticatedDecorator, set auth_user for that service. :return: """ service = self._get_service() if isinstance(service, AuthenticatedDecorator): service._auth_user = self._auth_user self.set_service(service) def update_model(self, *args, **kwargs) -> bool: self._prepare_auth_service() return super(AuthenticatedDecorator, self).update_model(*args, **kwargs) def create_new_model(self, *args, **kwargs) -> Model: self._prepare_auth_service() return super(AuthenticatedDecorator, self).create_new_model(*args, **kwargs) def delete_model(self, *args, **kwargs) -> bool: self._prepare_auth_service() return super(AuthenticatedDecorator, self).delete_model(*args, **kwargs)