def new_tag(photo_id): """ 新标签 :param photo_id: 图片id """ logger.info('url = ' + str(request.url)) photo = Photo.query.get_or_404(photo_id) if current_user != photo.author and not current_user.can("MODERATE"): abort(403) form = TagForm() if form.validate_on_submit(): # 添加新标签时,如果有多个标签,会以空格隔开 for name in form.tag.data.split(): # 查询,判断标签是否已经存在 tag = Tag.query.filter_by(name=name).first() # 如果不存在,则先创建标签 if tag is None: tag = Tag(name=name) logger.debug('用户:{}添加了新标签:{}'.format(current_user.username, name)) db.session.add(tag) db.session.commit() # 将标签加入到photo的标签中 if tag not in photo.tags: photo.tags.append(tag) db.session.commit() flash("标签添加成功!", "success") flash_errors(form) return redirect(url_for(".show_photo", photo_id=photo_id))
def new_tag(photo_id): photo = Photo.query.get_or_404(photo_id) if current_user != photo.author: abort(403) form = TagForm() if form.validate_on_submit(): for name in form.tag.data.split(): tag = Tag.query.filter_by(name=name).first() if tag is None: tag = Tag(name=name) db.session.add(tag) if tag not in photo.tags: photo.tags.append(tag) db.session.commit() flash_errors(form) return redirect(url_for('.show_photo', photo_id=photo_id))
def show_photo(photo_id): """ 显示图片详细信息 :param photo_id: 图片id """ logger.info('url = ' + str(request.url)) photo = Photo.query.get_or_404(photo_id) page = request.args.get("page", 1, type=int) per_page = current_app.config["ALBUMY_COMMENT_PER_PAGE"] # 获取该图片下的所有评论 pagination = ( Comment.query.with_parent(photo) .order_by(Comment.timestamp.asc()) .paginate(page, per_page) ) comments = pagination.items comment_form = CommentForm() # 描述 description_form = DescriptionForm() # 标签 tag_form = TagForm() description_form.description.data = photo.description return render_template( "main/photo.html", photo=photo, comment_form=comment_form, description_form=description_form, tag_form=tag_form, pagination=pagination, comments=comments, )
def show_photo(photo_id): photo = Photo.query.get_or_404(photo_id) page = request.args.get('page', 1, type=int) per_page = current_app.config['ALBUMY_COMMENT_PER_PAGE'] pagination = Comment.query.with_parent(photo).order_by(Comment.timestamp.asc()).paginate(page, per_page) comments = pagination.items comment_form = CommentForm() description_form = DescriptionForm() tag_form = TagForm() description_form.description.data = photo.description if current_user.role.name != 'Doctor': doctors_leave_comment = [] doctor_ids_leave_comment = [] for comment in photo.comments: print(comment.author) if not comment.author in doctors_leave_comment: if comment.author.role.name == 'Doctor': doctors_leave_comment.append(comment.author) doctor_ids_leave_comment.append(comment.author.id) doctors_not_leave_comment = User.query.join(Role).filter(Role.name == 'Doctor').filter( ~User.id.in_(doctor_ids_leave_comment)).all() return render_template('main/photo.html', photo=photo, comment_form=comment_form, description_form=description_form, tag_form=tag_form, pagination=pagination, comments=comments, doctors_leave_comment=doctors_leave_comment, doctors_not_leave_comment=doctors_not_leave_comment) else: invite = photo.invites.filter(Invite.user_id == current_user.id, Invite.status == False).first() return render_template('main/photo.html', photo=photo, comment_form=comment_form, description_form=description_form, tag_form=tag_form, pagination=pagination, comments=comments, invite=invite)
def new_tag(photo_id): photo = Photo.query.get_or_404(photo_id) if current_user != photo.author and not current_user.can('MODERATE'): abort(403) form = TagForm() if form.validate_on_submit(): for name in form.tag.data.split(): tag = Tag.query.filter_by(name=name).first() if tag is None: tag = Tag(name=name) photo.tags.append(tag) db.session.commit() flash('Tag added', 'success') flash_errors(form) return redirect(url_for('main.show_photo', photo_id=photo_id))
def new_tag(photo_id): photo = Photo.query.get_or_404(photo_id) if current_user != photo.author: abort(403) tag_form = TagForm() if tag_form.validate_on_submit(): tag_names = tag_form.tag.data.split() for tag_name in tag_names: tag = Tag.query.filter_by(name=tag_name).first() if not tag: tag = Tag(name=tag_name) db.session.add(tag) # db.session.commit() if tag not in photo.tags: photo.tags.append(tag) db.session.commit() flash("Tag added.", 'success') flash_errors(tag_form) return redirect(url_for('.show_photo', photo_id=photo_id))
def show_photo(photo_id): photo = Photo.query.get_or_404(photo_id) page = request.args.get('page', 1, type=int) per_page = current_app.config['ALBUMY_COMMENT_PER_PAGE'] pagination = Comment.query.with_parent(photo).order_by(Comment.timestamp.asc()).paginate(page, per_page) comments = pagination.items comment_form = CommentForm() description_form = DescriptionForm() tag_form = TagForm() description_form.description.data = photo.description return render_template('main/photo.html', photo=photo, comment_form=comment_form, description_form=description_form, tag_form=tag_form, pagination=pagination, comments=comments)