diff options
| author | etienne <etienne@07715635-78ed-41b0-aaf1-0afda6c37f35> | 2009-06-08 00:15:00 +0000 | 
|---|---|---|
| committer | etienne <etienne@07715635-78ed-41b0-aaf1-0afda6c37f35> | 2009-06-08 00:15:00 +0000 | 
| commit | 54550d2091d2254fd20fbeefdc82dc56a69611fe (patch) | |
| tree | 69b2158739967fe8894188be09dfaf35db2c18fb /polls/views.py | |
| parent | 3e95d82ac2ccd24dbe331d4047ae243144dfac25 (diff) | |
| download | Papillon-54550d2091d2254fd20fbeefdc82dc56a69611fe.tar.bz2 Papillon-54550d2091d2254fd20fbeefdc82dc56a69611fe.zip  | |
Using newforms infor the create form
Diffstat (limited to 'polls/views.py')
| -rw-r--r-- | polls/views.py | 45 | 
1 files changed, 44 insertions, 1 deletions
diff --git a/polls/views.py b/polls/views.py index b7103a8..8e04b12 100644 --- a/polls/views.py +++ b/polls/views.py @@ -33,6 +33,7 @@ from django.http import HttpResponseRedirect  from papillon.settings import LANGUAGES  from papillon.polls.models import Poll, PollUser, Choice, Voter, Vote, \                                    Category, Comment +from papillon.polls.forms import CreateForm, CreateWithCatForm  def getBaseResponse(request):      """Manage basic fields for the template @@ -73,6 +74,48 @@ def category(request, category_id):      response_dct['polls'] = Poll.objects.filter(public=True, category=category)      return render_to_response('category.html', response_dct) +def create(request): +    '''Creation of a poll. +    ''' +    def genRandomURL(): +        "Generation of a random url" +        url = '' +        while not url or Poll.objects.filter(base_url=url).count() or\ +              Poll.objects.filter(admin_url=url).count(): +            url = '' +            chars = string.letters + string.digits +            for i in xrange(6): +                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) +        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.save() +            return HttpResponseRedirect('http://%sedit/%s/' % ( +                            response_dct['root_url'], admin_url)) +    else: +        form = base_form() +    response_dct['form'] = form +    return render_to_response('create.html', response_dct) +  def createOrEdit(request, admin_url):      '''Creation or edition of a poll.      admin_url is given to identify a particular poll @@ -492,7 +535,7 @@ def poll(request, poll_url):                  vote.save()                  idx = choices.index(choice)                  voter.votes.insert(idx, vote) -    sums = [choice.getSum() for choice in choices] +    sums = [choice.getSum(poll.type == 'B') for choice in choices]      vote_max = max(sums)      c_idx = 0      while c_idx < len(choices):  | 
