예제 #1
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
    })
예제 #2
0
파일: views.py 프로젝트: jamcoy/stream3
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)
예제 #3
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()
예제 #4
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())
예제 #5
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) )
예제 #6
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})
예제 #7
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})
예제 #8
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})
예제 #9
0
파일: views.py 프로젝트: asihub/school
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)
예제 #10
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)
예제 #11
0
파일: views.py 프로젝트: jamcoy/stream3
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)
예제 #12
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})        
예제 #13
0
파일: views.py 프로젝트: tokyodevs/tcnc
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)
예제 #14
0
파일: views.py 프로젝트: tokyodevs/tcnc
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)
예제 #15
0
파일: views.py 프로젝트: gbpjr/our-forum
def edit_post(request, post_id, topic_id):
    post = get_object_or_404(Post, id=post_id)
    topic = get_object_or_404(Topic, id=topic_id)
    posts = topic.post_set.order_by('date_added')
    if post.author != request.user:
        raise Http404

    if request.method != 'POST':
        form = PostForm(instance=post)
    else:
        form = PostForm(request.POST, instance=post)
        new_post = form.save(commit=False)
        new_post.edit_date = timezone.now()
        new_post.save()
        return redirect('../')

    return render(request, 'forum/edit_post.html', {'form': form, 'selected_post': post, 'topic': topic, 'posts': posts})
예제 #16
0
파일: views.py 프로젝트: sbluen/djangotest
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)
예제 #17
0
def reply(request, pk):
    "View that handles POST request for a reply or renders the form for a reply"
    error = ""
    if request.method == "POST":
        p = request.POST
        if p["body_markdown"]:
            thread = Thread.objects.get(pk=pk)
            post = Post()
            form = PostForm(p, instance=post)
            post = form.save(commit=False)
            post.thread, post.creator = thread, request.user
            post.save()

            return HttpResponseRedirect(reverse("forum.views.thread", args=[pk]) + "?page=last")
        else:
            error = "Please enter a Reply\n"

    thread = Thread.objects.get(pk=pk)
    post_form = PostForm()
    return render_to_response(
        "forum/reply.html", add_csrf(request, thread=thread, post_form=post_form, error=error, pk=pk)
    )
예제 #18
0
파일: views.py 프로젝트: sbluen/djangotest
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)
예제 #19
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())
예제 #20
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)
예제 #21
0
파일: views.py 프로젝트: gbpjr/our-forum
def new_post(request, topic_id, post_id=''):
    topic = get_object_or_404(Topic, id=topic_id)
    if post_id != '':
        post = get_object_or_404(Post, id=post_id)
    else:
        post = None
    posts = topic.post_set.order_by('date_added')
    if request.method != 'POST':
        form = PostForm()
    else:
        form = PostForm(request.POST)
        if form.is_valid():
            new_post = form.save(commit=False)
            new_post.topic = topic
            new_post.father = post
            new_post.author = request.user
            new_post.save()
            topic = Topic.objects.get(id=topic_id)
            topic.last_update = timezone.now()
            topic.last_poster = new_post.author
            topic.save()
            return redirect('../')

    return render(request, 'forum/new_post.html', {'topic': topic, 'posts': posts, 'form': form, 'post': post})
예제 #22
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())
예제 #23
0
파일: views.py 프로젝트: jamcoy/stream3
def new_thread(request, subject_id, poll):
    subject = get_object_or_404(Subject, pk=subject_id)

    is_a_poll = False
    if poll == "poll":
        is_a_poll = True
        poll_subject_formset = formset_factory(PollSubjectForm, extra=3)

    if request.method == "POST":
        thread_form = ThreadForm(request.POST)
        post_form = PostForm(request.POST)

        if is_a_poll:
            poll_subject_formset = poll_subject_formset(request.POST)
            poll_form = PollForm(request.POST)

            if thread_form.is_valid() and post_form.is_valid() and poll_form.is_valid() \
                    and poll_subject_formset.is_valid():

                thread = thread_form.save(False)
                thread.subject = subject
                thread.user = request.user
                thread.save()

                post = post_form.save(False)
                post.user = request.user
                post.thread = thread
                post.save()

                poll = poll_form.save(False)
                poll.thread = thread
                poll.save()

                for subject_form in poll_subject_formset:
                    subject = subject_form.save(False)
                    subject.poll = poll
                    subject.save()

                messages.success(request, "You have created a new poll")

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

                thread = thread_form.save(False)
                thread.subject = subject
                thread.user = request.user
                thread.save()

                post = post_form.save(False)
                post.user = request.user
                post.thread = thread
                post.save()

                messages.success(request, "You have created a new topic")

        return redirect(reverse('forum_thread', args={thread.pk}))

    else:
        thread_form = ThreadForm()
        post_form = PostForm(request.POST)

    args = {
        'thread_form': thread_form,
        'post_form': post_form,
        'subject': subject
    }

    args.update(csrf(request))

    if is_a_poll:
        poll_form = PollForm()
        # poll_subject_formset = poll_subject_formset()
        args['poll_form'] = poll_form
        args['poll_subject_formset'] = poll_subject_formset
        return render(request, 'forum/topic_poll_form.html', args)
    else:
        return render(request, 'forum/topic_form.html', args)