Beispiel #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")
Beispiel #2
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)
Beispiel #3
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")
Beispiel #4
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)
Beispiel #5
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)
Beispiel #6
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)
Beispiel #7
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")
Beispiel #8
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")
Beispiel #9
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")
Beispiel #10
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})
Beispiel #11
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")
Beispiel #12
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")
Beispiel #13
0
def add_module():
    """添加一个权限模块"""
    form = AuthModuleForm().validate_for_api()
    with db.auto_commit():
        authmodule = AuthModule()
        authmodule.name = form.name.data
        authmodule.module = form.module.data
        db.session.add(authmodule)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #14
0
def add_tag():
    form = TagAddForm().validate_for_api()
    with db.auto_commit():
        tag = Tag()
        if form.parent_id.data:
            tag.parent_id = form.parent_id.data
        tag.name = form.name.data
        tag.info = form.info.data
        db.session.add(tag)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #15
0
def edit_module():
    """编辑权限模块"""
    form = AuthModuleEditForm().validate_for_api()
    authmodule = form.obj
    with db.auto_commit():
        if form.module.data:
            authmodule.module = form.module.data
        if form.name.data:
            authmodule.name = form.name.data
        db.session.add(authmodule)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #16
0
def del_bangumi():
    form = IdForm().validate_for_api()
    bangumi = Bangumi.query.get_or_404(form.id.data, "找不到该番剧")
    with db.auto_commit():
        # 将状态设为0,下架
        if form.status.data == 1:
            bangumi.status = 1
        elif form.status.data == 0:
            bangumi.status = 0
        db.session.add(bangumi)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #17
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")
Beispiel #18
0
def del_module():
    """删除权限模块"""
    form = IdForm().validate_for_api()
    authmodule = AuthModule.query.filter(AuthModule.id == form.id.data). \
        first_or_404("找不到该权限模块")
    with db.auto_commit():
        # 先删除该模块的下所有接口
        for i in AuthApi.query.filter(AuthApi.module_id == authmodule.id).all():
            db.session.delete(i)
        # 再删除该模块
        db.session.delete(authmodule)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #19
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")
Beispiel #20
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")
Beispiel #21
0
def del_role():
    form = IdForm().validate_for_api()
    role = Role.query.filter(Role.id == form.id.data).first_or_404(description="找不到该角色")
    with db.auto_commit():
        # 删除该角色所拥有的权限关联
        for role_auth in RoleAuth.query.filter(RoleAuth.role_id == role.id).all():
            db.session.delete(role_auth)
        # 删除拥有该角色的用户关联
        for user_role in UserRole.query.filter(UserRole.role_id == role.id).all():
            db.session.delete(user_role)
        # 删除该角色
        db.session.delete(role)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #22
0
def add_role():
    form = RoleAddForm()
    form.auths.choices = [(v.id, v.id) for v in AuthModule.query.all()]
    form.validate_for_api()
    with db.auto_commit():
        # 添加角色
        role = Role(name=form.name.data)
        db.session.add(role)
        # 关联权限
    with db.auto_commit():
        role = Role.query.filter(Role.name == form.name.data).first()
        for i in form.auths.data:
            db.session.add(RoleAuth(role_id=role.id, auth_id=i))
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #23
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")
Beispiel #24
0
def list_video():
    form = PageForm().validate_for_api()
    page_data = Video.query
    if form.tag_id.data == -1:
        pass
    else:
        sub_tags = [
            i.id
            for i in Tag.query.filter(Tag.parent_id == form.tag_id.data).all()
        ]
        page_data = page_data.filter(
            or_(Video.tag_id == form.tag_id.data, Video.tag_id.in_(sub_tags)))
    if form.q.data:
        page_data = page_data.filter(
            or_(Video.id == form.q.data,
                Video.name.like("%" + form.q.data + "%")))
    page_data = page_data.order_by(Video.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    videos = []
    for i in page_data.items:
        tag = Tag.query.filter(Tag.id == i.tag_id).first()
        video = {
            "id": i.id,
            "name": i.name,
            "logo": i.logo,
            "playnum": i.playnum,
            "commentnum": i.commentnum,
            "danmunum": i.danmunum,
            "colnum": i.colnum,
            "url": i.url,
            "info": i.info,
            "tag": {
                "id": tag.id if tag else "未知",
                "name": tag.name if tag else "未知",
            },
            "release_time": i.release_time.strftime("%Y-%m-%d %H:%M:%S"),
        }
        videos.append(video)
    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
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Beispiel #25
0
def list_uploadvideo():
    """查看审核视频"""
    form = ListUploadVideoForm().validate_for_api()
    page_data = UploadVideo.query
    if form.status.data == -1:
        pass
    else:
        page_data = page_data.join(Verification, UploadVideo.id == Verification.video_id). \
            filter(Verification.status == form.status.data)
    page_data = page_data.order_by(UploadVideo.create_time.asc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    uploadvideos = []
    for i in page_data.items:
        tag = Tag.query.filter(Tag.id == i.tag_id).first()
        baseuser = BaseUser.query.filter(BaseUser.id == i.user_id).first()
        verification = Verification.query.filter(
            Verification.video_id == i.id).first()
        one = {
            "id": i.id,
            "name": i.name,
            "url": i.url,
            "info": i.info,
            "logo": i.logo,
            "tag": {
                "id": tag.id if tag else "未知",
                "name": tag.name if tag else "未知"
            },
            "user": {
                "id": baseuser.id if baseuser else "未知",
                "name": baseuser.name if baseuser else "未知",
            },
            "status": verification.status,
            "upload_time": i.upload_time.strftime("%Y-%m-%d %H:%M:%S"),
        }
        uploadvideos.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,
        "uploadvideos": uploadvideos
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Beispiel #26
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})
Beispiel #27
0
def list_loginlog():
    """列出登录日志"""
    form = ListLogForm().validate_for_api()
    page_data = LoginLog.query
    if form.tag_id.data == -1:
        pass
    elif form.tag_id.data == 0:
        # 查询普通用户
        page_data = page_data.join(User, User.id == LoginLog.user_id)
    else:
        # 查询管理员
        page_data = page_data.join(Admin, Admin.id == LoginLog.user_id)
    if form.q.data:
        page_data = page_data.join(BaseUser, BaseUser.id == LoginLog.user_id). \
            filter(or_(BaseUser.id == form.q.data, BaseUser.name.like("%" + form.q.data + "%")))
    if form.start_date.data:
        page_data = page_data.filter(
            LoginLog.create_time.between(form.start_date.data,
                                         form.end_date.data))
    page_data = page_data.order_by(LoginLog.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    loginlogs = []
    for i in page_data.items:
        baseuser = BaseUser.query.filter(BaseUser.id == i.user_id).first()
        one = {
            "id": i.id,
            "user": {
                "id": baseuser.id if baseuser else "未知",
                "name": baseuser.name if baseuser else "未知",
            },
            "ip": i.ip,
            "location": i.location,
            "create_time": i.create_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        loginlogs.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,
        "loginlogs": loginlogs
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)
Beispiel #28
0
def edit_role():
    form = RoleEditForm()
    form.auths.choices = [(v.id, v.id) for v in AuthModule.query.all()]
    form.validate_for_api()
    role = form.obj
    with db.auto_commit():
        if form.name.data:
            role.name = form.name.data
        db.session.add(role)
        if form.auths.data:
            # 删除原来的权限
            for i in RoleAuth.query.filter(RoleAuth.role_id == role.id).all():
                db.session.delete(i)
            # 添加新的权限
            for i in form.auths.data:
                db.session.add(RoleAuth(role_id=role.id, auth_id=i))
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #29
0
def del_user():
    """删除用户"""
    form = IdForm().validate_for_api()
    user = User.query.get_or_404(form.id.data, "找不到该用户")
    admin = Admin.query.filter(Admin.id == user.id).first()
    if admin:
        return ReturnObj.get_response(ReturnEnum.ADMIN_DEL_ERROR.value,
                                      "该用户也是管理员,不能删除")
    with db.auto_commit():
        # 删除用户的角色关联
        user_role = UserRole.query.filter(UserRole.user_id == user.id).all()
        for i in user_role:
            db.session.delete(i)
        # 删除用户额外信息
        db.session.delete(user)
        # 删除用户基本信息
        baseuser = BaseUser.query.filter(BaseUser.id == user.id).first()
        db.session.delete(baseuser)
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success")
Beispiel #30
0
def list_viewlog():
    """列出用户观看日志"""
    form = ListLogForm().validate_for_api()
    page_data = ViewLog.query
    if form.q.data:
        page_data = page_data.join(BaseUser, BaseUser.id == ViewLog.user_id). \
            filter(or_(BaseUser.id == form.q.data, BaseUser.name.like("%" + form.q.data + "%")))
    if form.start_date.data:
        page_data = page_data.filter(
            ViewLog.create_time.between(form.start_date.data,
                                        form.end_date.data))
    if form.video_id.data:
        page_data = page_data.filter(ViewLog.video_id == form.video_id.data)
    page_data = page_data.order_by(ViewLog.create_time.desc()). \
        paginate(error_out=False, page=int(form.page.data), per_page=int(form.pagesize.data))
    viewlogs = []
    for i in page_data.items:
        baseuser = BaseUser.query.filter(BaseUser.id == i.user_id).first()
        video = Video.query.filter(Video.id == i.video_id).first()
        one = {
            "user": {
                "id": baseuser.id if baseuser else "未知",
                "name": baseuser.name if baseuser else "未知",
            },
            "video": {
                "id": video.id if video else "未知",
                "name": video.name if video else "未知",
            },
            "update_time": i.update_time.strftime("%Y-%m-%d %H:%M:%S")
        }
        viewlogs.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,
        "viewlogs": viewlogs
    }
    write_oplog()
    return ReturnObj.get_response(ReturnEnum.SUCCESS.value, "success", data=r)