def movie_add(): form = MovieForm() # 查询数据库标签并赋值给表单,此方法可以实时同步数据库的标签数据 # 避免新添加的标签无法显示 form.tag_id.choices = Tags.get_all_tags() if request.method == "POST": if form.validate_on_submit(): data = form.data # 若已经存在则不再添加 if Movie.query.filter( or_(Movie.logo == data['logo'], Movie.url == data['url'], Movie.title == data['title'])).all(): flash("电影已经存在,请不要重复添加", "err") else: with db.auto_commit(): 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) new_movie = Movie(title=data['title'], url=url, logo=logo, info=data['info'], star=int(data['star']), tag_id=int(data['tag_id']), area=data['area'], release_time=data['release_time'], length=data['length']) db.session.add(new_movie) # 记录电影添加操作 new_adminlog = OpLog(admin_id=session['id'], ip=session['login_ip'], reason="添加电影: 《" + new_movie.title + "》") db.session.add(new_adminlog) flash("电影添加成功", "addok") return redirect(url_for("admin.movie_add")) else: flash("电影添加失败", 'err') return redirect(url_for("admin.movie_add")) return render_template("admin/movie_add.html", form=form)
def movie_edit(id=None): form = EditMovieForm() # 查询数据库标签并赋值给表单,此方法可以实时同步数据库的标签数据 # 避免新添加的标签无法显示 form.tag_id.choices = Tags.get_all_tags() movie = Movie.query.filter_by(id=id).first() if request.method == "POST": if form.validate_on_submit(): data = form.data with db.auto_commit(): 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") logo = change_filename(file_logo) form.logo.data.save(app.config["UP_DIR"] + logo) movie.title = data['title'], movie.logo = logo, 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) # 记录编辑电影操作 new_adminlog = OpLog(admin_id=session['id'], ip=session['login_ip'], reason="编辑电影: 《" + data['title'] + "》") db.session.add(new_adminlog) flash("电影编辑成功", "ok") return redirect(url_for("admin.movie_edit", id=id)) else: flash("电影编辑失败", 'err') return redirect(url_for("admin.movie_edit", id=id)) return render_template("admin/movie_edit.html", form=form)