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
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}), )
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': '' })
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 }))
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 }))
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' : ''})
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": ""}, )
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')
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
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='发表成功!')