Beispiel #1
0
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))
Beispiel #2
0
def reply_topic(request, category_slug, topic_slug):
    topic = get_object_or_404(Topic,
                              category__slug=category_slug,
                              slug=topic_slug)
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.topic = topic
            post.updated_by = request.user
            post.save()

            topic.last_updated = timezone.now()
            topic.save()

            topic_url = reverse('posts_of_topic',
                                kwargs={
                                    'category_slug': category_slug,
                                    'topic_slug': topic_slug
                                })
            topic_post_url = '{url}?page={page}#{id}'.format(
                url=topic_url, id=post.pk, page=topic.get_page_count())

            return redirect(topic_post_url)
    else:
        form = PostForm()
    return render(request, 'forum/reply_topic.html', {
        'topic': topic,
        'form': form
    })
Beispiel #3
0
def edit_post(request, postId):

    try:
        post = Post.objects.get(id=postId)

    except Post.DoesNotExist:
        raise Http404("Post doesn't exist.")

    if request.user != post.user and not request.user.has_moderator_rights():
        return HttpResponseForbidden("Not your post (and not a moderator).")

    if request.method == 'POST':

        form = PostForm(request.POST)

        if form.is_valid():
            text = form.cleaned_data['text']

            post.text = text
            post.was_edited = True
            post.date_edited = timezone.localtime(timezone.now())
            post.edited_by = request.user
            post.save()

            return HttpResponseRedirect(post.get_url())

    else:
        form = PostForm(initial={'text': post.text})

    context = {'form': form, 'post': post}

    return render(request, 'edit/edit_post.html', context)
Beispiel #4
0
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})
Beispiel #5
0
def post_reply_edit(request, post_id):
    post = Post.objects.get(pk=post_id)
    topic = post.topic
    user = request.user
    form = PostForm(instance=post)

    if not user.id == post.creator.id:
         return render(request, 'personal/basic.html', {'content':['You do not own this post.']})
    
    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, instance=post)

        if form.is_valid():

            post.body = bleach_clean(form.cleaned_data['body'])
            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': True,
        }, context_instance=RequestContext(request))
Beispiel #6
0
def newthread(request, cat_id):
    if not request.user.is_authenticated():
        return redirect(reverse(index))
    else:
        try:
            cat = Category.objects.get(pk=cat_id)
        except Category.DoesNotExist:
            return redirect(reverse(ticket))
        if request.method == 'POST':
            tform = ThreadForm(request.POST, prefix="thd")
            pform = PostForm(request.POST, prefix="pst")
            if tform.is_valid() and pform.is_valid():
                date = datetime.datetime.now()
                newt = tform.save(commit=False)
                newt.rank = 0
                newt.parent = cat
                newt.date = date
                newt.save()
                newp = pform.save(commit=False)
                newp.author = request.user
                newp.date = date
                newp.parent = newt
                newp.save()
                url = ''.join(('/agora/', str(cat_id), '/', str(newt.id), '/'))
                return redirect(url, request)
        else:
            tform = ThreadForm(prefix="thd")
            pform = PostForm(prefix="pst")
        return render(request, 'newthread.html', locals())
Beispiel #7
0
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))
Beispiel #8
0
def add_post(request, post_id=None):
    if post_id:
        post = get_object_or_404(Post, pk=post_id)
        if post.author != request.user:
            return HttpResponseForbidden("Only owner of this post is allowed to edit")
    else:
        post = Post(author=request.user)

    if request.method == 'POST':  # If the form has been submitted...
        form = PostForm(request.POST, instance=post)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            text = form.cleaned_data['content']
            html = markdown(text)
            post.title = form.cleaned_data['title']
            post.content = html
            post.tagnames = form.cleaned_data['tagnames']
            post.save()
            return HttpResponseRedirect('/')
    else:
        # An unbound form
        form = PostForm(instance=post)

    return render(request, 'new_post.html', {
        'form': form,
        'post_id': post_id,
    })
Beispiel #9
0
def _topic_create_POST(request):
    commit = True
    try:
        post = Post(author=request.forum_user)
        post_form = PostForm(request.POST, instance=post)
        if post_form.is_valid():
            post = post_form.save()
            topic = Topic(author=request.forum_user, first_post=post,
                    last_post=post)
            topic_form = TopicForm(request.POST, instance=topic)
            if topic_form.is_valid():
                topic = topic_form.save()
                post.topic = topic
                post.save()
                for category in topic.categories.all():
                    category.topic_count = category.topic_set.all().count()
                    category.post_count = Post.objects\
                            .filter(topic__in=category.topic_set.all()).count()
                    category.save()
                return redirect(post.get_absolute_url())
        else:
            post_form = PostForm(request.POST)
        ctx = {
            'forum_user': request.forum_user,
            'topic_form': topic_form,
            'post_form': post_form,
        }
        return render(request, 'forum/topic/create.html', ctx)

    finally:
        if commit:
            transaction.commit()
        else:
            transaction.rollback()
Beispiel #10
0
def new_post(request, thread_id):
    thread = get_object_or_404(Thread, pk=thread_id)

    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(False)
            post.thread = thread
            post.user = request.user
            post.save()

            messages.success(request, "Your post has been added to the topic")

            return redirect(reverse('forum_thread', args={thread.pk}))
    else:
        form = PostForm()

    args = {
        'form': form,
        'form_action': reverse('forum_new_post', args={thread.id}),
        'button_text': 'Update post'
    }
    args.update(csrf(request))

    return render(request, 'forum/post_form.html', args)
Beispiel #11
0
def new_post(request, pk):
    context = RequestContext(request)
    context_dict = {'pk': pk}
    context_dict['action'] = 'new_thread'
    forum = Forum.objects.get(pk=pk)
    context_dict['forum_title'] = forum.title

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

        if form.is_valid():
            subject = form.cleaned_data['subject']
            body = form.cleaned_data['body']
            thread = Thread.objects.create(forum=forum,
                                           title=subject,
                                           creator=request.user)
            Post.objects.create(thread=thread,
                                subject=subject,
                                body=body,
                                creator=request.user)

            #return HttpResponse('Your Thread has been created')
            return HttpResponseRedirect(
                reverse("forum.views.threadlist", args=[pk]))
        else:
            print form.errors

    else:
        return render_to_response('forum/newpost.html', context_dict, context)
Beispiel #12
0
def new_post_view(request, thread_id):
    doge_user = DogeUser.objects.get(user=request.user)
    form = PostForm(data=request.POST)
    thread = get_object_or_404(Thread, pk=thread_id)
    if form.is_valid():
        form.create_post(doge_user, thread)
        return thread_redirect(thread_id)
    return HttpResponseRedirect(reverse('index'))
Beispiel #13
0
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(self, *args, **kwargs):
     user = self.request.user
     form = PostForm(self.request.POST or None)
     if form.is_valid():
         author = user
         title = form.cleaned_data.get('title')
         text = form.cleaned_data.get('text')
         post = Post(author=author, title=title, text=text)
         post.save()
         messages.success(self.request, "Your post has been added to your drafts but it has not been published yet")
         return redirect('post_draft_list', username=user.username)
Beispiel #15
0
def addpost(request, section_id, topic_id):

    form = PostForm(request.POST or None)

    if form.is_valid():
        post = form.save(commit=False)
        post.topic = get_object_or_404(Topic, pk=topic_id)
        post.timestamp = datetime.today()
        post.author = request.user.username
        post.save()
        
    return redirect(posts, section_id, topic_id)
Beispiel #16
0
def create_post(request):
    if request.method == "POST":
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            p = form.save(commit=False)
            p.user = request.user
            p.save()
            return redirect('/forum/')
    else:
        form = PostForm()
        args = {'form': form}
        return render(request, 'forum/create.html', args)
Beispiel #17
0
def submit_post(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            f = form.save(commit = False)
            if request.user.is_authenticated():
                f.author = request.user
            f.save()

            return HttpResponseRedirect('/forum/post/' + f.slug + '/')
    else:
        form = PostForm()
    return render(request, 'forum/submit_post.html',{'form': form})        
Beispiel #18
0
def post_list(request, template='post/list.html'):
    d = {}
    d['form'] = PostForm()
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            item = form.save()
            return JsonResponse(data={'id': item.id, 'name': str(item), 'form': PostForm().as_p(), 'token': get_token(request)})
        else:
            d['form'] = form
            return JsonResponse(data={'form': d['form'].as_p(), 'token': get_token(request)}, success=False)
    d['post_list'] = Post.objects.all()
    return render(request, template, d)
Beispiel #19
0
def post_details(request, id, template='post/details.html'):
    d = {}
    item = get_object_or_404(Post, pk=id)
    d['form'] = PostForm(instance=item)
    if request.method == 'POST':
        form = PostForm(request.POST, instance=item)
        if form.is_valid():
            item = form.save()
            return JsonResponse(data={'form': PostForm(instance=item).as_p(), 'token': get_token(request)})
        else:
            d['form'] = form
            return JsonResponse(data={'form': d['form'].as_p(), 'token': get_token(request)}, success=False)
    d['post'] = Post.objects.get(pk=id)
    return render(request, template, d)
Beispiel #20
0
def open_thread(request, threadSlug, page=0):

    try:
        theThread = Thread.objects.get(slug=threadSlug)

    except Thread.DoesNotExist:
        raise Http404("Thread doesn't exist.")

    if request.method == 'POST' and not theThread.is_locked:
        form = PostForm(request.POST)

        if form.is_valid():
            text = form.cleaned_data['text']

            newPost = Post(sub_forum=theThread.sub_forum,
                           thread=theThread,
                           user=request.user,
                           text=text)
            newPost.save()

            return HttpResponseRedirect(newPost.get_url())

    else:
        form = PostForm()

    postPerPage = settings.POSTS_PER_PAGE
    page = int(page)
    startPost = page * postPerPage

    allPosts = theThread.post_set.all()
    totalPosts = allPosts.count()
    totalPages = int(math.ceil(float(totalPosts) / float(postPerPage)))

    if page != 0 and startPost >= totalPosts:
        raise Http404("Invalid thread page.")

    pagePosts = allPosts[startPost:startPost + postPerPage]

    context = {
        'thread': theThread,
        'posts': pagePosts,
        'threadSlug': threadSlug,
        'page': page,
        'pages': range(0, totalPages),
        'form': form,
        'paths': [theThread.sub_forum, theThread]
    }
    utilities.get_message(request, context)

    return render(request, 'thread.html', context)
Beispiel #21
0
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))
Beispiel #22
0
def add_post(request, theme_id):
    form = PostForm(request.POST)

    if form.is_valid():
        create_post(
            theme_id,
            form.cleaned_data['post'],
            request.user.id)

    # redirecting to the last page
    posts_list = get_list_or_404(Post, theme_id=theme_id)
    paginator = Paginator(posts_list, 5)

    url = reverse('forum:theme', args=[theme_id, paginator.num_pages])
    return HttpResponseRedirect(url)
Beispiel #23
0
def addSurvivingPost(request):
    if request.method == 'POST':
        form = PostForm(request.POST)

        if form.is_valid():
            author = request.user
            title = form.cleaned_data['title']
            body = form.cleaned_data['body']

            post = SurvivingPost.objects.create(title=title,
                                                author=author,
                                                body=body)
            return redirect('/forum')

    return render(request, 'forum/addPost.html')
Beispiel #24
0
def create_post(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            content = form.cleaned_data['content']
            title = form.cleaned_data['title']
            post = Post(content=content, title=title, author=request.user)
            post.save()
            messages.success(request, f'New post created')
            return redirect('forum')
    else:
        form = PostForm()
    context = {
        'PostForm': PostForm,
    }
    return render(request, 'forum/post_creation.html', context)
Beispiel #25
0
def forum_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        print(form.errors)
        if form.is_valid():
            cd = form.cleaned_data
            post = Post(title=cd['title'],
                        content=cd['body'],
                        sender=request.user,
                        summary=cd['outline'],
                        category=cd['category'])
            post.save()
            return HttpResponseRedirect('/forum_index')
    else:
        form = PostForm()
    return render(request, 'forum_create.html', {'form': form})
Beispiel #26
0
def post_details(request, id, template="post/details.html"):
    """View for a forum post.
    Autogenerated initially."""
    d = {}
    item = get_object_or_404(Post, pk=id)
    d["form"] = PostForm(instance=item)
    if request.method == "POST":
        form = PostForm(request.POST, instance=item)
        if form.is_valid():
            item = form.save()
            return JsonResponse(data={"form": PostForm(instance=item).as_p(), "token": get_token(request)})
        else:
            d["form"] = form
            return JsonResponse(data={"form": d["form"].as_p(), "token": get_token(request)}, success=False)
    d["post"] = Post.objects.get(pk=id)
    d["username"] = User.objects.get(id=d["post"].created_by_id).username
    return render(request, template, d)
Beispiel #27
0
def post_dir(request, thread_id):
    thread_info = Thread.objects.get(pk=thread_id)
    post_list = Post.objects.filter( thread = thread_id )   
    if request.method == 'POST': 
        form = PostForm(request.POST) 
        if form.is_valid():
            thread = Post( thread = thread_info )
            form = PostForm(request.POST, instance = thread )
            form.save()
            return HttpResponseRedirect(reverse('forum.views.post_dir', args=(thread_id,)))
    else:
        form = PostForm()   
    return render_to_response("post.html", 
                              {'post_list' : post_list, 
                               'thread_info' : thread_info, 
                               'form': form,},    
                              context_instance=RequestContext(request) )
Beispiel #28
0
def edit_exercise_view(request, pk):
    ex = get_object_or_404(Exercise, pk=pk)
    form = PostForm(instance=ex)

    if request.method == 'POST':
        form = PostForm(request.POST, instance=ex)
        if form.is_valid():
            form.save()
            return HttpResponse('Todo Bien')
        else:
            return render(request,
                          'training/ex_post.html',
                          context={
                              'form': form,
                              'errors': form.errors
                          })
    else:
        return render(request, 'training/ex_post.html', context={'form': form})
Beispiel #29
0
    def post(self, request, *args, **kwargs):
        form = PostForm(request.POST or None)
        print('test2')
        print(request.POST)

        if form.is_valid():
            print('test3')
            post_data = Post()
            post_data.author = request.user
            post_data.title = form.cleaned_data['title']
            post_data.text = form.cleaned_data['text']
            category = form.cleaned_data['category']
            category_data = Category.objects.filter(name=category)[0]
            post_data.category = category_data
            post_data.save()
            print('test')
            return redirect('forum:post_detail', post_data.id)

        return render(request, 'forum/post_form.html', {'form': form})
Beispiel #30
0
def reply(request, pk):
    context = RequestContext(request)
    context_dict = {'pk': pk}
    
    if request.method=="POST":
        form = PostForm(request.POST)
        
        if form.is_valid():
            
            thread = Thread.objects.get(pk=pk)
            subject = form.cleaned_data['subject']
            body = form.cleaned_data['body']
            Post.objects.create(thread=thread, subject=subject, body = body, creator=request.user)
            
            return HttpResponseRedirect(reverse("forum.views.postlist", args=[pk]))
        else:
            print form.errors
    else:
        return render_to_response('forum/reply.html', context_dict, context)
Beispiel #31
0
def edit_post_view(request, pk):
    post = get_object_or_404(Post, pk=pk)
    form = PostForm(instance=post)

    if request.method == 'POST':
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            form.save()
            return HttpResponse('Todo Bien')
        else:
            return render(request,
                          'forum/create_post.html',
                          context={
                              'form': form,
                              'errors': form.errors
                          })
    else:
        return render(request,
                      'forum/create_post.html',
                      context={'form': form})
Beispiel #32
0
def edit_New_view(request, pk):
    new = get_object_or_404(Notice, pk=pk)
    form = PostForm(instance=new)

    if request.method == 'POST':
        form = PostForm(request.POST, instance=new)
        if form.is_valid():
            form.save()
            return HttpResponse('Todo Bien')
        else:
            return render(request,
                          'news/create_notice.html',
                          context={
                              'form': form,
                              'errors': form.errors
                          })
    else:
        return render(request,
                      'news/create_notice.html',
                      context={'form': form})
Beispiel #33
0
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))
Beispiel #34
0
def post_reply_edit(request, post_id):
    post = Post.objects.get(pk=post_id)
    topic = post.topic
    user = request.user
    form = PostForm(instance=post)

    if not user.id == post.creator.id:
        return render(request, 'personal/basic.html',
                      {'content': ['You do not own this post.']})

    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, instance=post)

        if form.is_valid():

            post.body = bleach_clean(form.cleaned_data['body'])
            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': True,
    },
                              context_instance=RequestContext(request))
Beispiel #35
0
def edit_post(request, thread_id, post_id):
    thread = get_object_or_404(Thread, pk=thread_id)
    post = get_object_or_404(Post, pk=post_id)

    if request.method == "POST":
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            form.save()
            messages.success(request, "You have updated your post")

            return redirect(reverse('forum_thread', args={thread.pk}))
    else:
        form = PostForm(instance=post)

    args = {
        'form': form,
        'form_action': reverse('forum_edit_post', kwargs={"thread_id": thread.id, "post_id": post.id}),
        'button_text': 'Update post'
    }
    args.update(csrf(request))

    return render(request, 'forum/post_form.html', args)
Beispiel #36
0
def topic_details(request, id, template="topic/details.html"):
    """View for a forum topic.
    Autogenerated initially."""
    d = {}
    d["form"] = PostForm()
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.topic_id = id
            post.created_by_id = 1
            post.save()
        #             return JsonResponse(data={'id': item.id, 'name': str(item), 'form': PostForm().as_p(), 'token': get_token(request)})
        else:
            d["form"] = form
    #             return JsonResponse(data={'form': d['form'].as_p(), 'token': get_token(request)}, success=False)
    d["topic"] = Topic.objects.get(pk=id)
    posts = Post.objects.filter(topic=id)
    d["pairs"] = []
    for i in posts:
        d["pairs"].append([i, User.objects.get(id=i.created_by_id).username])
    return render(request, template, d)
Beispiel #37
0
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)
Beispiel #38
0
def new_post(request, pk):
    context = RequestContext(request)
    context_dict = {'pk':pk}
    context_dict['action'] = 'new_thread'
    forum = Forum.objects.get(pk=pk)
    context_dict['forum_title'] = forum.title
    
    if request.method == "POST":
        form = PostForm(request.POST)
        
        if form.is_valid():
            subject = form.cleaned_data['subject']
            body = form.cleaned_data['body']
            thread = Thread.objects.create(forum=forum, title=subject, creator=request.user)
            Post.objects.create(thread=thread, subject=subject, body=body, creator=request.user)
            
            #return HttpResponse('Your Thread has been created')
            return HttpResponseRedirect(reverse("forum.views.threadlist", args=[pk]))
        else:
            print form.errors
            
    else:
        return render_to_response('forum/newpost.html', context_dict, context)
Beispiel #39
0
def new_thread(request):
    if request.method == "POST":
        thread_form = ThreadForm(request.POST)
        post_form = PostForm(request.POST)

        if thread_form.is_valid() and post_form.is_valid():

            thread = thread_form.save()
            post = post_form.save(False)

            post.thread = thread
            post.save()
    #   else:
    #     thread_form = ThreadForm()
    #     post_form = PostForm()
    #
    #
    # args = {}
    # args.update(csrf(request))
    # args['thread_form'] = thread_form
    # args['post_form'] = post_form

    return render(request, 'index.html', locals())
Beispiel #40
0
def reply(request, pk):
    context = RequestContext(request)
    context_dict = {'pk': pk}

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

        if form.is_valid():

            thread = Thread.objects.get(pk=pk)
            subject = form.cleaned_data['subject']
            body = form.cleaned_data['body']
            Post.objects.create(thread=thread,
                                subject=subject,
                                body=body,
                                creator=request.user)

            return HttpResponseRedirect(
                reverse("forum.views.postlist", args=[pk]))
        else:
            print form.errors
    else:
        return render_to_response('forum/reply.html', context_dict, context)
Beispiel #41
0
class ForumThreadPage(RoutablePageMixin, Page):
    parent_page_types = ['ForumPage']
    subpage_types = []
    slug = 'threads'

    form = PostForm()
    thread = None

    @route(r'^$')
    def thread_list_view(self, request):
        return ForumPage().serve(request)

    @route(r'^(\d+)/$')
    def thread_view(self, request, thread_pk=None):
        try:
            self.thread = Thread.objects.get(pk=thread_pk)
        except Thread.DoesNotExist:
            messages.error(request, 'Thread deleted or never existed')
            return ForumPage().serve(request)

        self.form = PostForm(request.POST or None)

        if request.method == 'POST' and self.form.is_valid():
            try:
                data = self.form.cleaned_data
                post = Post(
                    content=data['content'],
                    author=request.user,
                    thread=self.thread
                )
                post.save()
                messages.success(request, 'Your post has been created')
                self.form = PostForm(None)
            except:
                messages.error(request, 'An error occurred during post creation. Please try again later')

        return super().serve(request)
Beispiel #42
0
def post_create(request, topic_id, slug=None):
    topic = get_object_or_404(Topic, id=topic_id, is_closed=False)
    is_xhr = bool(request.REQUEST.get('xhr'))
    post = Post(topic=topic, author=request.forum_user)
    if request.method == 'POST':
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            post = form.save()

            # update counters
            topic.post_count = topic.post_set.all().count()
            topic.updated = post.created
            topic.save()
            for category in topic.categories.all():
                category.topic_count = category.topic_set.all().count()
                category.post_count = Post.objects\
                        .filter(topic__in=category.topic_set.all()).count()
                category.save()

            if is_xhr:
                return {
                    'status': 'ok',
                    'saved': True,
                    'url': post.get_absolute_url()
                }
            return _redirect_next(request, post)
        if is_xhr:
            return {
                'status': 'ok',
                'saved': False,
                'errors': form.errors(),
            }
    else:
        form = PostForm()

    ctx = {'post_form': form, 'topic': topic}
    return render(request, 'forum/post/create.html', ctx)
Beispiel #43
0
def agora(request, cat_id=None, thd_id=None):
    if not request.user.is_authenticated():
        return redirect(reverse(main.views.index))
    else:
        if cat_id:
            try:
                cat = Category.objects.get(pk=cat_id)
            except Category.DoesNotExist:
                return redirect(reverse(agora))
            name = cat.name
            parent = cat.parent_id
        cat_list = Category.objects.filter(parent=cat_id)
        if thd_id:
            msg_list = Post.objects.filter(parent=thd_id)
            try:
                thd = Thread.objects.get(pk=thd_id)
            except Thread.DoesNotExist:
                url = ''.join(('/agora/', str(cat_id), '/'))
                return redirect(url, request)
            tname = thd.name
            if request.method == 'POST':
                form = PostForm(request.POST)
                if form.is_valid():
                    date = datetime.datetime.now()
                    new = form.save(commit=False)
                    new.author = request.user
                    new.date = date
                    new.parent = thd
                    new.save()
                    thd.date = date
                    thd.save()
            else:
                form = PostForm()
        else:
            thd_list = Thread.objects.filter(parent=cat_id)
        return render(request, 'agora.html', locals())
Beispiel #44
0
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))