diff options
Diffstat (limited to 'polls/views.py')
| -rw-r--r-- | polls/views.py | 53 | 
1 files changed, 33 insertions, 20 deletions
diff --git a/polls/views.py b/polls/views.py index 8e04b12..8f5b2c1 100644 --- a/polls/views.py +++ b/polls/views.py @@ -30,10 +30,10 @@ from django.utils.translation import gettext_lazy as _  from django.shortcuts import render_to_response  from django.http import HttpResponseRedirect -from papillon.settings import LANGUAGES +from papillon.settings import LANGUAGES, BASE_SITE  from papillon.polls.models import Poll, PollUser, Choice, Voter, Vote, \                                    Category, Comment -from papillon.polls.forms import CreateForm, CreateWithCatForm +from papillon.polls.forms import CreatePollForm, AdminPollForm  def getBaseResponse(request):      """Manage basic fields for the template @@ -88,34 +88,47 @@ def create(request):                  url += random_choice(chars)              url += str(int(time.time()))          return url -     +      response_dct, redirect = getBaseResponse(request) -    base_form = CreateForm  -    if Category.objects.all().count(): -        base_form = CreateWithCatForm      if request.method == 'POST': -        form = base_form(request.POST) +        form = CreatePollForm(request.POST)          if form.is_valid(): -            author = PollUser(name=form.cleaned_data['author_name']) -            author.save() -            base_url = genRandomURL() -            admin_url = genRandomURL() -            category = None -            if 'category' in form.cleaned_data: -                category = form.cleaned_data['category'] -            poll = Poll(name=form.cleaned_data['name'], -description=form.cleaned_data['description'], author=author, base_url=base_url, -admin_url=admin_url, type=form.cleaned_data['poll_type'], category=category, -public=form.cleaned_data['public']) +            poll = form.save() +            poll.admin_url = genRandomURL() +            poll.base_url = genRandomURL()              poll.save()              return HttpResponseRedirect('http://%sedit/%s/' % ( -                            response_dct['root_url'], admin_url)) +                            response_dct['root_url'], poll.admin_url))      else: -        form = base_form() +        form = CreatePollForm()      response_dct['form'] = form      return render_to_response('create.html', response_dct) +def edit(request, admin_url): +    '''Edition of a poll. +    ''' +    response_dct, redirect = getBaseResponse(request) +    try: +        poll = Poll.objects.filter(admin_url=admin_url)[0] +    except IndexError: +        # if the poll don't exist redirect to the creation page +        url = response_dct['admin_url'] +        return response_dct, HttpResponseRedirect(url) +    Form = AdminPollForm + +    if request.method == 'POST': +        form = Form(request.POST, instance=poll) +        if form.is_valid(): +            poll = form.save() +            return HttpResponseRedirect('http://%sedit/%s/' % ( +                            response_dct['root_url'], poll.admin_url)) +    else: +        form = Form(instance=poll) +    response_dct['form'] = form +    response_dct['poll'] = poll +    return render_to_response('edit.html', response_dct) +  def createOrEdit(request, admin_url):      '''Creation or edition of a poll.      admin_url is given to identify a particular poll  | 
