Ejemplo n.º 1
0
def edit_animation():
    """编辑轮播图"""
    form = AnimationEditForm().validate_for_api()
    animation = form.obj
    with db.auto_commit():
        if form.name.data:
            animation.name = form.name.data
        try:
            file = request.files[form.logo.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_logo = secure_filename(file.filename)
            logo = change_filename(file_logo)
            file.save(os.path.join(current_app.config["LOGO_DIR"], logo))
            animation.logo = urljoin(current_app.config["LOGO_PATH"], logo)
        except Exception as e:
            pass
        if form.url.data:
            animation.url = form.url.data
        if form.tag_id.data:
            animation.tag_id = form.tag_id.data
        db.session.add(animation)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 2
0
def edit_user():
    """编辑用户信息"""
    form = UserEditForm().validate_for_api()
    baseuser = form.obj
    user = User.query.filter(User.id == baseuser.id).first()
    with db.auto_commit():
        if form.name.data:
            baseuser.name = form.name.data
        if form.email.data:
            user.email = form.email.data
        if form.phone.data:
            user.phone = form.phone.data
        if form.info.data:
            user.info = form.info.data
        try:
            a = request.files
            file = request.files[form.face.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_face = secure_filename(file.filename)
            face = change_filename(file_face)
            file.save(os.path.join(current_app.config["FACE_DIR"], face))
            user.face = urljoin(current_app.config["FACE_PATH"], face)
        except:
            pass
        db.session.add(baseuser)
        db.session.add(user)
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 3
0
def is_login():
    """判断当前用户是否登录"""
    if current_user.is_authenticated:
        user = User.query.filter(User.id == current_user.id).first()
        r = {"name": current_user.name, "face": user.face if user else None}
        return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "ok", data=r)
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "cancel")
Ejemplo n.º 4
0
def add_video():
    """添加番剧视频"""
    form = BangumiAddVideoForm().validate_for_api()
    bangumi = form.obj
    with db.auto_commit():
        video = Video()
        video.name = form.name.data
        try:
            file = request.files[form.url.name]
            if not allowed_video_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.VIDEO_TYPE_ERROR.value,
                    "只允许上传mp4 avi flv wmv格式")
            file_url = secure_filename(file.filename)
            url = change_filename(file_url)
            file.save(os.path.join(current_app.config["VIDEO_DIR"], url))
            try:
                video_clip = VideoFileClip(
                    os.path.join(current_app.config["VIDEO_DIR"], url))
                video.length = video_clip.duration
                video_clip.reader.close()
                video_clip.audio.reader.close_proc()
            except Exception as e:
                print(e)
                video.length = None
            video.url = urljoin(current_app.config["VIDEO_PATH"], url)
        except Exception as e:
            return ReturnObj.get_response(ReturnEnum.UPLOAD_VIDEO.value,
                                          "请上传视频")
        try:
            file = request.files[form.logo.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_logo = secure_filename(file.filename)
            logo = change_filename(file_logo)
            file.save(os.path.join(current_app.config["LOGO_DIR"], logo))
            video.logo = urljoin(current_app.config["LOGO_PATH"], logo)
        except Exception as e:
            return ReturnObj.get_response(ReturnEnum.UPLOAD_VIDEO_LOGO.value,
                                          "请上传视频封面")
        db.session.add(video)
    with db.auto_commit():
        video = Video.query.filter(Video.name == form.name.data).order_by(
            Video.create_time.desc()).first()
        bangumi.episodes += 1
        bangumi.new_piece += 1
        if form.is_finish.data == 1:
            bangumi.is_finish = 1
        db.session.add(bangumi)
    with db.auto_commit():
        episode = Episode()
        episode.video_id = video.id
        episode.bangumi_id = bangumi.id
        episode.piece = bangumi.new_piece
        db.session.add(episode)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 5
0
def register_user(form):
    """添加普通用户"""
    try:
        # 基本用户
        baseuser = BaseUser()
        baseuser.account = form.account.data
        baseuser.pwd = form.pwd.data
        baseuser.name = form.name.data
        baseuser.gender = form.gender.data
        db.session.add(baseuser)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
        return ReturnObj.get_response(ReturnEnum.ADD_BASEUSER_FAIL.value,
                                      "添加用户基本信息失败")
    baseuser = BaseUser.query.filter(
        BaseUser.account == form.account.data).first()
    try:
        # 用户其他信息
        user = User()
        user.id = baseuser.id
        if form.phone.data:
            user.phone = form.phone.data
        if form.email.data:
            user.email = form.email.data
        if form.info.data:
            user.info = form.info.data
        try:
            file = request.files[form.face.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_face = secure_filename(file.filename)
            face = change_filename(file_face)
            file.save(os.path.join(current_app.config["FACE_DIR"], face))
            user.face = urljoin(current_app.config["FACE_PATH"], face)
        except BadRequestKeyError as e:
            pass
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
        return ReturnObj.get_response(ReturnEnum.ADD_USER_FAIL.value,
                                      "添加用户额外信息失败")
    try:
        user_role = UserRole()
        user_role.user_id = baseuser.id
        user_role.role_id = Role.query.filter(Role.name == "普通用户").first().id
        db.session.add(user_role)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
        return ReturnObj.get_response(ReturnEnum.ADD_USERROLE_FAIL.value,
                                      "赋予用户角色失败")
    return baseuser
Ejemplo n.º 6
0
def edit_uploadvideo():
    """编辑审核状态"""
    form = VerificationForm().validate_for_api()
    verification = form.verification
    try:
        verification.status = form.status.data
        verification.admin_id = current_user.id
        db.session.add(verification)
        db.session.commit()
    except Exception as e:
        print(e)
        db.session.rollback()
    uploadvideo = form.uploadvideo
    if verification.status == 1:
        # 审核通过
        try:
            # 审核通过,添加到视频表
            video = Video()
            video.user_id = uploadvideo.user_id
            video.tag_id = uploadvideo.tag_id
            video.name = uploadvideo.name
            video.info = uploadvideo.info

            # 更换视频封面文件位置
            file_name = uploadvideo.logo.rsplit("/", 1)[1]
            src = os.path.join(current_app.config["TMP_DIR"], file_name)
            if os.path.isfile(src):
                des = os.path.join(current_app.config["LOGO_DIR"], file_name)
                shutil.move(src, des)
            else:
                return ReturnObj.get_response(
                    ReturnEnum.UPLOAD_VIDEO_LOGO.value, "上传视频封面不存在")
            video.logo = uploadvideo.logo.replace("tmp", "logo")

            # 更换视频文件位置
            file_name = uploadvideo.url.rsplit("/", 1)[1]
            src = os.path.join(current_app.config["TMP_DIR"], file_name)
            if os.path.isfile(src):
                des = os.path.join(current_app.config["VIDEO_DIR"], file_name)
                shutil.move(src, des)
            else:
                return ReturnObj.get_response(
                    ReturnEnum.UPLOADVIDE0_NOT_EXIST.value, "上传视频不存在")
            video.url = uploadvideo.url.replace("tmp", "video")

            video.release_time = datetime.now()
            db.session.add(video)
        except Exception as e:
            print(e)
            db.session.rollback()
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 7
0
def add_video():
    form = VideoAddForm()
    # 每次刷新列表,动态加载最新的标签
    # form.tag_id.choices = [(v.id, v.name) for v in Tag.query.all()]
    form.validate_for_api()
    with db.auto_commit():
        video = Video()
        video.name = form.name.data
        try:
            file = request.files[form.url.name]
            if not allowed_video_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.VIDEO_TYPE_ERROR.value,
                    "只允许上传mp4 avi flv wmv格式")
            file_url = secure_filename(file.filename)
            url = change_filename(file_url)
            file.save(os.path.join(current_app.config["VIDEO_DIR"], url))
            try:
                video_clip = VideoFileClip(
                    os.path.join(current_app.config["VIDEO_DIR"], url))
                video.length = video_clip.duration
                video_clip.reader.close()
                video_clip.audio.reader.close_proc()
            except Exception as e:
                print(e)
                video.length = None
            video.url = urljoin(current_app.config["VIDEO_PATH"], url)
        except Exception as e:
            return ReturnObj.get_response(ReturnEnum.UPLOAD_VIDEO.value,
                                          "请上传视频")
        try:
            file = request.files[form.logo.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_logo = secure_filename(file.filename)
            logo = change_filename(file_logo)
            file.save(os.path.join(current_app.config["LOGO_DIR"], logo))
            video.logo = urljoin(current_app.config["LOGO_PATH"], logo)
        except Exception as e:
            return ReturnObj.get_response(ReturnEnum.UPLOAD_VIDEO_LOGO.value,
                                          "请上传视频封面")
        # 默认所属用户为pilipili番剧
        video.user_id = 6666
        video.info = form.info.data
        # 默认所属标签为连载动画
        video.tag_id = 18
        db.session.add(video)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 8
0
def add_admin():
    """添加管理员"""
    form = AdminAddForm()
    # 动态加载最新的角色列表
    form.role_id.choices = [(v.id, v.id) for v in Role.query.all()]
    # 验证
    form.validate_for_api()
    baseuser = register_admin(form)
    if baseuser:
        write_oplog()
        return ReturnObj.get_response(ReturnEnum.SUCCESS.value,
                                      "success",
                                      data={"id": baseuser.id})
    return ReturnObj.get_response(ReturnEnum.FAIL.value, "fail")
Ejemplo n.º 9
0
def edit_video():
    form = VideoEditForm()
    # form.tag_id.choices = [(v.id, v.name) for v in Tag.query.all()]
    form.validate_for_api()
    # 验证通过,从obj中获取查找到的对象
    video = form.obj
    with db.auto_commit():
        if form.name.data:
            video.name = form.name.data
        if form.info.data:
            video.info = form.info.data
        try:
            file = request.files[form.url.name]
            if not allowed_video_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.VIDEO_TYPE_ERROR.value,
                    "只允许上传mp4 avi flv wmv格式")
            file_url = secure_filename(file.filename)
            url = change_filename(file_url)
            file.save(os.path.join(current_app.config["VIDEO_DIR"], url))
            try:
                video_clip = VideoFileClip(
                    os.path.join(current_app.config["VIDEO_DIR"], url))
                video.length = video_clip.duration
                video_clip.reader.close()
                video_clip.audio.reader.close_proc()
            except Exception as e:
                print(e)
                video.length = None
            video.url = urljoin(current_app.config["VIDEO_PATH"], url)
        except Exception as e:
            pass
        try:
            file = request.files[form.logo.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_logo = secure_filename(file.filename)
            logo = change_filename(file_logo)
            file.save(os.path.join(current_app.config["LOGO_DIR"], logo))
            video.logo = urljoin(current_app.config["LOGO_PATH"], logo)
        except Exception as e:
            pass
        # if form.tag_id.data:
        #     video.tag_id = form.tag_id.data
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 10
0
def get_bangumicol():
    """获取番剧订阅"""
    form = PageForm().validate_for_api()
    page_data = BangumiCol.query.filter(
        BangumiCol.user_id == current_user.id).order_by(
            BangumiCol.create_time.desc()).paginate(error_out=False,
                                                    page=int(form.page.data),
                                                    per_page=15)
    bangumis = []
    for i in page_data.items:
        bangumi = Bangumi.query.filter(Bangumi.id == i.bangumi_id).first()
        tag = Tag.query.filter(Tag.id == bangumi.tag_id).first()
        tmp = {
            "id": bangumi.id,
            "name": bangumi.name,
            "info": bangumi.info,
            "logo": bangumi.logo,
            "area": bangumi.area,
            "tag": tag.name if tag else "未知"
        }
        bangumis.append(tmp)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "bangumis": bangumis,
        "total": page_data.total
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 11
0
def logout():
    """退出登录"""
    # 从session中清除当前用户的信息
    logout_user()
    # 清空session
    # session.clear
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 12
0
def del_tag():
    form = IdForm().validate_for_api()
    tag = Tag.query.filter(Tag.id == form.id.data).first_or_404("找不到该标签")
    with db.auto_commit():
        db.session.delete(tag)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 13
0
def get_com_history():
    """获取评论记录"""
    form = PageForm().validate_for_api()
    page_data = Comment.query.filter(Comment.user_id == current_user.id). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(current_app.config["PER_PAGE_COM"]))
    comments = []
    for i in page_data.items:
        video = Video.query.filter(Video.id == i.video_id).frist()
        baseuser = BaseUser.query.filter(BaseUser.id == video.user_id).first()
        tag = Tag.query.filter(Tag.id == video.tag_id).first()
        tmp = {
            "id": video.id,
            "name": video.name,
            "logo": video.logo,
            "user": {
                "id": baseuser.id,
                "name": baseuser.name,
            } if baseuser else None,
            "tag": tag.name if tag else None,
            "time": i.update_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        comments.append(tmp)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "comments": comments
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 14
0
def get_view_history():
    """获取观看历史记录"""
    form = PageForm().validate_for_api()
    page_data = ViewLog.query.filter(
        ViewLog.user_id == current_user.id).order_by(
            ViewLog.update_time.asc()).paginate(error_out=False,
                                                page=int(form.page.data),
                                                per_page=20)
    videos = []
    for i in page_data.items:
        video = Video.query.filter(Video.id == i.video_id).frist()
        baseuser = BaseUser.query.filter(BaseUser.id == video.user_id).first()
        tag = Tag.query.filter(Tag.id == video.tag_id).first()
        tmp = {
            "id": video.id,
            "name": video.name,
            "logo": video.logo,
            "user": {
                "id": baseuser.id,
                "name": baseuser.name,
            } if baseuser else None,
            "tag": tag.name if tag else None,
            "time": i.update_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        videos.append(tmp)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "videos": videos
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 15
0
def get_user():
    """查看用户信息"""
    baseuser = BaseUser.query.filter(BaseUser.id == current_user.id). \
        first_or_404(description="找不到该用户")
    user = User.query.filter(User.id == baseuser.id).first()
    r = {
        "user": {
            "id": baseuser.id,
            "name": baseuser.name,
            "account": baseuser.account,
            "gender": GenderEnum(baseuser.gender).name,
            "email": user.email if user else None,
            "phone": user.phone if user else None,
            "info": user.info if user else None,
            "face": user.face if user else None,
            "create_time": baseuser.create_time.strftime("%Y-%m-%d %H:%M:%S")
        },
        "follownum":
        num_assign(
            Follow.query.filter(Follow.user_id == current_user.id).count()),
        "fannum":
        num_assign(
            Follow.query.filter(Follow.follow_id == current_user.id).count())
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 16
0
def del_video():
    form = IdForm().validate_for_api()
    video = Video.query.get_or_404(form.id.data, "找不到该视频")
    with db.auto_commit():
        db.session.delete(video)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 17
0
def get_my_video():
    """获取自己上传的视频"""
    form = PageForm().validate_for_api()
    page_data = Video.query.filter(Video.user_id == current_user.id).order_by(
        Video.create_time.desc()).paginate(error_out=False,
                                           page=int(form.page.data),
                                           per_page=20)
    videos = []
    for i in page_data.items:
        baseuser = BaseUser.query.filter(BaseUser.id == i.user_id).first()
        tmp = {
            "id": i.id,
            "name": i.name,
            "playnum": i.playnum,
            "colnum": i.colnum,
            "logo": i.logo,
            "user": {
                "id": baseuser.id,
                "name": baseuser.name,
            },
            "release_time": i.release_time.strftime("%Y-%m-%d %H:%M:%S"),
            "length": i.length,
        }
        videos.append(tmp)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "videos": videos,
        "total": page_data.total
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 18
0
def list_animation():
    """列出轮播图"""
    form = PageForm().validate_for_api()
    page_data = Animation.query
    if form.tag_id.data == -1:
        pass
    else:
        page_data = page_data.filter(Animation.tag_id == form.tag_id.data)
    if form.q.data:
        page_data = page_data.filter(
            or_(Animation.id == form.q.data,
                Animation.name.like("%" + form.q.data + "%")))
    page_data = page_data.order_by(Animation.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    animations = []
    for i in page_data.items:
        tag = Tag.query.filter(Tag.id == i.tag_id).first()
        animation = {
            "id": i.id,
            "tag": tag.name if tag else "未知",
            "name": i.name,
            "logo": i.logo,
            "url": i.url
        }
        animations.append(animation)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "animations": animations
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 19
0
def search_user():
    """搜索用户"""
    form = SearchForm().validate_for_api()
    page_data = BaseUser.query.filter(BaseUser.name.like("%" + form.q.data + "%")). \
        paginate(error_out=False, page=int(form.page.data), per_page=20)
    baseusers = []
    for i in page_data.items:
        user = User.query.filter(User.id == i.id).first()
        baseuser = {
            "id":
            i.id,
            "name":
            i.name,
            "info":
            user.info,
            "face":
            user.face,
            "post_num":
            0,
            "fannum":
            num_assign(Follow.query.filter(Follow.follow_id == i.id).count()),
            "follownum":
            num_assign(Follow.query.filter(Follow.user_id == i.id).count()),
        }
        baseusers.append(baseuser)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "baseusers": baseusers
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 20
0
def get_relevant():
    """获得视频页面下的相关推荐视频"""
    form = TagForm().validate_for_api()
    videos = Video.query.filter(Video.tag_id == form.tag_id.data). \
        order_by(Video.create_time.desc()).limit(30).all()
    random.shuffle(videos)
    if len(videos) <= 10:
        pass
    else:
        videos = random.sample(videos, random.randint(len(videos) - random.randint(2, 9), len(videos)))
    tmp = []
    for i in videos:
        baseuser = BaseUser.query.filter(BaseUser.id == i.user_id).first()
        video = {
            "id": i.id,
            "name": i.name,
            "logo": i.logo,
            "playnum": num_assign(i.playnum),
            "commentnum": num_assign(i.commentnum),
            "user": {
                "id": baseuser.id,
                "name": baseuser.name
            },
            "length": i.length,
            "is_bangumi": False
        }
        tmp.append(video)
    r = {
        "total": len(videos),
        "videos": tmp
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 21
0
def list_module():
    """列出权限模块"""
    form = PageForm().validate_for_api()
    page_data = AuthModule.query
    if form.q.data:
        page_data = page_data.filter(or_(AuthModule.id == form.q.data, AuthModule.name.like("%" + form.q.data + "%")))
    page_data = page_data.order_by(AuthModule.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    modules = []
    for i in page_data.items:
        module = {
            "id": i.id,
            "name": i.name,
            "module": i.module,
            "create_time": i.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        modules.append(module)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "modules": modules
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 22
0
def get_timeline():
    """获取国创时间表"""
    select = Bangumi.query.filter(
        Bangumi.is_finish == FinishEnum.UNFINISH.value, Bangumi.tag_id == 3)
    r = {}
    for i in range(1, 8):
        bangumis = select.filter(Bangumi.update_weekday == i).all()
        one = {
            "guochuangs": [{
                "id":
                j.id,
                "name":
                j.name,
                "logo":
                j.logo,
                "new_piece":
                j.new_piece,
                "update_time":
                j.update_time.strftime("%H:%M:%S"),
                "update_weekday":
                j.update_weekday,
                "date":
                datetime.datetime.now().date().strftime("%Y-%m-%d")
            } for j in bangumis]
        }
        r[str(i)] = one
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 23
0
def get_latest():
    """获取最新投稿"""
    form = NewForm().validate_for_api()
    tag = None
    if form.tag_id.data == -1:
        videos = Video.query.limit(form.number.data).all()
    else:
        # 获取标签及其子标签
        sub_tags = [i.id for i in Tag.query.filter(Tag.parent_id == form.tag_id.data).all()]
        videos = Video.query.filter(or_(Video.tag_id == form.tag_id.data, Video.tag_id.in_(sub_tags))).order_by(
            Video.create_time.desc()).limit(form.number.data).all()
        tag = Tag.query.filter(Tag.id == form.tag_id.data).first()
    random.shuffle(videos)
    r = {
        "tag": tag.name if tag else "全部",
        "total": len(videos),
        "videos": [{
            "id": i.id,
            "name": i.name,
            "playnum": num_assign(i.playnum),
            "commentnum": num_assign(i.commentnum),
            "logo": i.logo,
            "length": i.length,
            "is_bangumi": False
        } for i in videos]
    }
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 24
0
def list_admin():
    """分页列出管理员的信息"""
    form = PageForm().validate_for_api()
    page_data = BaseUser.query.join(Admin, Admin.id == BaseUser.id)
    if form.q.data:
        page_data = page_data.filter(
            or_(BaseUser.id == form.q.data,
                BaseUser.name.like("%" + form.q.data + "%")))
    page_data = page_data.order_by(BaseUser.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    admins = []
    for i in page_data.items:
        roles = []
        for j in Role.query.join(UserRole, UserRole.role_id == Role.id).filter(
                UserRole.user_id == i.id).all():
            role = {"id": j.id, "name": j.name}
            roles.append(role)
        admin = {
            "id": i.id,
            "account": i.account,
            "name": i.name,
            "gender": i.gender,
            "roles": roles
        }
        admins.append(admin)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "admins": admins
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 25
0
def list_user():
    """列出用户"""
    form = PageForm().validate_for_api()
    page_data = BaseUser.query
    if form.q.data:
        page_data = page_data.join(User, BaseUser.id == User.id). \
            filter(or_(BaseUser.id == form.q.data, BaseUser.name.like("%" + form.q.data + "%")))
    page_data = page_data.order_by(BaseUser.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    users = []
    for i in page_data.items:
        user = User.query.filter(User.id == i.id).first()
        one = {
            "id": i.id,
            "name": i.name,
            "account": i.account,
            "gender": i.gender,
            "email": user.email if user else None,
            "phone": user.phone if user else None,
            "info": user.info if user else None,
            "face": user.face if user else None,
            "create_time": i.create_time.strftime("%Y-%m-%d %H:%M:%S"),
        }
        users.append(one)
    r = {
        "has_next": page_data.has_next,
        "has_prev": page_data.has_prev,
        "pages": page_data.pages,
        "page": page_data.page,
        "total": page_data.total,
        "users": users
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Ejemplo n.º 26
0
def del_animation():
    """删除轮播图"""
    form = IdForm().validate_for_api()
    animation = Animation.query.get_or_404(form.id.data, "找不到该轮播图")
    with db.auto_commit():
        db.session.delete(animation)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 27
0
def del_comment():
    """删除评论"""
    form = IdForm().validate_for_api()
    comment = Comment.query.filter(Comment.id == form.id.data).first_or_404(description="找不到该评论")
    with db.auto_commit():
        db.session.delete(comment)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Ejemplo n.º 28
0
def add_user():
    """添加用户"""
    form = AdminAddUserForm().validate_for_api()
    baseuser = register_user(form)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value,
                                  "success",
                                  data={"id": baseuser.id})
Ejemplo n.º 29
0
def edit_user():
    """编辑用户"""
    form = AdminEditUserForm().validate_for_api()
    baseuser = form.baseuser
    user = form.user
    try:
        if form.name.data:
            baseuser.name = form.name.data
        if form.gender.data:
            baseuser.gender = form.gender.data
        if form.pwd.data:
            baseuser.pwd = form.pwd.data
        db.session.add(baseuser)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
    try:
        if form.email.data:
            user.email = form.email.data
        if form.phone.data:
            user.phone = form.phone.data
        if form.info.data:
            user.info = form.info.data
        try:
            file = request.files[form.face.name]
            if not allowed_image_file(file.filename):
                return ReturnObj.get_response(
                    ReturnEnum.IMAGE_TYPE_ERROR.value,
                    "只允许上传png jpg jpeg gif格式")
            file_face = secure_filename(file.filename)
            face = change_filename(file_face)
            file.save(os.path.join(current_app.config["FACE_DIR"], face))
            user.face = urljoin(current_app.config["FACE_PATH"], face)
        except BadRequestKeyError as e:
            pass
        db.session.add(user)
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        print(e)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value,
                                  "success",
                                  data={"id": baseuser.id})
Ejemplo n.º 30
0
def del_by_video():
    """根据视频id删除该视频的所有评论"""
    form = IdForm().validate_for_api()
    comments = Comment.query.filter(Comment.video_id == form.id.data).all()
    with db.auto_commit():
        for i in comments:
            db.session.delete(i)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")