Nice display for elections

This commit is contained in:
2016-12-19 03:54:57 +01:00
parent 52e69b0ac1
commit c604282b77
7 changed files with 92 additions and 15 deletions

View File

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
from django.conf import settings
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('election', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='candidature',
name='has_voted',
),
migrations.AddField(
model_name='role',
name='has_voted',
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, related_name='has_voted', verbose_name='has voted'),
),
]

View File

@ -46,6 +46,7 @@ class Role(models.Model):
election = models.ForeignKey(Election, related_name='role', verbose_name=_("election"))
title = models.CharField(_('title'), max_length=255)
description = models.TextField(_('description'), null=True, blank=True)
has_voted = models.ManyToManyField(User, verbose_name=('has voted'), related_name='has_voted')
def __str__(self):
return ("%s : %s") % (self.election.title, self.title)
@ -66,7 +67,6 @@ class Candidature(models.Model):
role = models.ForeignKey(Role, related_name='candidature', verbose_name=_("role"))
user = models.ForeignKey(User, verbose_name=_('user'), related_name='candidate', blank=True)
program = models.TextField(_('description'), null=True, blank=True)
has_voted = models.ManyToManyField(User, verbose_name=_('has_voted'), related_name='has_voted')
liste = models.ForeignKey(List, related_name='candidature', verbose_name=_('list'))

View File

@ -11,17 +11,34 @@
<h1>{{object.title}}</h1>
<p>{{object.description}}</p>
<p>{% trans %}End :{% endtrans %} {{object.end_date}}</p>
{% for role in object.role.all() %}
<h2>{{role.title}}</h2>
{% for candidature in role.candidature.all() %}
<a href="{{url('core:user_profile', user_id=candidature.user.id)}}"><h3>{{candidature.user.first_name}} {{candidature.user.last_name}} ({{candidature.user.nick_name}})</h3></a>
{% if candidature.user.profile_pict %}
<p><img src="{{candidature.user.profile_pict.get_download_url()}}" alt="{% trans %}Profile{% endtrans %}"/></p>
{% endif %}
{% if candidature.program %}
<h4>Programme</h4>
<p>{{candidature.program}}</p>
{% endif %}
<table>
<tr>
{% set nb_list = object.list.all().count() + 1 -%}
{% for liste in object.list.all() %}
<td>{{liste.title}}</td>
{% set nb_list = nb_list + 1 -%}
{% endfor %}
<td>{% trans %}Blank vote{% endtrans %}</td>
</tr>
{% for role in object.role.all() %}
<tr><td colspan={{nb_list}}>{{role.title}}</td></tr>
<tr>
{% for liste in object.list.all() %}
<td>
<ul>
{% for candidature in role.candidature.filter(liste=liste) %}
<li>
{{candidature.user.first_name}} {{candidature.user.last_name}} {{candidature.user.nick_name or ''}}
{% if candidature.user.profile_pict %}
<img src="{{candidature.user.profile_pict.get_download_url()}}" alt="{% trans %}Profile{% endtrans %}">
{% endif %}
</li>
{% endfor %}
</ul>
</td>
{% endfor %}
<td></td>
</tr>
{% endfor %}
</table>
{% endblock %}

View File

@ -6,8 +6,6 @@
{% block content %}
{% for el in object_list %}
{% if el.is_active %}
<p><a href="{{ url('election:detail', election_id=el.id) }}">{{el}}</a></p>
{% endif %}
<p><a href="{{ url('election:detail', election_id=el.id) }}">{{el}}</a></p>
{% endfor %}
{% endblock %}

View File

@ -3,6 +3,7 @@ from django.views.generic import ListView, DetailView, RedirectView
from django.views.generic.edit import UpdateView, CreateView, DeleteView, FormView
from django.core.urlresolvers import reverse_lazy, reverse
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone
from django.conf import settings
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, CanCreateMixin
@ -18,6 +19,12 @@ class ElectionsListView(CanViewMixin, ListView):
model = Election
template_name = 'election/election_list.jinja'
def get_queryset(self):
qs = super(ElectionsListView, self).get_queryset()
today = timezone.now()
qs = qs.filter(end_date__gte=today, start_date__lte=today)
return qs
class ElectionDetailView(CanViewMixin, DetailView):
"""