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'])
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()
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()
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()
def save_avatar(name): """ 保存用户头像名称 :param name: :return: """ avatar = Avatar(name=name, status=0) db.session.add(avatar) session_commit() return avatar
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
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()
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()
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()
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
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
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()
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)
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()
def change_password(cls, username: str, password: str): user = cls.query.filter_by(username=username).first() user.password = password return session_commit()
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()
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()
def new_user(self): db.session.add(self) return session_commit()
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()