Esempio n. 1
0
    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()
Esempio n. 2
0
    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()
Esempio n. 3
0
    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
Esempio n. 4
0
    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} стал активен')
Esempio n. 5
0
    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()
Esempio n. 6
0
    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
Esempio n. 7
0
 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
Esempio n. 8
0
    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()
Esempio n. 10
0
    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
Esempio n. 11
0
    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()
Esempio n. 12
0
 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
Esempio n. 14
0
    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
Esempio n. 15
0
    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
Esempio n. 16
0
    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
Esempio n. 17
0
    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
Esempio n. 18
0
 def get_object(self, row_id: int) -> t.Type[BaseModel]:
     return session.query(self.model_class).get(row_id)
Esempio n. 19
0
 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
Esempio n. 20
0
 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
Esempio n. 21
0
 def get_user_by_id(self, user_id: int) -> Optional[User]:
     return session.query(User).get(user_id)
Esempio n. 22
0
 def get(self):
     return session.query(PropertyModel).all()
Esempio n. 23
0
 def read(self, id):
     self.model = session.query(self.model).filter(self.model.id == id).first()
     return self.model