def get_objects(self) -> t.List[t.Type[BaseModel]]: order_by_field = self.request.args.get('order_by') if order_by_field: model_field = getattr(self.model_class, order_by_field.replace('-', '')) model_field_with_order = (model_field.desc() if order_by_field.startswith('-') else model_field.asc()) return session.query( self.model_class).order_by(model_field_with_order) return session.query(self.model_class).all()
def execute(self, prev: int, limit: int = 10): query = session.query(Post) if prev: query = query.filter(Post.id < prev) return query.order_by(Post.id.desc()).limit(limit).all()
def execute(self, user_id: int, post_id: int) -> Union[Post, NoReturn]: post = session.query(Post).filter( Post.id == post_id, Post.user_id == user_id, ).first() return post
def _pay_imitation(self, server_id: int) -> None: time.sleep(random.randint(5, 15)) obj = session.query(Server).get(server_id) obj.status = ServerStatus.ACTIVE session.commit() current_app.logger.info(f'Сервер с идентификатором {self.obj.id} стал активен')
def delete_user(self, user_id: int) -> None: user = session.query(User).get(user_id) if not user: raise CustomException(error='user does not exist', code=500) user.delete()
def from_id(self, obj_id: int) -> 'Service': obj = session.query(self.model_class).get(obj_id) if not obj: raise ValidationError('Input data is incorrect.') self.obj = obj return self
def email_exists(email): if type(email) is not str: return False user = session.query(UserModel).filter(UserModel.email == email).first() if not user: return False else: return True
async def is_admin(self, user_id: int) -> bool: user = session.query(User).get(user_id) if not user: return False if user.is_admin is False: return False return True
async def execute(self, limit: int, prev: Optional[int]) -> List[User]: query = session.query(User) if prev: query = query.filter(User.id < prev) if limit > 10: limit = 10 return query.order_by(User.id.desc()).limit(limit).all()
def _is_exist(self, nickname: str = None, email: str = None) -> bool: query = session.query(User) if nickname: query = query.filter(User.nickname == nickname) if email: query = query.filter(User.email == email) return query.first() is not None
def get_user_list(self, prev: int = None, limit: int = None) -> List[User]: query = session.query(User) if prev: query = query.filter(User.id < prev) if limit: query = query.limit(limit) return query.order_by(User.id.desc()).all()
def get_user_by_email_or_nickname( self, email: str, nickname: str, ) -> Optional[User]: return session.query(User).filter( or_( User.email == email, User.nickname == nickname, ), ).first()
async def execute( self, email: str, password1: str, password2: str, nickname: str, ) -> Union[User, NoReturn]: if password1 != password2: raise CustomException(error='password does not match', code=400) if session.query(User).filter(User.email == email).first(): raise CustomException(error='duplicated email', code=400) if session.query(User).filter(User.nickname == nickname).first(): raise CustomException(error='duplicated nickname', code=400) user = User(email=email, password=password1, nickname=nickname) session.add(user) session.commit() return user
async def create_user(self, email: str, password1: str, password2: str, nickname: str) -> Union[User, NoReturn]: if password1 != password2: raise PasswordDoesNotMatchException if (session.query(User).filter( or_(User.email == email, User.nickname == nickname)).first()): raise DuplicateEmailOrNicknameException user = User(email=email, password=password1, nickname=nickname) session.add(user) return user
def execute(self, user_id: int, post_id: int) -> Union[bool, NoReturn]: post = session.query(Post).filter(Post.id == post_id).first() if post.user_id != user_id: raise CustomException('do not have permission', code=401) try: session.delete(post) session.commit() except IntegrityError as e: raise CustomException(str(e), code=500) return True
def update_user( self, user_id: int = None, password: str = None, email: str = None, nickname: str = None, ) -> Union[User, NoReturn]: user = session.query(User).get(user_id) if not user: raise CustomException(error='user does not exist', code=500) if password: user.password = password if email: user.email = email if nickname: user.nickname = nickname session.add(user) return user
def execute( self, user_id: int, post_id: int, caption: str, ) -> Union[Post, NoReturn]: post = session.query(Post).filter( Post.id == post_id, Post.user_id == user_id, ).first() if not post: raise CustomException('post not found', code=404) post.caption = caption try: session.add(post) session.commit() except IntegrityError as e: session.rollback() raise CustomException(str(e), code=500) return post
def get_object(self, row_id: int) -> t.Type[BaseModel]: return session.query(self.model_class).get(row_id)
def read(self): if hasattr(self, 'id') is True: self.user = session.query(UserModel).filter(UserModel.id == self.id).first() elif hasattr(self, 'email') is True: self.user = session.query(UserModel).filter(UserModel.email == self.email).first() return self.user
def read(self): if hasattr(self, 'id') is True and hasattr(self, 'landlord_id') is True: self.property = session.query(PropertyModel).filter( PropertyModel.id == self.id, PropertyModel.landlord_id == self.landlord_id).first() return self.property
def get_user_by_id(self, user_id: int) -> Optional[User]: return session.query(User).get(user_id)
def get(self): return session.query(PropertyModel).all()
def read(self, id): self.model = session.query(self.model).filter(self.model.id == id).first() return self.model