コード例 #1
0
ファイル: user.py プロジェクト: 14Days/back_web
def change_password(user_id, this_user, new_password, old_password):
    """
    修改密码
    :param user_id:
    :param this_user:
    :param new_password:
    :param old_password:
    :return:
    """
    user = User.query. \
        filter(User.id == this_user). \
        filter(User.delete_at.is_(None)). \
        first()

    if user is None:
        raise RuntimeError(errors['201'])

    if user.id == user_id:
        if old_password == user.password:
            user.password = new_password
            session_commit()
        else:
            raise RuntimeError(errors['202'])
    elif user.parent_id == user_id:
        user.password = new_password
        session_commit()
    else:
        raise RuntimeError(errors['403'])
コード例 #2
0
ファイル: recommend.py プロジェクト: 14Days/back_web
 def delete_recommend(self, user_id, recommend_ids: list):
     recommends = Recommend.query. \
         filter(Recommend.id.in_(recommend_ids)). \
         filter(Recommend.user_id == user_id). \
         all()
     self._delete_recommend(recommends)
     session_commit()
コード例 #3
0
ファイル: recommend.py プロジェクト: 14Days/back_web
 def delete_recommend(self, user_id, recommend_ids: list):
     id_list = self._get_user_list(user_id)
     recommends = Recommend.query. \
         filter(Recommend.id.in_(recommend_ids)). \
         filter(Recommend.user_id.in_(id_list)). \
         all()
     self._delete_recommend(recommends)
     session_commit()
コード例 #4
0
    def delete_notice(self, user_id: int, notice_id: list):
        notice = Notice.query.filter(Notice.id.in_(notice_id)).all()

        for item in notice:
            if item.user_id != user_id:
                raise RuntimeError(errors['403'])

        for item in notice:
            item.delete_at = datetime.datetime.now()
        session_commit()
コード例 #5
0
ファイル: user.py プロジェクト: 14Days/back_web
def save_avatar(name):
    """
    保存用户头像名称
    :param name:
    :return:
    """
    avatar = Avatar(name=name, status=0)
    db.session.add(avatar)
    session_commit()
    return avatar
コード例 #6
0
ファイル: recommend.py プロジェクト: 14Days/back_web
def save_img(name, user_id):
    """
    保存用户上传图片
    :param name:
    :param user_id
    :return:
    """
    img = Img(
        name=name,
        user_id=user_id
    )
    db.session.add(img)
    session_commit()
    return img
コード例 #7
0
ファイル: comment.py プロジェクト: 14Days/back_web
    def delete_comment(self, comment_id, user_id):
        comment, recommend_id = self._level.delete_it(comment_id)
        if comment is None:
            raise RuntimeError(errors['501'])

        recommend = Recommend.query. \
            filter(Recommend.id == recommend_id). \
            first()

        user = recommend.user
        if user.id != user_id and user.parent_id != user:
            raise RuntimeError(errors['403'])

        comment.delete_at = datetime.datetime.now()
        session_commit()
コード例 #8
0
ファイル: user.py プロジェクト: 14Days/back_web
def delete_user(temp_id: int, user_id: int):
    """
    删除用户
    :param temp_id:
    :param user_id:
    :return:
    """
    user = User.query.filter(User.id.in_(temp_id)).all()
    for item in user:
        if item.parent_id != user_id:
            raise RuntimeError(errors['403'])

    for item in user:
        item.delete_at = datetime.datetime.now()
    session_commit()
コード例 #9
0
    def _post_notice(title, content, is_top, notice_type, user_id):
        """
        发布通知的基本函数
        :param title:
        :param content:
        :param is_top:
        :param notice_type:
        :param user_id:
        :return:
        """
        notice = Notice(title=title,
                        content=content,
                        is_top=is_top,
                        type=notice_type,
                        user_id=user_id)

        db.session.add(notice)
        session_commit()
コード例 #10
0
ファイル: recommend.py プロジェクト: 14Days/back_web
    def _put_recommend(self, content, new_img_id: list, old_img_id: list, recommend_id: int):
        recommend = self._sql_put.filter(Recommend.id == recommend_id). \
            filter(Recommend.delete_at.is_(None)). \
            first()
        if recommend is None:
            raise RuntimeError(errors['501'])

        recommend.content = content
        old = Img.query.filter(Img.id.in_(old_img_id)).all()
        for item in old:
            item.type = item.type - 1
            recommend.img.remove(item)
        new = Img.query.filter(Img.id.in_(new_img_id)).all()
        for item in new:
            item.type = item.type + 1
        recommend.img = new
        session_commit()

        return recommend.id
コード例 #11
0
ファイル: recommend.py プロジェクト: 14Days/back_web
    def _post_recommend(content: str, img: list, user_id: int):
        """
        发布推荐消息推荐类
        :param content:
        :param img:
        :return:
        """
        # 图片使用数加一
        image = Img.query.filter(Img.id.in_(img)).all()
        for item in image:
            item.type = item.type + 1
        recommend = Recommend(content=content)
        recommend.img.extend(image)
        user = User.query.filter_by(id=user_id).first()
        user.recommend.append(recommend)

        session_commit()

        return recommend.id
コード例 #12
0
ファイル: user.py プロジェクト: 14Days/back_web
def add_user(username: str, password: str, parent: int, role: int):
    """
    新建用户
    :param username:
    :param password:
    :param parent:
    :param role: 用户角色
    :return:
    """
    user = User(
        username=username,
        password=password,
        nickname=username,
        role=role,
        parent_id=parent,
    )

    db.session.add(user)
    session_commit()
コード例 #13
0
def label_recommend(recommend_id: int, app):
    """
    异步标记任务
    """
    try:
        with app.app_context():
            recommend = Recommend.query.filter(Recommend.id == recommend_id).first()
            images = recommend.img
            tag_id = []
            for item in images:
                try:
                    tag_id.append(get_label(item.name))
                except FileNotFoundError:
                    continue
            tags = SecondTag.query.filter(SecondTag.id.in_(tag_id)).all()
            recommend.tags.clear()
            recommend.tags.extend(tags)
            session_commit()
    except SQLAlchemyError as e:
        print(e.args)
コード例 #14
0
ファイル: user.py プロジェクト: 14Days/back_web
def change_user_info(user_id, this_user, nickname, sex, email, phone, avatar):
    """
    修改个人信息
    :param user_id: 登陆用户
    :param this_user: 要修改的用户
    :param nickname:
    :param sex:
    :param email:
    :param phone:
    :param avatar:
    :return:
    """
    user = User.query. \
        filter(User.id == this_user). \
        filter(User.delete_at.is_(None)). \
        first()

    if user is None:
        raise RuntimeError(errors['201'])

    if user.id != user_id and user.parent_id != user_id:
        raise RuntimeError(errors['403'])
    if avatar['old_id'] != avatar['new_id']:
        old_avatar = Avatar.query.filter_by(id=avatar['old_id']).first()
        if old_avatar.user_id != this_user and old_avatar.status != -1:
            raise RuntimeError(errors['403'])

        new_avatar = Avatar.query.filter_by(id=avatar['new_id']).first()
        if new_avatar.status != 0:
            raise RuntimeError(errors['403'])

        if old_avatar.status != -1:
            old_avatar.status = 2
        new_avatar.status, new_avatar.user_id = 1, this_user

    user.nickname, user.sex, user.email, user.phone = nickname, sex, email, phone

    session_commit()
コード例 #15
0
ファイル: user.py プロジェクト: 14Days/get-question-back
 def change_password(cls, username: str, password: str):
     user = cls.query.filter_by(username=username).first()
     user.password = password
     return session_commit()
コード例 #16
0
 def _put_notice(title, content, is_top, notice_type, notice: Notice):
     notice.title = title
     notice.content = content
     notice.is_top = is_top
     notice.type = notice_type
     session_commit()
コード例 #17
0
 def delete_notice(self, user_id: int, notice_id: list):
     notice = Notice.query.filter(Notice.id.in_(notice_id)).all()
     for item in notice:
         item.delete_at = datetime.datetime.now()
     session_commit()
コード例 #18
0
ファイル: user.py プロジェクト: 14Days/get-question-back
 def new_user(self):
     db.session.add(self)
     return session_commit()
コード例 #19
0
ファイル: comment.py プロジェクト: 14Days/back_web
 def delete_comment(self, comment_id, user_id):
     comment, recommend_id = self._level.delete_it(comment_id)
     if comment is None:
         raise RuntimeError(errors['501'])
     comment.delete_at = datetime.datetime.now()
     session_commit()