示例#1
0
def create_poll(request, forum_slug, topic_id):
    topic = get_object_or_404(Topic, pk=topic_id)
    forum = topic.forum
    if forum.slug != forum_slug:
        return HttpResponseRedirect(topic.get_create_poll_url())

    # check locks
    if topic.locked:
        return HttpResponse('Forum or topic is locked')

    # check if it already has a poll
    if topic.poll:
        return HttpResponse('Bu konuya zaten anket eklenmiş')

    if request.method == 'POST':
        form = PollForm(request.POST.copy())
        if form.is_valid():
            # create the poll
            poll = Poll(
                question=form.cleaned_data["question"],
                allow_changing_vote=form.cleaned_data["allow_changing_vote"],
                allow_multiple_choices=form.
                cleaned_data["allow_multiple_choices"],
                date_limit=form.cleaned_data["date_limit"],
                end_date=form.cleaned_data["end_date"],
            )
            poll.save()

            # create poll options
            for i in range(16):
                if form.cleaned_data["option%d" % i]:
                    option = PollOption(
                        poll=poll,
                        text=form.cleaned_data["option%d" % i],
                    )
                    option.save()

            # now add it to topic
            topic.poll = poll
            topic.save()

            return HttpResponseRedirect(topic.get_absolute_url())
    else:
        form = PollForm()

    return render_response(request, "forum/create_poll.html", locals())
示例#2
0
def create_poll(request, forum_slug, topic_id):
    topic = get_object_or_404(Topic, pk=topic_id)
    forum = topic.forum
    if forum.slug != forum_slug:
        return HttpResponseRedirect(topic.get_create_poll_url())

    # check locks
    if topic.locked:
        return HttpResponse('Forum or topic is locked')

    # check if it already has a poll
    if topic.poll:
        return HttpResponse('Bu konuya zaten anket eklenmiş')

    if request.method == 'POST':
        form = PollForm(request.POST.copy())
        if form.is_valid():
            # create the poll
            poll = Poll(
                    question = form.cleaned_data["question"],
                    allow_changing_vote = form.cleaned_data["allow_changing_vote"],
                    allow_multiple_choices = form.cleaned_data["allow_multiple_choices"],
                    date_limit = form.cleaned_data["date_limit"],
                    end_date = form.cleaned_data["end_date"],
                    )
            poll.save()

            # create poll options
            for i in range(16):
                if form.cleaned_data["option%d" % i]:
                    option = PollOption(
                            poll = poll,
                            text = form.cleaned_data["option%d" % i],
                            )
                    option.save()

            # now add it to topic
            topic.poll = poll
            topic.save()

            return HttpResponseRedirect(topic.get_absolute_url())
    else:
        form = PollForm()

    return render_response(request, "forum/create_poll.html", locals())
示例#3
0
def change_poll(request, forum_slug, topic_id):
    topic = get_object_or_404(Topic, pk=topic_id)
    forum = topic.forum
    if forum.slug != forum_slug:
        return HttpResponseRedirect(topic.get_change_poll_url())

    # check poll
    try:
        poll = topic.poll
    except:  #DoesNotExist
        return HttpResponseRedirect(topic.get_create_poll_url())

    # check locks
    if topic.locked:
        return HttpResponse('Forum or topic is locked')

    if request.method == 'POST':
        form = PollForm(request.POST.copy())
        if form.is_valid():
            # change the poll
            poll.question = form.cleaned_data["question"]
            poll.allow_changing_vote = form.cleaned_data["allow_changing_vote"]
            poll.date_limit = form.cleaned_data["date_limit"]
            poll.end_date = form.cleaned_data["end_date"]
            poll.save()

            # change options, this is tricky
            options = poll.polloption_set.all()
            j = options.count()

            # existing options may be deleted or changed, so let's do it
            tobedeleted = []
            for i in range(j):
                if form.cleaned_data["option%d" % i]:
                    option = options[i]
                    option.text = form.cleaned_data["option%d" % i]
                    option.save()
                else:
                    tobedeleted.append(options[i])
            # now delete them
            for option in tobedeleted:
                option.delete()

            # create non-existing options
            for i in range(j, 16):
                if form.cleaned_data["option%d" % i]:
                    option = PollOption(
                        poll=poll,
                        text=form.cleaned_data["option%d" % i],
                    )
                    option.save()

            return HttpResponseRedirect(topic.get_absolute_url())
    else:
        # convert returned value "day/month/year"
        if poll.end_date:
            end_date = poll.end_date.strftime("%d/%m/%Y")
        else:
            end_date = None
        initial = {
            "question": poll.question,
            "allow_changing_vote": poll.allow_changing_vote,
            "allow_multiple_choices": poll.allow_multiple_choices,
            "date_limit": poll.date_limit,
            "end_date": end_date,
        }

        # add options to initial data
        i = 0
        for option in poll.polloption_set.all():
            initial["option%d" % i] = option.text
            i += 1
        form = PollForm(initial=initial)

    return render_response(request, "forum/change_poll.html", locals())
示例#4
0
def change_poll(request, forum_slug, topic_id):
    topic = get_object_or_404(Topic, pk=topic_id)
    forum = topic.forum
    if forum.slug != forum_slug:
        return HttpResponseRedirect(topic.get_change_poll_url())

    # check poll
    try:
        poll = topic.poll
    except: #DoesNotExist
        return HttpResponseRedirect(topic.get_create_poll_url())

    # check locks
    if topic.locked:
        return HttpResponse('Forum or topic is locked')

    if request.method == 'POST':
        form = PollForm(request.POST.copy())
        if form.is_valid():
            # change the poll
            poll.question = form.cleaned_data["question"]
            poll.allow_changing_vote = form.cleaned_data["allow_changing_vote"]
            poll.date_limit = form.cleaned_data["date_limit"]
            poll.end_date = form.cleaned_data["end_date"]
            poll.save()

            # change options, this is tricky
            options = poll.polloption_set.all()
            j = options.count()

            # existing options may be deleted or changed, so let's do it
            tobedeleted = []
            for i in range(j):
                if form.cleaned_data["option%d" % i]:
                    option = options[i]
                    option.text = form.cleaned_data["option%d" % i]
                    option.save()
                else:
                    tobedeleted.append(options[i])
            # now delete them
            for option in tobedeleted:
                option.delete()

            # create non-existing options
            for i in range(j, 16):
                if form.cleaned_data["option%d" % i]:
                    option = PollOption(
                            poll = poll,
                            text = form.cleaned_data["option%d" % i],
                            )
                    option.save()

            return HttpResponseRedirect(topic.get_absolute_url())
    else:
        # convert returned value "day/month/year"
        if poll.end_date:
            end_date = poll.end_date.strftime("%d/%m/%Y")
        else:
            end_date = None
        initial = {
                "question": poll.question,
                "allow_changing_vote": poll.allow_changing_vote,
                "allow_multiple_choices": poll.allow_multiple_choices,
                "date_limit": poll.date_limit,
                "end_date": end_date,
                }

        # add options to initial data
        i = 0
        for option in poll.polloption_set.all():
            initial["option%d" % i] = option.text
            i += 1
        form = PollForm(initial=initial)

    return render_response(request, "forum/change_poll.html", locals())