diff options
| author | etienne <etienne@07715635-78ed-41b0-aaf1-0afda6c37f35> | 2008-08-21 00:40:10 +0000 | 
|---|---|---|
| committer | etienne <etienne@07715635-78ed-41b0-aaf1-0afda6c37f35> | 2008-08-21 00:40:10 +0000 | 
| commit | 95c2f32086b98edcdc1121bb936cfdefa1ee33bf (patch) | |
| tree | 7d6c78b791ba193f10dc972131d9a97fbd65635a | |
| parent | fad8645171c29359ba9ecfc128dceba545298849 (diff) | |
| download | Papillon-95c2f32086b98edcdc1121bb936cfdefa1ee33bf.tar.bz2 Papillon-95c2f32086b98edcdc1121bb936cfdefa1ee33bf.zip | |
Implementation of the 3 choices poll
| -rw-r--r-- | polls/models.py | 13 | ||||
| -rw-r--r-- | polls/views.py | 28 | ||||
| -rw-r--r-- | templates/createOrEdit.html | 9 | ||||
| -rw-r--r-- | templates/vote.html | 32 | 
4 files changed, 64 insertions, 18 deletions
| diff --git a/polls/models.py b/polls/models.py index 2abd4ae..f4f1147 100644 --- a/polls/models.py +++ b/polls/models.py @@ -38,10 +38,12 @@ class Poll(models.Model):      STATUS = (('A', _('Available')),                ('D', _('Disabled')),)      status = models.CharField(maxlength=1, choices=STATUS) -    TYPE = (('M', _('Meeting')), +    """TYPE = (('M', _('Meeting')),              ('P', _('Poll')),              ('B', _('Balanced poll')), -            ('O', _('One choice poll')),) +            ('O', _('One choice poll')),)""" +    TYPE = (('P', _('Poll')), +            ('B', _('Balanced poll')),)      type = models.CharField(maxlength=1, choices=TYPE)      def getTypeLabel(self): @@ -61,8 +63,7 @@ class Choice(models.Model):  class Vote(models.Model):      voter = models.ForeignKey(PollUser)      choice = models.ForeignKey(Choice) -    VOTE = ((-1, _('No')), +    VOTE = ((1, _('Yes')),              (0, _('Maybe')), -            (1, _('Yes')),) -    value = models.IntegerField(choices=VOTE) - +            (-1, _('No')),) +    value = models.IntegerField(choices=VOTE)
\ No newline at end of file diff --git a/polls/views.py b/polls/views.py index bf6320a..771396a 100644 --- a/polls/views.py +++ b/polls/views.py @@ -212,7 +212,13 @@ def poll(request, poll_url):                          # probably been deleted                          vote.delete()                      else: -                        vote.value = 1 +                        # try if a specific value is specified in the form +                        # like in balanced poll +                        try: +                            value = int(request.POST[key]) +                        except ValueError: +                            value = 1 +                        vote.value = value                          vote.save()                          selected_choices.append(vote.choice)                  except (ValueError, IndexError): @@ -224,7 +230,13 @@ def poll(request, poll_url):                      choice = Choice.objects.filter(id=id)[0]                      if choice not in choices:                          raise ValueError -                    v = Vote(voter=author, choice=choice, value=1) +                    # try if a specific value is specified in the form +                    # like in balanced poll +                    try: +                        value = int(request.POST[key]) +                    except ValueError: +                        value = 1 +                    v = Vote(voter=author, choice=choice, value=value)                      v.save()                      selected_choices.append(choice)                  except (ValueError, IndexError): @@ -258,7 +270,13 @@ def poll(request, poll_url):                      choice = Choice.objects.filter(id=id)[0]                      if choice not in choices:                          raise ValueError -                    v = Vote(voter=author, choice=choice, value=1) +                    # try if a specific value is specified in the form +                    # like in balanced poll +                    try: +                        value = int(request.POST[key]) +                    except ValueError: +                        value = 1 +                    v = Vote(voter=author, choice=choice, value=value)                      v.save()                      selected_choices.append(choice)                  except (ValueError, IndexError): @@ -302,8 +320,10 @@ def poll(request, poll_url):      response_dct.update({'choices':choices,                           'poll_type_name':poll.getTypeLabel(), +                         'poll_type':poll.type,                           'poll_name':poll.name, -                         'poll_desc':poll.description}) +                         'poll_desc':poll.description, +                         'VOTE':Vote.VOTE,})      response_dct['base_url'] = "/".join(request.path.split('/')[:-2]) \                                 + '/%s/' % poll.base_url diff --git a/templates/createOrEdit.html b/templates/createOrEdit.html index 12d9d9d..4eecaa2 100644 --- a/templates/createOrEdit.html +++ b/templates/createOrEdit.html @@ -34,21 +34,20 @@     <td>{% if new %}<textarea name='poll_desc'>{{poll_desc}}</textarea>{% else %}{{poll_desc}}{% endif %}</td>     <td class='form_description'>{% trans "Precise description of the poll" %}</td>    </tr> -  <!--<tr> +  <tr>     <td><label for='poll_type'>{% trans "Poll type" %}</label></td>     <td>{% if new %}<select name='poll_type'>      {% for typ in TYPES %}<option value='{{typ.0}}'{% ifequal poll_type typ.0%} selected='selected'{% endifequal %}>{{typ.1}}</option>{% endfor %}     </select>{% else %}{{type_name}}{% endif %}</td>     <td class='form_description'>{% trans "Type of the poll:" %}     <ul> -    <li>{% trans "Meeting is the appropriate type to set a date for a meeting."%}</li> +    <!--<li>{% trans "Meeting is the appropriate type to set a date for a meeting."%}</li>!-->      <li>{% trans "Poll is the appropriate type for a simple multi-choice poll" %}</li>      <li>{% trans "Balanced poll lets voters setting negative vote for some choices" %}</li> -    <li>{% trans "One choice poll" %}</li> +    <!--<li>{% trans "One choice poll" %}</li>!-->     </ul>     </td> -  </tr>!--> -  <input type='hidden' name='poll_type' value='M'/> +  </tr>    {% if not new %}{% if choices %}<tr>     <th>{% trans "Choices" %}</th><th> </th><th>{% trans "Delete?"%}</th>    </tr> diff --git a/templates/vote.html b/templates/vote.html index 0174a18..27e54a3 100644 --- a/templates/vote.html +++ b/templates/vote.html @@ -17,10 +17,28 @@    <input type='hidden' name='voter' value='{{voter.id}}'/>    <td class='simple'></td>    <td><input type='text' name='author_name' value='{{voter.name}}'/></td> -  {% for vote in voter.votes %}<td><input type='checkbox' name='{%if vote.id%}vote_{{vote.id}}{%else%}choice_{{vote}}{%endif%}'{%ifequal vote.value 1%} checked='checked'{%endifequal%}/></td>{%endfor%} +  {% for vote in voter.votes %}<td> +  {% ifequal poll_type 'P' %} +  <input type='checkbox' name='{%if vote.id%}vote_{{vote.id}}{%else%}choice_{{vote}}{%endif%}'{%ifequal vote.value 1%} checked='checked'{%endifequal%}/> +  {% endifequal %} +  {% ifequal poll_type 'B' %} +  <select name='{%if vote.id%}vote_{{vote.id}}{%else%}choice_{{vote}}{%endif%}'> +    {% for vote_choice in VOTE %} +    <option value='{{vote_choice.0}}'{%ifequal vote.value vote_choice.0%} selected='selected'{%endifequal%}>{{vote_choice.1}}</option> +    {% endfor %} +  </select> +  {% endifequal %} +  </td>{%endfor%}    {%else%}<td class='simple'><a href='?voter={{voter.id}}'>{% trans "Edit" %}</a></td>    <td>{{voter.name}}</td> -  {% for vote in voter.votes %}<td class='{%ifequal vote.value 1%}OK{%else%}KO{%endifequal%}'>{% ifequal vote.value 1%}Yes{%else%}No{%endifequal%}</td> +  {% for vote in voter.votes %}<td class='{%ifequal vote.value 1%}OK{%else%}{%ifequal vote.value 0%}OKO{%else%}KO{%endifequal%}{%endifequal%}'> +  {%ifequal poll_type 'P'%} +  {%ifequal vote.value 0%}{% trans "No" %}{%else%}{% trans "Yes" %}{%endifequal%} +  {%else%} +  {%for VOT in VOTE%} +  {%ifequal VOT.0 vote.value%}{{VOT.1}}{%endifequal%}{%endfor%} +  {%endifequal%} +  </td>    {%endfor%}    {%endifequal%}   </tr>{%endfor%} @@ -28,7 +46,15 @@   <tr>    <td class='simple'></td>    <td><input type='text' name='author_name'/></td> -  {%for choice in choices%}<td><input type='checkbox' name='choice_{{choice.id}}'/></td>{%endfor%} +  {%for choice in choices%}<td> +  {% ifequal poll_type 'P' %} +  <input type='checkbox' name='choice_{{choice.id}}'/>{% endifequal %} +  {% ifequal poll_type 'B' %} +  <select name='choice_{{choice.id}}'>{% for vote_choice in VOTE %} +    <option value='{{vote_choice.0}}'{%ifequal vote_choice.0 0%} selected='selected'{%endifequal%}>{{vote_choice.1}}</option>{% endfor %} +  </select> +  {% endifequal %} +  </td>{%endfor%}   </tr>   {%endif%}   <tr id='sum'> | 
