def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") url = change_filename(file_url) logo = change_filename(file_logo) form.url.data.save(app.config["UP_DIR"] + url) form.logo.data.save(app.config["UP_DIR"] + logo) movie = Movie( title=data['title'], url=url, info=data["info"], logo=logo, star=int(data["star"]), playnum=0, commentnum=0, tag_id=int(data["tag_id"]), area=data["area"], release_time=data["release_time"], length=data["length"], ) db.session.add(movie) db.session.commit() flash("添加电影成功!", "ok") return redirect(url_for('admin.movie_add')) return render_template("admin/movie_add.html", form=form)
def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data print(data) file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) if not os.path.exists(app.config['UP_DIR']): os.makedirs(app.config['UP_DIR']) os.chmod(app.config['UP_DIR'], 'rw') url = change_filename(file_url) logo = change_filename(file_logo) form.url.data.save(app.config['UP_DIR'] + url) form.logo.data.save(app.config['UP_DIR'] + logo) movie = Movie(title=data['title'], url=url, info=data['info'], logo=logo, star=int(data['star']), playnum=0, commentnum=0, tag_id=int(data['tag_id']), area=data['area'], release_time=data['release_time'], length=data['length']) db.session.add(movie) db.session.commit() flash('添加电影成功', 'ok') return redirect(url_for('admin.movie_add')) return render_template('admin/movie_add.html', form=form)
def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") url = change_filename(file_url) logo = change_filename(file_logo) form.url.data.save(app.config["UP_DIR"] + url) form.logo.data.save(app.config["UP_DIR"] + logo) movie = Movie( title=data["title"], url=url, info=data["info"], logo=logo, star=int(data["star"]), playnum=0, commentnum=0, tag_id=int(data["tag_id"]), area=data["area"], release_time=data["release_time"], length=data["length"] ) db.session.add(movie) db.session.commit() flash("添加电影成功", "ok") return redirect(url_for('admin.movie_add')) return render_template("admin/movie_add.html", form=form)
def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data['title']).count() if movie_count == 1: flash('标题已存在!', 'err') return redirect(url_for('admin.movie_add')) file_url = secure_filename(form.url.data.filename) # 获取后缀 file_logo = secure_filename(form.logo.data.filename) if not os.path.exists(app.config['UP_DIR']): os.makedirs(app.config['UP_DIR']) os.chmod(app.config['UP_DIR'], 'rw') url = change_filename(file_url) logo = change_filename(file_logo) form.url.data.save(app.config['UP_DIR'] + url) form.logo.data.save(app.config['UP_DIR'] + logo) movie = Movie( title=data['title'], url=url, info=data['info'], logo=logo, star=int(data['star']), playnum=0, commentnum=0, tag_id=int(data['tag_id']), area=data['area'], # release_time=data['release_time'], length=data['length']) db.session.add(movie) db.session.commit() flash("添加成功!", "ok") return redirect(url_for('admin.movie_add')) return render_template("admin/movie_add.html", form=form)
def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data if not os.path.exists(app.config["UP_DIR"]): # 创建“上传文件夹” os.makedirs(app.config["UP_DIR"]) # 创建目录 os.chmod( app.config["UP_DIR"], 644 ) # 授权 r=4, w=2, r=1 # os.chmod(app.config["UP_DIR"], 'rw') file_url = secure_filename(form.url.data.filename) # werkzeu工具安全文件名 url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + url) # 保存文件操作 file_logo = secure_filename(form.logo.data.filename) logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + logo) # 保存文件操作 movie = Movie(title=data["title"], url=url, logo=logo, info=data["info"], star=int(data["star"]), playnum=0, commentnum=0, tag_id=int(data["tag_id"]), area=data["area"], release_time=data["release_time"], length=data["length"]) db.session.add(movie) db.session.commit() flash("电影添加成功", "ok") return redirect(url_for("admin.movie_list", page=1)) return render_template("admin/movie_add.html", form=form)
def movie_add(): form = MovieForm() if form.validate_on_submit(): print(form.url.data) file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) if not os.path.exists(app.config['UP_DIR']): os.mkdir(app.config['UP_DIR']) url = change_filename(file_url) logo = change_filename(file_logo) form.url.data.save(os.path.join(app.config['UP_DIR'], url)) form.logo.data.save(os.path.join(app.config['UP_DIR'], logo)) data = form.data movie = Movie(title=data['title'], url=url, info=data['info'], logo=logo, speaker=data['speaker'], speaker_info=data['speaker_info']) db.session.add(movie) db.session.commit() flash('添加电影成功!', "ok") return redirect(url_for('admin.movie_add')) return render_template("admin/movie_add.html", form=form)
def movie_edit(id=None): """电影编辑""" form = MovieForm() form.submit.label.text = "编辑" # 编辑状态,url和logo已经存在,表单不必进行过滤 form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) if request.method == 'GET': form.info.data = movie.info form.star.data = movie.star form.tag_id.data = movie.tag_id if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data['title']).count() # 片名已经存在,不必重复进行编辑 if movie_count == 1 and movie.title != data['title']: flash("片名已经存在,请重新编辑!", "err") return redirect(url_for('admin.movie_edit', id=id)) # 如果目录不存在,再创建一个多级目录 if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], 'rw') # 上传视频 if form.url.data != '': # 说明已经重新上传了视频 # 先删除本地的视频 if os.path.exists(app.config['UP_DIR'] + movie.url): os.remove(app.config['UP_DIR'] + movie.url) print("rm-movie.url:" + app.config['UP_DIR'] + movie.url) file_url = secure_filename(form.url.data.filename) print("file_url:"+file_url) movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + movie.url) print("save-movie.url:" + app.config['UP_DIR'] + movie.url) # 上传logo if form.logo.data != '': # 说明已经重新上传了封面 # 先删除本地的封面 if os.path.exists(app.config['UP_DIR'] + movie.logo): os.remove(app.config['UP_DIR'] + movie.logo) print("rm-movie.logo:" + app.config['UP_DIR'] + movie.logo) file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) movie.title = data['title'] movie.info = data['info'] movie.star = data['star'] movie.tag_id = data['tag_id'] movie.area = data['area'] movie.length = data['length'] movie.release_time = data['release_time'] db.session.add(movie) db.session.commit() flash("修改电影成功!", "ok") return redirect(url_for('admin.movie_edit', id=id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(movie_id=None): if movie_id is None: movie_id = 1 form = MovieForm() form.tag_id.choices = [(v.id, v.name) for v in Tag.query.all()] form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(movie_id)) print('查询操作成功') if request.method == 'GET': # 在修改前在修改栏里面显示原来的值作为默认值 # --> fixme 不能在编辑页面中的默认编辑框中保存默认文件 form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit() is True: data = form.data # 对片名进行唯一性检查,如果已经存在该片名则返回错误信息返回编辑页面 movie_count = Movie.query.filter_by(title=data['title']).count() if movie_count is not 0 and movie.title != data['title']: flash('该片名已经存在', 'err') return redirect(url_for('admin.movie_edit', movie_id=movie_id)) movie.title = data['title'] # 修改 movie.star = data['star'] movie.info = data['info'] movie.tag_id = data['tag_id'] movie.area = data['area'] movie.length = data['length'] movie.release_time = data['release_time'] # 将视频以及图片文件保存到本地 path = create_app().config['UP_DIR'] if os.path.exists(path) is False: os.makedirs(path) # 当保存路径不存在时进行创建 √ if form.url.data.filename is not '': movie.url = change_filename(form.url.data.filename) form.url.data.save(path + movie.url) if form.logo.data.filename is not '': movie.logo = change_filename(form.logo.data.filename) form.logo.data.save(path + movie.logo) # logo = change_filename(form.logo.data.filename) # # form.url.data.save(path + url) # form.logo.data.save(path + logo) db.session.add(movie) # 保存属性名以及属性内容(str) db.session.commit() flash('修改成功', 'ok') return redirect(url_for('admin.movie_edit', movie_id=movie.id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] # 因为可以不做更改,所以不需要校验 form.logo.validators = [] movie = Movie.query.get_or_404(id) page = page_data.page if page_data is not None else 1 if request.method == "GET": form.info.data = movie.info form.star.data = movie.star form.tag_id.data = movie.tag_id if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count == 1 and movie.title != data['title']: flash("片名已经存在!", "err") return redirect(url_for("admin.movie_edit", id=id)) if not os.path.exists(app.config['UP_DIR']): # 存放目录不存在则创建 os.makedirs(app.config['UP_DIR']) os.chmod(app.config['UP_DIR'], "rw") if form.url.data.filename != '': old_url = movie.url file_url = secure_filename( form.url.data.filename) # 获取并转化为安全的电影文件名 movie.url = change_filename(file_url) # 调用函数生成新的文件名 form.url.data.save(app.config['UP_DIR'] + movie.url) # 保存上传的数据 if os.path.exists(app.config['UP_DIR'] + old_url): # 删除旧文件 os.remove(app.config['UP_DIR'] + old_url) if form.logo.data.filename != '': old_logo = movie.logo file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config['UP_DIR'] + movie.logo) if os.path.exists(app.config['UP_DIR'] + old_logo): os.remove(app.config['UP_DIR'] + old_logo) oplog = Oplog(admin_id=session["admin_id"], ip=request.remote_addr, reason="修改电影:%s(原名:%s)" % (data["title"], movie.title)) db.session.add(oplog) db.session.commit() movie.title = data["title"] movie.info = data["info"] movie.star = int(data["star"]) movie.tag_id = int(data["tag_id"]) movie.area = data["area"] movie.release_time = data["release_time"] movie.length = data["length"] db.session.add(movie) db.session.commit() flash("修改电影成功!", "ok") return redirect(url_for("admin.movie_list", page=page)) return render_template("admin/movie_edit.html", form=form, movie=movie, page=page)
def movieEdit(id=None): if id is not None: form = MovieForm() movie = Movie.query.get_or_404(id) movie_title = movie.title if request.method == "GET": form.info.data = movie.info form.star.data = movie.star form.tag_id.data = movie.tag_id if form.validate_on_submit(): data = form.data # 获取到视频的地址 file_url = form.url.data.filename # 获取到封面文件 file_logo = form.logo.data.filename # 定义文件的保存 # 文件是否存在 if not os.path.exists(app.config['UP_DIR']): # 如果不存在就创建 os.mkdir(app.config['UP_DIR']) # 对视频的名称进行重命名 url = change_filename(file_url) # 对封面图片进行重命名 logo = change_filename(file_logo) # 保存视频 form.url.data.save(app.config["UP_DIR"] + url) # 保存封面 form.logo.data.save(app.config["UP_DIR"] + logo) # 删除之前的数据, 如果文件不存在,有可能抛出异常 try: # 删除视频文件 os.remove(app.config["UP_DIR"] + movie.url) # 删除封面图 os.remove(app.config["UP_DIR"] + movie.logo) except: pass movie.title = data.get('title') movie.url = url movie.info = data.get('info') movie.logo = logo movie.star = int(data.get('star')) movie.tag_id = int(data.get('tag_id')) movie.arga = data.get('arga') movie.release_time = data.get('release_time') movie.length = data.get('length') db.session.add(movie) db.session.commit() flash("电影修改成功") oplog = OpLog(admin_id=session.get("admin_id"), ip=request.remote_addr, reason="编辑电影:{movie_title}-->{movie}".format( movie_title=movie_title, movie=data.get('title'))) db.session.add(oplog) db.session.commit() return redirect(url_for("admin.movieEdit", id=id)) return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() movie = Movie.query.get_or_404(int(id)) if form.validate_on_submit(): data = form.data flash("电影修改成功", 'ok') redirect(url_for('admin.movie_edit', id=movie.id)) return render_template("admin/movie_edit.html", form=form, movie=movie) # 电影列表 # 编辑上映预告
def movie_edit(id=None): form = MovieForm() # 编辑之前url,logo是存在的,所以不做过滤。 form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) if request.method == 'GET': form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data['title']).count() if movie_count == 1 and movie.title != data['title']: flash("电影片名已经存在!", 'err') return redirect(url_for("admin.movie_edit", id=id)) # 判断文件并且创建文件 if not os.path.exists(app.config["UP_DIR_MOVIE"]): os.makedirs(app.config["UP_DIR_MOVIE"]) os.chmod(app.config["UP_DIR_MOVIE"], "rw") if not os.path.exists(app.config["UP_DIR_MOVIE_IMG"]): os.makedirs(app.config["UP_DIR_MOVIE_IMG"]) os.chmod(app.config["UP_DIR_MOVIE_IMG"], "rw") if form.url.data != "": file_url = str(form.url.data.filename) # 删除原来资源 file_del(app.config["UP_DIR_MOVIE"], movie.url) movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR_MOVIE"] + movie.url) if form.logo.data != "": file_logo = str(form.logo.data.filename) # 删除原来资源 file_del(app.config["UP_DIR_MOVIE_IMG"], movie.logo) movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR_MOVIE_IMG"] + movie.logo) # 操作日志 add_log('原电影《%s》修改成新电影《%s》' % (movie.title, data['title'])) movie.title = data['title'] movie.tag_id = int(data['tag_id']) movie.star = int(data['star']) movie.info = data['info'] movie.area = data['area'] movie.release_time = data['release_time'] movie.length = data['length'] db.session.add(movie) db.session.commit() flash("编辑电影成功!", 'ok') return redirect(url_for("admin.movie_edit", id=id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(id) if request.method == 'GET': form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data['title']).count() if movie_count >= 1 and movie.title != data['title']: flash('修改电影失败,片名重复', 'err') return redirect(url_for('admin.movie_edit', id=movie.id)) if not os.path.exists(app.config['UP_DIR']): os.makedirs(app.config['UP_DIR']) # 创建目录 os.chmod(app.config['UP_DIR'], stat.S_IRWXU) # 授权可读写 if form.url.data != '': file_url = app.config['UP_DIR'] + movie.url if os.path.isfile(file_url): os.remove(file_url) file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) form.url.data.save(app.config['UP_DIR'] + movie.url) if form.logo.data != '': file_logo = app.config['UP_DIR'] + movie.logo if os.path.isfile(file_logo): os.remove(file_logo) file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config['UP_DIR'] + movie.logo) movie.star = data['star'] movie.tag_id = data['tag_id'] movie.info = data['info'] movie.title = data['title'] movie.area = data['area'] movie.length = data['length'] movie.release_time = data['release_time'] oplog = Oplog( admin_id=session['admin_id'], reason='修改电影:%s' % data['title'], ip=request.remote_addr ) db.session.add(movie) db.session.add(oplog) db.session.commit() flash('修改电影成功', 'ok') return redirect(url_for('admin.movie_edit', id=movie.id)) return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_add(): form = MovieForm() username = get_username() if form.validate_on_submit(): data = form.data # 变成一个安全的名称 file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) if not os.path.exists(app.config['UP_DIR']): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], 'rw') url = change_filename(file_url) logo = change_filename(file_logo) # 保存 form.url.data.save(app.config["UP_DIR"] + url) form.logo.data.save(app.config["UP_DIR"] + logo) movie = Movie( title=data['title'], url=url, info=data['info'], logo=logo, playnum=0, commentnum=0, star=int(data['star']), tag_id=int(data['tag_id']), area=data['area'], release_time=data['release_time'], length=data['length'], ) db.session.add(movie) oplog = Oplog( ip=request.remote_addr, admin_id=session["admin_id"], reson='添加电影' + '<' + data['title'] + '>', ) db.session.add(oplog) db.session.commit() flash('添加电影成功', 'ok') return redirect((url_for('admin.movie_add'))) username = get_username() context = { 'username': username } return render_template("admin/movie_add.html", form=form, context=context)
def movie_edit(id=None): form = MovieForm() form.tag_id.choices = [(i.id, i.name) for i in Tag.query.all()] form.url.validators = [] form.logo.validators = [] movie = Movie.query.filter_by(id=id).first_or_404() if request.method == "GET": form.info.data = movie.info form.star.data = movie.star form.tag_id.data = movie.tag_id if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() if movie.title != data["title"] and movie_count == 1: flash("该电影名已经存在", "err") return redirect(url_for("admin.movie_edit", id=id)) # 先用 pypinyin 将中文转为拼音 这样 secure_filename 就不会因为文件名是中文而过滤掉了 # 参考 https://pdf-lib.org/Home/Details/6002 # 保存封面和短片文件 if not os.path.exists(app.config["UPLOAD_DIR"]): os.makedirs(app.config["UPLOAD_DIR"]) os.chmod(app.config["UPLOAD_DIR"], "rw") # 如果表单 url 数据不为空 说明上传了文件 # 如果表单的 url 为空 则 form.url.data 为空 且为 str 类型 if form.url.data: file_url = secure_filename("".join( lazy_pinyin(form.url.data.filename))) movie.url = rename_filename(file_url) form.url.data.save(app.config["UPLOAD_DIR"] + movie.url) # 如果表单 logo 数据不为空 说明上传了文件 # 如果表单的 logo 为空 则 form.logo.data 为空 且为 str 类型 if form.logo.data: file_logo = secure_filename("".join( lazy_pinyin(form.logo.data.filename))) movie.logo = rename_filename(file_logo) form.logo.data.save(app.config["UPLOAD_DIR"] + movie.logo) movie.title = data["title"] movie.info = data["info"] movie.star = data["star"] movie.tag_id = data["tag_id"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("修改电影成功", "ok") return redirect(url_for("admin.movie_edit", id=id)) return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) # 编辑页面参数无法获得和数据库对应的值 if request.method == "GET": form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star # 数据库操作 if form.validate_on_submit(): # 提交表单时进行验证 # 可以修改的数据 data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count == 1: flash("片名已经存在", "err") return redirect(url_for("admin.movie_edit", id=id)) # 如果找不到存放电影的目录,就自动创建一个多级目录 if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) # 建文件夹 os.chmod(app.config["UP_DIR"], "rw") # 给文件授权,让可读可写 # 如果上传的视频不等于空,说明更改了文件 if form.url.data != "": file_url = secure_filename(form.url.data.filename) # 获取url的地址,secure_filename把filename转换成安全的名称 movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + movie.url) # 保存 else: flash("上传的视频不能为空", "err") return redirect(url_for("admin.movie_edit", id=id)) # 如果上传的图片不等于空,说明更改了文件 if form.logo.data != "": file_logo = secure_filename(form.logo.data.filename) # 获取logo的地址 movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) # 保存 else: flash("上传的封面不能为空", "err") return redirect(url_for("admin.movie_edit", id=id)) movie.star = data['star'] movie.tag_id = data['tag_id'] movie.info = data['info'] movie.title = data['title'] movie.area = data['area'] movie.length = data['length'] movie.release_time = data['release_time'] db.session.add(movie) db.session.commit() flash("电影修改成功", "ok") return redirect(url_for("admin.movie_edit", id=movie.id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) if request.method == 'GET': form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data['title']).count() if movie_count > 0 and movie.title != data['title']: flash('片名已经存在', 'err') return redirect(url_for('admin.movie_edit', id=id)) if not os.path.exists(app.config['UP_DIR']): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"]) if form.url.data.filename != '': file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) form.url.data.save(app.config['UP_DIR'] + movie.url) if form.logo.data.filename != '': file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config['UP_DIR'] + movie.logo) movie.title = data['title'] movie.info = data['info'] movie.tag_id = int(data['tag_id']) movie.star = int(data['star']) movie.area = data['area'] movie.release_time = data['release_time'] movie.length = data['length'] db.session.add(movie) db.session.commit() flash("编辑电影成功!", "ok") op_log = Oplog( admin_id=session['admin_id'], ip=request.remote_addr, reason="编辑电影<%s>" % movie['name'] ) db.session.add(op_log) db.session.commit() return redirect(url_for('admin.movie_edit', id=movie.id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] # 根据id查询需要修改的数据 movie = Movie.query.get_or_404(id) # 判断是什么GET请求进行回显下拉选择 if request.method == "GET": form.info.data = movie.info # 对文本域进行赋值 form.tag_id.data = movie.tag_id # 对下拉框回显 form.star.data = movie.star # 对下拉框回显 if form.validate_on_submit(): data = form.data # 判断需要修改的片名是否存在 movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count != 0 and movie.title != data['title']: flash("片名已存在!", 'err') return redirect(url_for('admin.movie_edit', id=id)) # 修改片名与封面 if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") if form.url.data != "": os.remove(app.config['UP_DIR'] + movie.url) file_url = form.url.data.filename movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + movie.url) if form.logo.data != "": os.remove(app.config['UP_DIR'] + movie.logo) file_logo = form.logo.data.filename movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) # 修改的数据 movie.star = data['star'] movie.tag_id = data['tag_id'] movie.info = data["info"] movie.title = data["title"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("修改电影成功", "ok") # 操作日志 oplog = Oplog(admin_id=session['admin_id'], ip=request.remote_addr, reason="修改电影%s" % data['title']) db.session.add(oplog) db.session.commit() return redirect(url_for("admin.movie_edit", id=movie.id)) # movie = movie 为给前台赋值 return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_add(): """ 添加电影 """ form = MovieForm() if form.validate_on_submit(): data = form.data # 获取数据 # 判断片名是否存在 movie = Movie.query.filter_by(title=data["title"]).count() # 说明已经有这个标签了 if movie == 1: flash("片名已存在", "err") return redirect(url_for("admin.movie_add")) # 检测文件安全 file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) # 检测路径,否则创建 if not os.path.exists(app.config["UP_DIR"]): # 创建一个多级目录 os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") # 授权读写 # 处理文件 url = change_filename(file_url) logo = change_filename(file_logo) # 保存文件 form.url.data.save(app.config["UP_DIR"] + url) # 拼接字符串 form.logo.data.save(app.config["UP_DIR"] + logo) movie = Movie(title=data['title'], url=url, info=data['info'], logo=logo, star=int(data['star']), playnum=0, commentnum=0, tag_id=int(data['tag_id']), area=data['area'], length=data['length'], release_time=data['release_time']) db.session.add(movie) db.session.commit() flash("添加电影成功!", "ok") return redirect(url_for('admin.movie_add')) return render_template('admin/movie_add.html', form=form) # 电影添加
def movie_edit(id=None): form = MovieForm() form.tag_id.choices = [(v.id, v.name) for v in Tag.query.all()] movie = Movie.query.get_or_404(id) if request.method == "GET": form.title.flags.required = False form.url.flags.required = False form.info.flags.required = False form.logo.flags.required = False form.star.flags.required = False form.tag_id.flags.required = False form.area.flags.required = False form.length.flags.required = False form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star form.url.validators = [] form.logo.validators = [] if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by( title=data["title"]).count() # title是唯一unique if movie.title != data["title"] and movie_count == 1: flash("电影已存在", category="error") else: if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") if form.url.data != '': file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + movie.url) if form.logo.data != '': file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) try: movie.title = data["title"] movie.info = data['info'] movie.tag_id = data["tag_id"] movie.star = data["star"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("电影修改成功", category="ok") except Exception as e: print(e) flash("电影修改失败", category="error") db.session.rollback() return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() # 已经存在于数据库且默认可以为空的项,将其validators置为空 form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) # 以下3项信息需手动查询并赋值给表单才能在页面显示正确结果,如果用form.xxx(value=movie.xxx) 这种 # 形式将无法显示真实结果,原因未知 if request.method == "GET": form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data.get('title')).count() if movie_count == 1 and movie.title != data.get('title'): flash("片名已经存在!", "err") return redirect(url_for('admin.movie_edit', id=id)) # 获取需上传文件的修改项 if form.url.data.filename != "": file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) form.url.data.save(UP_DIR + movie.url) if form.logo.data.filename != "": file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(UP_DIR + movie.logo) # 获取其他修改项 movie.star = data.get('star') movie.tag_id = data.get('tag_id') movie.info = data.get('info') movie.title = data.get('title') movie.area = data.get('area') movie.length = data.get('length') movie.release_time = data.get('release_time') db.session.add(movie) db.session.commit() flash("修改电影成功!", "ok") return redirect(url_for('admin.movie_edit', id=movie.id)) return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() # 这个是编辑的,所以url和logo肯定有的,所以不用查询 form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) # 编写验证逻辑 if request.method == "GET": form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data # 注意Movie,是大写的 movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count == 1 and movie.title != data["title"]: flash("片名已经存在!", "err") return redirect(url_for("admin.movie_edit", id=id)) if not os.path.exists(app.config["UP_DIR"]): # 创建文件目录 os.makedirs(app.config["UP_DIR"]) # 增加读写的权限 os.chmod(app.config["UP_DIR"], "rw") # --------------url if form.url.data.filename != "": # 不为空,说明更改过了图片 file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) movie_url_del = movie.url form.url.data.save(app.config["UP_DIR"] + movie.url) # --------------logo if form.logo.data.filename != "": # 不为空,说明更改过了logo file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) movie_logo_del = movie.logo form.logo.data.save(app.config["UP_DIR"] + movie.logo) movie.star = data["star"] movie.tag_id = data["tag_id"] movie.info = data["info"] movie.title = data["title"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("修改电影成功!", "ok") return redirect(url_for("admin.movie_edit", id=id)) return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_add(): form = MovieForm() form.tag_id.choices = [(i.id, i.name) for i in Tag.query.all()] if form.validate_on_submit(): data = form.data # 判断是否标题重复 movie = Movie.query.filter_by(title=data["title"]).count() if movie == 1: flash("该电影已经存在", "err") return render_template("admin/movie_add.html", form=form) # 先用 pypinyin 将中文转为拼音 这样 secure_filename 就不会因为文件名是中文而过滤掉了 # 参考 https://pdf-lib.org/Home/Details/6002 # 保存封面和短片文件 if not os.path.exists(app.config["UPLOAD_DIR"]): os.makedirs(app.config["UPLOAD_DIR"]) os.chmod(app.config["UPLOAD_DIR"], "rw") file_url = secure_filename("".join(lazy_pinyin( form.url.data.filename))) url = rename_filename(file_url) form.url.data.save(app.config["UPLOAD_DIR"] + url) file_logo = secure_filename("".join( lazy_pinyin(form.logo.data.filename))) logo = rename_filename(file_logo) form.logo.data.save(app.config["UPLOAD_DIR"] + logo) movie = Movie( title=data["title"], url=url, info=data["info"], logo=logo, star=int(data["star"]), playnum=0, commentnum=0, tag_id=int(data["tag_id"]), area=data["area"], release_time=data["release_time"], length=data["length"], uuid=uuid.uuid4().hex, ) db.session.add(movie) oplog = Oplog(admin_id=session["admin_id"], ip=request.remote_addr, reason="添加电影:{0}".format(data["title"])) db.session.add(oplog) db.session.commit() flash("添加电影成功", "ok") return redirect(url_for("admin.movie_add")) return render_template("admin/movie_add.html", form=form)
def movie_add(): form = MovieForm() # 上传电影操作 if form.validate_on_submit(): # 获取表单数据 data = form.data # 查找电影看是否存在 movie = Movie.query.filter_by(title=data["title"]).count() if movie != 0: flash("您要添加的电影已存在库中", "err") return redirect(url_for('admin.movie_add')) # 如果库中不存在电影则添加 # 对上传文件进行处理 file_url = form.url.data.filename # print(file_url) file_logo = form.logo.data.filename # print(file_logo) # 上传路径是否存在 if not os.path.exists(app.config['UP_DIR']): os.makedirs(app.config['UP_DIR']) # 创建文件目录 os.chmod(app.config['UP_DIR'], 'rw') # 读写权限 # 改名 url = change_filename(file_url) logo = change_filename(file_logo) # 保存 form.url.data.save(app.config['UP_DIR'] + url) form.logo.data.save(app.config['UP_DIR'] + logo) movie = Movie( title=data["title"], url=url, # 文件类型 info=data['info'], logo=logo, # 文件类型 star=int(data["star"]), # 星级需要转换int playnum=0, commentnum=0, tag_id=data['tag_id'], area=data['area'], release_time=data['release_time'], length=data['length']) # 保存数据库 db.session.add(movie) db.session.commit() flash("添加电影%s成功" % movie.title, "ok") # 操作日志 oplog = Oplog(admin_id=session['admin_id'], ip=request.remote_addr, reason="添加电影%s" % data['title']) db.session.add(oplog) db.session.commit() return redirect(url_for('admin.movie_add')) return render_template("admin/movie_add.html", form=form)
def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data movie = Movie.query.filter_by(title=data['title']).count() if movie == 1: flash('该电影已存在!', 'err') # 'err':表示错误信息 return redirect(url_for('admin.movie_add')) # 保存上传的电影视频及封面 file_url = secure_filename(form.url.data.filename) # 生成上传的电影视频的文件名,并安全加密 file_logo = secure_filename(form.logo.data.filename) # 生成上传的电影封面的文件名,并安全加密 if not os.path.exists(app.config['UP_DIR']): # 没有就创建文件夹 os.makedirs(app.config['UP_DIR']) # os.chmod(app.config['UP_DIR'], 'rw') # 给文件夹可读可写的权限,这样才能保存文件呀 os.chmod(app.config['UP_DIR'], stat.S_IRWXU) # 给文件夹可读可写的权限,这样才能保存文件呀 'rw' # 修改为固定格式的文件名 url = change_filename(file_url) logo = change_filename(file_logo) # 保存文件 form.url.data.save(app.config['UP_DIR'] + url) form.logo.data.save(app.config['UP_DIR'] + logo) # 添加新电影入库 movie = Movie( title=data['title'], url=url, info=data['info'], logo=logo, star=int(data['star']), playnum=0, commentnum=0, tag_id=int(data['tag_id']), area=data['area'], release_time=data['release_time'], length=data['length'] ) db.session.add(movie) db.session.commit() flash('添加新电影成功!', 'ok') # 'ok':表示成功信息 # 将添加电影操作保存到操作日志列表 oplog = Oplog( admin_id=session['admin_id'], ip=request.remote_addr, reason='添加电影:《' + movie.title + '》' ) db.session.add(oplog) db.session.commit() return redirect(url_for('admin.movie_add')) return render_template('admin/movie_add.html', form=form)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) if request.method == 'GET': # form.title.flags.required = False form.url.flags.required = False form.logo.flags.required = False form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data['title']).count() if movie_count == 1 and movie.title != data['title']: flash('片名已经存在', 'err') return redirect(url_for('admin.movie_edit', id=movie.id)) if not os.path.exists(app.config['UP_DIR']): # 创建文件夹 os.makedirs(app.config['UP_DIR']) os.chmod(app.config['UP_DIR'], 'rw') if form.url.data != '': file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) # 修改文件名 form.url.data.save(app.config['UP_DIR'] + movie.url) if form.logo.data != '': file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config['UP_DIR'] + movie.logo) movie.star = data['star'] movie.tag_id = data['tag_id'] movie.info = data['info'] movie.title = data['title'] movie.area = data['area'] movie.length = data['length'] movie.release_time = data['release_time'] db.session.add(movie) db.session.commit() flash('电影修改成功', 'ok') oplog = Oplog(admin_id=session['admin_id'], ip=request.remote_addr, reason='修改 %s 电影' % (movie.title)) db.session.add(oplog) db.session.commit() return redirect(url_for('admin.movie_edit', id=movie.id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) if request.method == "GET": form.info.data = movie.description form.star.data = movie.star form.tag_id.data = movie.tag_id if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() # 判断电影是否修改为已存在的电影 if movie_count == 1 and movie.title != data["title"]: flash("片名已存在", "Error") return redirect(url_for("admin.movie_edit", id=movie.id)) if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") # 判断是否更改logo if form.logo.data: file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) movie.title = data["title"] movie.url = data["url"] movie.description = data["info"] movie.tag_id = data["tag_id"] movie.star = data["star"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("修改电影成功", "OK") # 添加操作日志 operatelog = OperateLog(admin_id=session["admin_id"], ip=request.remote_addr, reason="修改电影:" + str(movie.id)) db.session.add(operatelog) db.session.commit() return redirect(url_for('admin.movie_edit', id=movie.id)) return render_template("admin/movie_edit.html", form=form, movie=movie)
def movie_edit(id=None): tags = Tag.query.all() form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) if request.method == "GET": form.info.data = movie.info form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count == 1 and movie.title != data["title"]: flash("片名已经存在!", "err") return redirect(url_for('admin.movie_edit', id=id)) if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") # 视频文件保存 if hasattr(form.url.data, 'filename'): movie.url = change_filename(secure_filename( form.url.data.filename)) form.url.data.save(app.config["UP_DIR"] + movie.url) # 封面保持 if hasattr(form.logo.data, 'filename'): movie.logo = change_filename( secure_filename(form.logo.data.filename)) form.logo.data.save(app.config["UP_DIR"] + movie.logo) movie.star = int(data["star"]) movie.info = data["info"] movie.tag_id = int(request.values.get("tag_id")) movie.title = data["title"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("修改电影成功!", "ok") recod = "修改电影ID-%d" % (id) oplog_handle(recod) return redirect(url_for('admin.movie_list', page=1)) return render_template("admin/movie_edit.html", form=form, movie=movie, tags=tags)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) # 下面的用于解决初始内容(修改前的初始内容) if request.method == "GET": form.title.data = movie.title form.url.data = movie.url form.logo.data = movie.logo form.area.data = movie.area form.length.data = movie.length form.releasse_time.data = movie.releasse_time form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count == 1 and movie.title != data["title"]: flash("片名已经存在", 'err') return redirect(url_for('admin.movie_edit', id=movie.id)) # 查看一下路径是否存在,如果不存在,则创建路劲 if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") # 更改图片和视频 if form.url.data.filename != "": file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + movie.url) if form.logo.data.filename != "": file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) movie.star = data["star"] movie.releasse_time = data["releasse_time"] movie.tag_id = data["tag_id"] movie.info = data["info"] movie.title = data["title"] movie.area = data["area"] movie.length = data["length"] db.session.add(movie) db.session.commit() flash("修改成功", 'ok') return redirect(url_for('admin.movie_edit', id=movie.id)) # 将movie传进来用于设置初始值 return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_add(): form = MovieForm() if form.validate_on_submit(): data = form.data if Movie.query.filter_by(title=data['title']).count() == 1: flash('电影片名已存在', category='err') return redirect(url_for('admin.movie_add')) # 获取上传文件的名称 file_url = secure_filename(form.url.data.filename) file_logo = secure_filename(form.logo.data.filename) # 文件保存路径操作 file_save_path = app.config['UP_DIR'] # 文件上传保存路径 if not os.path.exists(file_save_path): os.makedirs(file_save_path) import stat os.chmod(file_save_path, stat.S_IRWXU) # 授予可读写权限 url = change_filename(file_url) logo = change_filename(file_logo) # 保存文件,需要给文件的保存路径+文件名 form.url.data.save(file_save_path + url) form.logo.data.save(file_save_path + logo) movie = Movie( title=data['title'], url=url, info=data['info'], logo=logo, star=int(data['star']), play_num=0, comment_num=0, tag_id=int(data['tag_id']), area=data['area'], release_time=data['release_time'], length=data['length'] ) db.session.add(movie) db.session.commit() flash('添加电影成功', 'ok') oplog = Oplog( admin_id=session['admin_id'], ip=request.remote_addr, reason='添加电影:%s' % data['title'] ) db.session.add(oplog) db.session.commit() return redirect(url_for('admin.movie_add')) return render_template('admin/movie_add.html', form=form)
def movie_edit(id): form = MovieForm() movie = Movie.query.get_or_404(int(id)) # 修改前的tag # 由于有些前段的html标签没有value属性,不是直接渲染,所以需要后台添加数据到前端 if request.method == "GET": form.tag_id.data = movie.tag_id form.star.data = movie.star form.info.data = movie.info if form.validate_on_submit(): data = form.data t = Movie.query.filter_by(title=form.title.data).count() # 新的name在数据库中的数量 # 传进来的title和原来的title不一样并且库里面没有刚刚传进来的title,这时候更新操作 if t == 0: movie.title = data['title'] movie.info = data['info'] movie.star = int(data['star']), movie.tag_id = int(data['tag_id']), movie.area = data['area'], movie.lenth = data['lenth'], movie.release_time = data['release_time'], # 有新url提交说明有新数据要上传 if form.url.data is not None: try: os.remove(os.path.join(app.config['UP_MOVIE_DIR'], movie.url)) except: pass file_url = secure_filename(form.url.data.filename) url = change_upload_filename(file_url) movie.url = url form.url.data.save(os.path.join(app.config['UP_MOVIE_DIR'], url)) # 有新logo提交说明有新数据要上传 if form.logo.data is not None: try: os.remove(os.path.join(app.config['UP_PIC_DIR'], movie.logo)) except: pass file_logo = secure_filename(form.url.data.filename) logo = change_upload_filename(file_logo) movie.logo = logo form.url.data.save(os.path.join(app.config['UP_PIC_DIR'], logo)) db.session.add(movie) db.session.commit() flash("标签修改成功", "ok") return redirect(url_for('admin.movie_edit', id=movie.id)) flash("标题已存在", 'err') return redirect(url_for('admin.movie_edit', id=movie.id)) return render_template('admin/movie_edit.html', form=form, movie=movie)
def movie_edit(id=None): form = MovieForm() form.url.validators = [] form.logo.validators = [] movie = Movie.query.get_or_404(int(id)) url = movie.url logo = movie.logo if request.method == "GET": form.info.data = movie.info form.tag_id.data = movie.tag_id form.star.data = movie.star if form.validate_on_submit(): data = form.data movie_count = Movie.query.filter_by(title=data["title"]).count() if movie_count == 1 and movie.title != data["title"]: flash("片名已经存在!", "err") return redirect(url_for('admin.movie_edit', id=id)) if not os.path.exists(app.config["UP_DIR"]): os.makedirs(app.config["UP_DIR"]) os.chmod(app.config["UP_DIR"], "rw") if form.url.data != "": file_url = secure_filename(form.url.data.filename) movie.url = change_filename(file_url) form.url.data.save(app.config["UP_DIR"] + movie.url) if os.path.exists(app.config["UP_DIR"] + url): os.remove(app.config["UP_DIR"] + url) if form.logo.data != "": file_logo = secure_filename(form.logo.data.filename) movie.logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + movie.logo) if os.path.exists(app.config["UP_DIR"] + logo): os.remove(app.config["UP_DIR"] + logo) movie.star = data["star"] movie.tag_id = data["tag_id"] movie.info = data["info"] movie.title = data["title"] movie.area = data["area"] movie.length = data["length"] movie.release_time = data["release_time"] db.session.add(movie) db.session.commit() flash("电影修改成功!", "ok") return redirect(url_for("admin.movie_edit", id=movie.id)) return render_template("admin/movie_edit.html", form=form, movie=movie)