def new_topic(request, slug): form = TopicForm() forum = get_object_or_404(Forum, slug=slug) if request.method == 'POST': form = TopicForm(request.POST) if form.is_valid(): topic = Topic() topic.title = form.cleaned_data['title'] topic.description = '' topic.creator = request.user topic.save() topic.forums.add(forum) topic.save() post = Post() post.title = form.cleaned_data['title'] post.body = form.cleaned_data['description'] post.creator = request.user post.user_ip = request.META['REMOTE_ADDR'] post.topic = topic post.save() return HttpResponseRedirect(reverse('topic-detail', args=(slug, topic.id, ))) return render(request, 'forum/new-topic.html', {'form': form, 'forum': forum})
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) user = request.user if topic.closed: return render(request, 'personal/basic.html', {'content':['This topic is closed.']}) if topic.forum.closed and not user.has_perm('forum.can_post_lock_forum'): return render(request, 'personal/basic.html', {'content':['This forum is locked.']}) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = 'RE: '+topic.title post.body = bleach_clean(form.cleaned_data['body']) post.creator = request.user post.user_ip = get_client_ip(request) post.save() return HttpResponseRedirect(reverse('topic-detail', args=(topic.id, topic.slug, ))) return render_to_response('forum/reply.html', { 'form': form, 'topic': topic, 'forum': topic.forum, 'editing': False, }, context_instance=RequestContext(request))
def post_reply(request, slug, topic_id): quote = request.GET.get('quote', '') author = request.GET.get('author', '') if quote: quote = '<blockquote>' + quote + '<footer>' + author + '</footer></blockquote>' forum = get_object_or_404(Forum, slug=slug) posts = Post.objects.filter(topic=topic_id).order_by("created").reverse()[:3] topic = Topic.objects.get(pk=topic_id) form_title = '' if topic.last_post(): form_title = 'Re: ' + topic.last_post().title.replace('Re: ', '') default_data = {'title': form_title} form = PostForm(initial=default_data) if request.method == 'POST': quote = request.POST.get('quote', '') form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = form.cleaned_data['title'] post.body = quote + form.cleaned_data['body'] post.creator = request.user post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect(reverse('topic-detail', args=(slug, topic.id, ))) return render(request, 'forum/reply.html', {'form': form, 'topic': topic, 'forum': forum, 'posts': posts, 'quote': quote})
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = form.cleaned_data['title'] post.body = form.cleaned_data['body'] post.creator = request.user post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect( reverse('topic-detail', args=(topic.id, ))) return render_to_response('django_simple_forum/reply.html', { 'form': form, 'topic': topic, }, context_instance=RequestContext(request))
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = form.cleaned_data['title'] post.body = form.cleaned_data['body'] post.creator = request.user userToUpdate = UserProfile.objects.get(user=request.user) nCredits = userToUpdate.credits userToUpdate.credits = int(float(nCredits + 100)) # TODO: Change status (if points+100>threshold -> status changes) Alert??? # Alert? Maybe return to page with status update info for user. # Make Gold/Platinum distinction if nCredits + 100 >= GOLD_THRESHOLD: newStatus = "Gold" userToUpdate.status = newStatus userToUpdate.save() post.user_ip = request.META['REMOTE_ADDR'] post.save() return render_to_response( "forum/status_change.html", {'status': newStatus}, context_instance=RequestContext(request)) elif nCredits + 100 >= PLATINUM_THRESHOLD: newStatus = "Platinum" userToUpdate.status = newStatus userToUpdate.save() post.user_ip = request.META['REMOTE_ADDR'] post.save() return render_to_response( "forum/status_change.html", {'status': newStatus}, context_instance=RequestContext(request)) else: userToUpdate.save() post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect( reverse('topic-detail', args=(topic.id, ))) return render_to_response('forum/reply.html', { 'form': form, 'topic': topic, }, context_instance=RequestContext(request))
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = form.cleaned_data['title'] post.body = form.cleaned_data['body'] post.creator = request.user userToUpdate = UserProfile.objects.get(user=request.user) nCredits = userToUpdate.credits userToUpdate.credits = int(float(nCredits + 100)) # TODO: Change status (if points+100>threshold -> status changes) Alert??? # Alert? Maybe return to page with status update info for user. # Make Gold/Platinum distinction if nCredits + 100 >= GOLD_THRESHOLD: newStatus = "Gold" userToUpdate.status = newStatus userToUpdate.save() post.user_ip = request.META['REMOTE_ADDR'] post.save() return render_to_response("forum/status_change.html", {'status': newStatus}, context_instance=RequestContext(request)) elif nCredits + 100 >= PLATINUM_THRESHOLD: newStatus = "Platinum" userToUpdate.status = newStatus userToUpdate.save() post.user_ip = request.META['REMOTE_ADDR'] post.save() return render_to_response("forum/status_change.html", {'status': newStatus}, context_instance=RequestContext(request)) else: userToUpdate.save() post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect(reverse('topic-detail', args=(topic.id, ))) return render_to_response('forum/reply.html', { 'form': form, 'topic': topic, }, context_instance=RequestContext(request))
def new_topic(request, forum_id): form = TopicForm() forum = get_object_or_404(Forum, pk=forum_id) user = request.user if forum.closed and not user.has_perm('forum.can_post_lock_forum'): return render(request, 'personal/basic.html', {'content': ['This forum is locked.']}) if request.method == 'POST': form = TopicForm(request.POST) if form.is_valid(): topic = Topic() topic.title = form.cleaned_data['title'] topic.description = bleach_clean(form.cleaned_data['description']) topic.forum = forum topic.creator = user topic.save() tpkPost = Post() tpkPost.topic = topic tpkPost.title = topic.title tpkPost.body = bleach_clean(form.cleaned_data['description']) tpkPost.creator = user tpkPost.user_ip = get_client_ip(request) tpkPost.save() return HttpResponseRedirect( reverse('topic-detail', args=( topic.id, topic.slug, ))) return render_to_response('forum/new-topic.html', { 'form': form, 'forum': forum, }, context_instance=RequestContext(request))
def reply(request, thread, extra_context=None): """ 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. """ t = get_object_or_404(Thread, pk=thread) if t.closed: return HttpResponseServerError() if not Forum.objects.has_access(t.forum, request.user.groups.all()): return HttpResponseForbidden() preview = False p = None if request.method == "POST": form = ReplyForm(request.POST) preview = request.POST.get('preview') p = Post( thread=t, author=request.user, time=datetime.now(), ) if form.is_valid(): p.body = form.cleaned_data['body'] if not preview: p.save() if not preview: return HttpResponseRedirect(p.get_absolute_url()) else: form = ReplyForm() return render_to_response('forum/reply.html', RequestContext(request, { 'form': form, 'forum': t.forum, 'post': p, 'preview': preview, 'thread': t, }))
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) user = request.user if topic.closed: return render(request, 'personal/basic.html', {'content': ['This topic is closed.']}) if topic.forum.closed and not user.has_perm('forum.can_post_lock_forum'): return render(request, 'personal/basic.html', {'content': ['This forum is locked.']}) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = 'RE: ' + topic.title post.body = bleach_clean(form.cleaned_data['body']) post.creator = request.user post.user_ip = get_client_ip(request) post.save() return HttpResponseRedirect( reverse('topic-detail', args=( topic.id, topic.slug, ))) return render_to_response('forum/reply.html', { 'form': form, 'topic': topic, 'forum': topic.forum, 'editing': False, }, context_instance=RequestContext(request))
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.body = form.cleaned_data['body'] post.creator = request.user post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect(reverse('forum:topic-detail', args=(topic.id, ))) context = get_base_context() context.update({'form': form, 'topic': topic}) return render(request, 'forum/reply.html', context)
def post_reply(request, topic_id): form = PostForm() topic = Topic.objects.get(pk=topic_id) if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = form.cleaned_data['title'] post.body = form.cleaned_data['body'] post.creator = request.user post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect(reverse('topic-detail', args=(topic.id, ))) return render_to_response('django_simple_forum/reply.html', { 'form': form, 'topic': topic, }, context_instance=RequestContext(request))
def new_topic(request, forum_id): form = TopicForm() forum = get_object_or_404(Forum, pk=forum_id) user = request.user if forum.closed and not user.has_perm('forum.can_post_lock_forum'): return render(request, 'personal/basic.html', {'content':['This forum is locked.']}) if request.method == 'POST': form = TopicForm(request.POST) if form.is_valid(): topic = Topic() topic.title = form.cleaned_data['title'] topic.description = bleach_clean(form.cleaned_data['description']) topic.forum = forum topic.creator = user topic.save() tpkPost = Post() tpkPost.topic = topic tpkPost.title = topic.title tpkPost.body = bleach_clean(form.cleaned_data['description']) tpkPost.creator = user tpkPost.user_ip = get_client_ip(request) tpkPost.save() return HttpResponseRedirect(reverse('topic-detail', args=(topic.id, topic.slug, ))) return render_to_response('forum/new-topic.html', { 'form': form, 'forum': forum, }, context_instance=RequestContext(request))
def reply(request, thread, extra_context=None): """ 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. """ t = get_object_or_404(Thread, pk=thread) if t.closed: return HttpResponseServerError() if not Forum.objects.has_access(t.forum, request.user.groups.all()): return HttpResponseForbidden() preview = False p = None if request.method == "POST": form = ReplyForm(request.POST) preview = request.POST.get('preview') p = Post( thread=t, author=request.user, time=datetime.now(), ) if form.is_valid(): p.body = form.cleaned_data['body'] if not preview: p.save() sub = Subscription.objects.filter(thread=t, author=request.user) if form.cleaned_data.get('subscribe',False): if not sub: s = Subscription( author=request.user, thread=t ) s.save() else: if sub: sub.delete() # this needs refactorings if not preview and t.subscription_set.count() > 0: # Subscriptions are updated now send mail to all the authors subscribed in # this thread. mail_subject = '' try: mail_subject = settings.FORUM_MAIL_PREFIX except AttributeError: mail_subject = '[Forum]' mail_from = '' try: mail_from = settings.FORUM_MAIL_FROM except AttributeError: mail_from = settings.DEFAULT_FROM_EMAIL mail_tpl = loader.get_template('forum/notify.txt') c = Context({ 'body': wordwrap(striptags(p.body), 72), 'site' : Site.objects.get_current(), 'thread': t, }) email = EmailMessage( subject=mail_subject+' '+striptags(t.title), body= mail_tpl.render(c), from_email=mail_from, bcc=[s.author.email for s in t.subscription_set.all()],) email.send(fail_silently=True) if not preview: return HttpResponseRedirect(p.get_absolute_url()) else: form = ReplyForm() return render_to_response('forum/reply.html', RequestContext(request, { 'form': form, 'forum': t.forum, 'post': p, 'preview': preview, 'thread': t, }))
def post_reply(request, topic_id): if 'userid' in request.session: topic = Topic.objects.get(pk=topic_id) form = PostForm status = 'student' stud_obj = student.objects.get(pk=request.session['userid']) username = stud_obj.uname if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = request.POST.get('title') post.body = request.POST.get('body') obj = student.objects.get(pk=request.session['userid']) post.creator = obj post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect( reverse('topic-detail', args=(topic.id, ))) return render( request, 'forum/reply.html', { 'form': form, 'topic': topic, 'username': username, 'status': status }, ) elif 'instructorid' in request.session: topic = Topic.objects.get(pk=topic_id) form = PostForm status = 'instructor' inst_obj = instructor.objects.get(pk=request.session['instructorid']) username = inst_obj.uname if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = Post() post.topic = topic post.title = request.POST.get('title') post.body = request.POST.get('body') obj = instructor.objects.get( pk=request.session['instructorid']) post.by_instructor = obj post.user_ip = request.META['REMOTE_ADDR'] post.save() return HttpResponseRedirect( reverse('topic-detail', args=(topic.id, ))) return render( request, 'forum/reply.html', { 'form': form, 'topic': topic, 'username': username, 'status': status }, ) else: return HttpResponseRedirect('/joinus/login/')