Esempio n. 1
0
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))
Esempio n. 2
0
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))
Esempio n. 3
0
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,
	)
Esempio n. 4
0
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)
Esempio n. 5
0
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))
Esempio n. 6
0
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))
Esempio n. 7
0
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)