Esempio n. 1
0
	def get_queryset(self, **kwargs):
		forum = self.kwargs['forum']
                thread = self.kwargs['thread']
		f = get_object_or_404(Forum, slug=forum)
		t = get_object_or_404(Thread, pk=thread)
		p = t.post_set.all().order_by('-time')[:1]

		if t.closed:
			return HttpResponseRedirect('/accounts/login?next=%s' % request.path)

		if request.method == 'POST':
			form = create_newpostform(request)

			if form.is_valid():
				if request.user.is_authenticated() or form.login(request):
					p = Post(
						thread=t, 
						author=request.user,
						body=form.cleaned_data['body'],
						time=datetime.now(),
						)
					if form.data.has_key(u'post'):
						p.save()
						return HttpResponseRedirect(p.get_absolute_url())
					else:
						return render(request, 'community/thread.html',{
								'forum': f,
								'form': form,
								'thread': t,
								'posting': p,
								'form_action' : ''})
		else:
			form = create_newpostform(request)
		return p
Esempio n. 2
0
def newthread(request, forum):
    """
	Rudimentary post function.
        
	Only allows a user to post if they're logged in.
	"""
    f = get_object_or_404(Forum, slug=forum)
    t = f.thread_set.all().order_by("thread_latest_post")[:1]

    if request.method == "POST":
        form = create_newthreadform(request)
        if form.is_valid():
            if request.user.is_authenticated() or form.login(request):
                t = Thread(forum=f, title=form.cleaned_data["title"])
                if form.data.has_key(u"post"):
                    t.save()
                p = Post(thread=t, author=request.user, body=form.cleaned_data["body"], time=datetime.now())
                if form.data.has_key(u"post"):
                    p.save()
                    return HttpResponseRedirect(t.get_absolute_url())
                else:
                    return render_to_response(
                        "community/thread_list.html",
                        RequestContext(
                            request, {"posting": p, "forum": f, "form": form, "form_action": "", "thread": t}
                        ),
                    )
    else:
        form = create_newthreadform(request)

    return render_to_response(
        "community/thread_list.html",
        RequestContext(request, {"forum": f, "form": form, "form_action": "", "threads": t}),
    )
Esempio n. 3
0
def reply(request, forum, thread):
    """
	If a thread isn't closed, and the user is logged in, post a reply
	to a thread. Note we don't have "nested" replies at this stage.
	"""
    f = get_object_or_404(Forum, slug=forum)
    t = get_object_or_404(Thread, pk=thread)
    p = t.post_set.all().order_by('-time')[:1]

    if t.closed:
        return HttpResponseRedirect('/accounts/login?next=%s' % request.path)

    if request.method == 'POST':
        form = create_newpostform(request)

        if form.is_valid():
            if request.user.is_authenticated() or form.login(request):
                p = Post(
                    thread=t,
                    author=request.user,
                    body=form.cleaned_data['body'],
                    time=datetime.now(),
                )
                if form.data.has_key(u'post'):
                    p.save()
                    return HttpResponseRedirect(p.get_absolute_url())
                else:
                    return render_to_response(
                        'community/thread.html',
                        RequestContext(
                            request, {
                                'forum': f,
                                'form': form,
                                'thread': t,
                                'posting': p,
                                'form_action': ''
                            }))
    else:
        form = create_newpostform(request)

    return list_detail.object_list(request,
                                   paginate_by=10,
                                   queryset=p,
                                   template_name='community/thread.html',
                                   extra_context={
                                       'forum': f,
                                       'form': form,
                                       'thread': t,
                                       'form_action': ''
                                   })
Esempio n. 4
0
def newthread(request, forum):
    """
	Rudimentary post function.
        
	Only allows a user to post if they're logged in.
	"""
    f = get_object_or_404(Forum, slug=forum)
    t = f.thread_set.all().order_by('thread_latest_post')[:1]

    if request.method == 'POST':
        form = create_newthreadform(request)
        if form.is_valid():
            if request.user.is_authenticated() or form.login(request):
                t = Thread(
                    forum=f,
                    title=form.cleaned_data['title'],
                )
                if form.data.has_key(u'post'):
                    t.save()
                p = Post(
                    thread=t,
                    author=request.user,
                    body=form.cleaned_data['body'],
                    time=datetime.now(),
                )
                if form.data.has_key(u'post'):
                    p.save()
                    return HttpResponseRedirect(t.get_absolute_url())
                else:
                    return render_to_response(
                        'community/thread_list.html',
                        RequestContext(
                            request, {
                                'posting': p,
                                'forum': f,
                                'form': form,
                                'form_action': '',
                                'thread': t
                            }))
    else:
        form = create_newthreadform(request)

    return render_to_response(
        'community/thread_list.html',
        RequestContext(request, {
            'forum': f,
            'form': form,
            'form_action': '',
            'threads': t
        }))
Esempio n. 5
0
def newthread(request, forum):
	"""
	Rudimentary post function.
        
	Only allows a user to post if they're logged in.
	"""
	f = get_object_or_404(Forum, slug=forum)
	t = f.thread_set.all().order_by('thread_latest_post')[:1]

	if request.method == 'POST':
		form = create_newthreadform(request)
		if form.is_valid():
			if request.user.is_authenticated() or form.login(request):
				t = Thread(
					forum=f,
					title=form.cleaned_data['title'],
				)
				if form.data.has_key(u'post'):
					t.save()
				p = Post(
					thread=t,
					author=request.user,
					body=form.cleaned_data['body'],
					time=datetime.now(),
				)
				if form.data.has_key(u'post'):
					p.save()
					return HttpResponseRedirect(t.get_absolute_url())
				else:
					return render_to_response('community/thread_list.html',
							RequestContext(request, {
							'posting' : p,
							'forum': f,
							'form': form,
							'form_action' : '',
							'thread': t
							}))
	else:
		form = create_newthreadform(request)
	
	return render_to_response('community/thread_list.html',
			RequestContext(request, {
			'forum': f,
			'form': form,
			'form_action' : '',
			'threads': t
			}))
Esempio n. 6
0
def reply(request, forum, thread):
	"""
	If a thread isn't closed, and the user is logged in, post a reply
	to a thread. Note we don't have "nested" replies at this stage.
	"""
	f = get_object_or_404(Forum, slug=forum)
	t = get_object_or_404(Thread, pk=thread)
	p = t.post_set.all().order_by('-time')[:1]

	if t.closed:
		return HttpResponseRedirect('/accounts/login?next=%s' % request.path)

	if request.method == 'POST':
		form = create_newpostform(request)

		if form.is_valid():
			if request.user.is_authenticated() or form.login(request):
				p = Post(
					thread=t, 
					author=request.user,
					body=form.cleaned_data['body'],
					time=datetime.now(),
					)
				if form.data.has_key(u'post'):
					p.save()
					return HttpResponseRedirect(p.get_absolute_url())
				else:
					return render_to_response('community/thread.html',
						RequestContext(request, {
							'forum': f,
							'form': form,
							'thread': t,
							'posting': p,
							'form_action' : ''}))
	else:
		form = create_newpostform(request)

	return list_detail.object_list(request,
			paginate_by=10,
			queryset=p,
			template_name='community/thread.html',
		extra_context= {
			'forum': f,
			'form': form,
			'thread': t,
			'form_action' : ''})
Esempio n. 7
0
def reply(request, forum, thread):
    """
	If a thread isn't closed, and the user is logged in, post a reply
	to a thread. Note we don't have "nested" replies at this stage.
	"""
    f = get_object_or_404(Forum, slug=forum)
    t = get_object_or_404(Thread, pk=thread)
    p = t.post_set.all().order_by("-time")[:1]

    if t.closed:
        return HttpResponseRedirect("/accounts/login?next=%s" % request.path)

    if request.method == "POST":
        form = create_newpostform(request)

        if form.is_valid():
            if request.user.is_authenticated() or form.login(request):
                p = Post(thread=t, author=request.user, body=form.cleaned_data["body"], time=datetime.now())
                if form.data.has_key(u"post"):
                    p.save()
                    return HttpResponseRedirect(p.get_absolute_url())
                else:
                    return render_to_response(
                        "community/thread.html",
                        RequestContext(
                            request, {"forum": f, "form": form, "thread": t, "posting": p, "form_action": ""}
                        ),
                    )
    else:
        form = create_newpostform(request)

    return DetailView.as_view(
        request,
        paginate_by=10,
        queryset=p,
        template_name="community/thread.html",
        extra_context={"forum": f, "form": form, "thread": t, "form_action": ""},
    )
Esempio n. 8
0
def new_post():
    form = Newpostform()
    if form.validate_on_submit():
        post = Post(title=form.title.data,
                    content=form.content.data,
                    author=current_user)
        db.session.add(post)
        db.session.commit()
        flash('Your post has been created!', 'success')
        return redirect(url_for('Home'))
    return render_template('newpost.html',
                           title='New Post',
                           form=form,
                           legend='New Post')
Esempio n. 9
0
    def get_queryset(self, **kwargs):
        forum = self.kwargs['forum']
        thread = self.kwargs['thread']
        f = get_object_or_404(Forum, slug=forum)
        t = get_object_or_404(Thread, pk=thread)
        p = t.post_set.all().order_by('-time')[:1]

        if t.closed:
            return HttpResponseRedirect('/accounts/login?next=%s' %
                                        request.path)

        if request.method == 'POST':
            form = create_newpostform(request)

            if form.is_valid():
                if request.user.is_authenticated() or form.login(request):
                    p = Post(
                        thread=t,
                        author=request.user,
                        body=form.cleaned_data['body'],
                        time=datetime.now(),
                    )
                    if form.data.has_key(u'post'):
                        p.save()
                        return HttpResponseRedirect(p.get_absolute_url())
                    else:
                        return render(
                            request, 'community/thread.html', {
                                'forum': f,
                                'form': form,
                                'thread': t,
                                'posting': p,
                                'form_action': ''
                            })
        else:
            form = create_newpostform(request)
        return p
Esempio n. 10
0
def publish_post():
    """
    用户发表帖子
    :param { image || content || category}
    :return: data
    """

    user = g.current_user
    images = request.files.getlist('file')
    category_id = request.form.get('category_id')
    content = request.form.get('content')

    print('*' * 20)
    print(images)
    print(category_id)
    print(content)
    print('*' * 20)

    # 用户发帖子时有6种情况
    # 1. 在选择话题分类的情况下
    #   1) 只发文字
    #   2) 只发图片
    #   3) 两者都发
    # 2. 在没有选择话题分类的情况下
    #   1) 只发文字
    #   2) 只发图片
    #   3) 文字和图片都发

    # 判断前端是否传送image过来
    has_image = True
    for img in images:
        if not img.filename:
            has_image = False

    # 如果都没发送content or image, 直接返回
    # 实际上这是由前端来判断的, 我懒得写了.
    if not any([content, has_image]):
        return jsonify(errno=RET.PARAMERR, errmsg='请填写内容再发送过来', data='')
    if category_id:
        try:
            category = Category.query.filter_by(id=category_id).first()
        except Exception as e:
            current_app.logger.error(e)
            return jsonify(errno=RET.DATAERR, errmsg='查询该分类失败', data='')
        if category is None:
            return jsonify(errno=RET.DATAEXIST, errmsg='该分类不存在!', data='')
        if content and has_image:
            image_url = []
            try:
                for image in images:
                    key = storage(image.read())
                    image_url.append(key)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=RET.THIRDERR, errmsg='第三方上传异常', data='')

            try:
                post = Post(user_id=user.id,
                            content=content,
                            category_id=category_id)
                db.session.add(post)
                db.session.commit()
                print('post_id: %s' % post.id)
                for url in image_url:
                    images = Images(post_id=post.id, url=url)
                    db.session.add(images)
                    db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
                return jsonify(errno=RET.DATAERR, errmsg='保存数据失败!', data='')
            return jsonify(errno=RET.OK, errmsg='发表成功!')
        elif content and (not has_image):
            try:
                post = Post(user_id=user.id,
                            content=content,
                            category_id=category_id)
                db.session.add(post)
                db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
                return jsonify(errno=RET.DATAERR, errmsg='保存数据失败!', data='')
            return jsonify(errno=RET.OK, errmsg='发表成功!')
        else:
            image_url = []
            try:
                for image in images:
                    key = storage(image.read())
                    image_url.append(key)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=RET.THIRDERR, errmsg='第三方上传异常', data='')
            try:
                post = Post(user_id=user.id, category_id=category_id)
                db.session.add(post)
                db.session.commit()
                for url in image_url:
                    images = Images(post_id=post.id, url=url)
                    db.session.add(images)
                    db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
                return jsonify(errno=RET.DATAERR, errmsg='保存数据失败!', data='')
            return jsonify(errno=RET.OK, errmsg='发表成功!')
    else:
        if content and has_image:
            image_url = []
            try:
                for image in images:
                    key = storage(image.read())
                    image_url.append(key)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=RET.THIRDERR, errmsg='第三方上传异常', data='')

            try:
                post = Post(user_id=user.id, content=content)
                db.session.add(post)
                db.session.commit()
                for url in image_url:
                    images = Images(post_id=post.id, url=url)
                    db.session.add(images)
                    db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
                return jsonify(errno=RET.DATAERR, errmsg='保存数据失败!', data='')
            return jsonify(errno=RET.OK, errmsg='发表成功!')
        elif content and (not has_image):
            try:
                post = Post(user_id=user.id, content=content)
                db.session.add(post)
                db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
                return jsonify(errno=RET.DATAERR, errmsg='保存数据失败!', data='')
            return jsonify(errno=RET.OK, errmsg='发表成功!')
        else:
            image_url = []
            try:
                for image in images:
                    key = storage(image.read())
                    image_url.append(key)
            except Exception as e:
                current_app.logger.error(e)
                return jsonify(errno=RET.THIRDERR, errmsg='第三方上传异常', data='')
            try:
                post = Post(user_id=user.id)
                db.session.add(post)
                db.session.commit()
                for url in image_url:
                    images = Images(post_id=post.id, url=url)
                    db.session.add(images)
                    db.session.commit()
            except Exception as e:
                current_app.logger.error(e)
                db.session.rollback()
                return jsonify(errno=RET.DATAERR, errmsg='保存数据失败!', data='')
            return jsonify(errno=RET.OK, errmsg='发表成功!')