mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-09 19:40:19 +00:00
Add new widget (not tested) and new bdd scheme for elections
This commit is contained in:
43
election/migrations/0004_auto_20161219_2302.py
Normal file
43
election/migrations/0004_auto_20161219_2302.py
Normal file
@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0016_auto_20161212_1922'),
|
||||
('election', '0003_auto_20161219_1832'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='election',
|
||||
name='candidature_group',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='election',
|
||||
name='vote_group',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='election',
|
||||
name='candidature_groups',
|
||||
field=models.ManyToManyField(to='core.Group', verbose_name='candidature group', related_name='candidate_elections', blank=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='election',
|
||||
name='vote_groups',
|
||||
field=models.ManyToManyField(to='core.Group', verbose_name='vote group', related_name='votable_elections', blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='election',
|
||||
name='edit_groups',
|
||||
field=models.ManyToManyField(to='core.Group', verbose_name='edit group', related_name='editable_elections', blank=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='election',
|
||||
name='view_groups',
|
||||
field=models.ManyToManyField(to='core.Group', verbose_name='view group', related_name='viewable_elections', blank=True),
|
||||
),
|
||||
]
|
@ -18,10 +18,10 @@ class Election(models.Model):
|
||||
start_date = models.DateTimeField(_('start date'), blank=False)
|
||||
end_date = models.DateTimeField(_('end date'), blank=False)
|
||||
|
||||
edit_groups = models.ManyToManyField(Group, related_name="editable_election", verbose_name=_("edit group"), blank=True)
|
||||
view_groups = models.ManyToManyField(Group, related_name="viewable_election", verbose_name=_("view group"), blank=True)
|
||||
vote_group = models.ManyToManyField(Group, related_name="votable_election", verbose_name=_("vote group"), blank=True)
|
||||
candidature_group = models.ManyToManyField(Group, related_name="candidate_election", verbose_name=_("candidature group"), blank=True)
|
||||
edit_groups = models.ManyToManyField(Group, related_name="editable_elections", verbose_name=_("edit group"), blank=True)
|
||||
view_groups = models.ManyToManyField(Group, related_name="viewable_elections", verbose_name=_("view group"), blank=True)
|
||||
vote_groups = models.ManyToManyField(Group, related_name="votable_elections", verbose_name=_("vote group"), blank=True)
|
||||
candidature_groups = models.ManyToManyField(Group, related_name="candidate_elections", verbose_name=_("candidature group"), blank=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
@ -11,14 +11,21 @@
|
||||
<h1>{{object.title}}</h1>
|
||||
<p>{{object.description}}</p>
|
||||
<p>{% trans %}End :{% endtrans %} {{object.end_date}}</p>
|
||||
{% if object.election_list.exists() %}
|
||||
<table>
|
||||
<tr>
|
||||
{% set nb_list = object.election_list.all().count() + 1 -%}
|
||||
{% for liste in object.election_list.all() %}
|
||||
<td>{{liste.title}}</td>
|
||||
{% if object.is_candidature_active -%}
|
||||
{% set nb_list = nb_list -%}
|
||||
{% else -%}
|
||||
{% set nb_list = nb_list + 1 -%}
|
||||
{% endif -%}
|
||||
{% endfor %}
|
||||
{% if not object.is_candidature_active -%}
|
||||
<td>{% trans %}Blank vote{% endtrans %}</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for role in object.role.all() %}
|
||||
<tr><td colspan={{nb_list}}>{{role.title}}</td></tr>
|
||||
@ -40,8 +47,14 @@
|
||||
</ul>
|
||||
</td>
|
||||
{% endfor %}
|
||||
{% if not object.is_candidature_active -%}
|
||||
<td></td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
{% if object.is_candidature_active -%}
|
||||
candidature
|
||||
{% endif -%}
|
||||
{% endblock %}
|
@ -4,5 +4,6 @@ from election.views import *
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', ElectionsListView.as_view(), name='list'),
|
||||
url(r'^create$', PageCreateView.as_view(), name='create'),
|
||||
url(r'^(?P<election_id>[0-9]+)/detail$', ElectionDetailView.as_view(), name='detail'),
|
||||
]
|
||||
|
@ -3,12 +3,25 @@ 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.forms.models import modelform_factory
|
||||
from django.forms import CheckboxSelectMultiple
|
||||
from django.utils import timezone
|
||||
from django.conf import settings
|
||||
from django import forms
|
||||
|
||||
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, CanCreateMixin
|
||||
from core.views.forms import SelectDateTime
|
||||
from core.widgets import ChoiceWithOtherField
|
||||
from election.models import Election, Role, Candidature
|
||||
|
||||
from ajax_select.fields import AutoCompleteSelectField
|
||||
|
||||
# Forms
|
||||
|
||||
|
||||
class CandidateForm(forms.Form):
|
||||
user = AutoCompleteSelectField('users', label=_('Refound this account'), help_text=None, required=True)
|
||||
|
||||
# Display elections
|
||||
|
||||
|
||||
@ -34,4 +47,24 @@ class ElectionDetailView(CanViewMixin, DetailView):
|
||||
template_name = 'election/election_detail.jinja'
|
||||
pk_url_kwarg = "election_id"
|
||||
|
||||
# Forms
|
||||
|
||||
class PageCreateView(CanCreateMixin, CreateView):
|
||||
model = Election
|
||||
form_class = modelform_factory(Election,
|
||||
fields=['title', 'description', 'start_candidature', 'end_candidature', 'start_date', 'end_date',
|
||||
'edit_groups', 'view_groups', 'vote_groups', 'candidature_groups'],
|
||||
widgets={
|
||||
'edit_groups': CheckboxSelectMultiple,
|
||||
'view_groups': CheckboxSelectMultiple,
|
||||
'edit_groups': CheckboxSelectMultiple,
|
||||
'vote_groups': CheckboxSelectMultiple,
|
||||
'candidature_groups': CheckboxSelectMultiple,
|
||||
'start_date': SelectDateTime,
|
||||
'end_date': SelectDateTime,
|
||||
'start_candidature': SelectDateTime,
|
||||
'end_candidature': SelectDateTime,
|
||||
})
|
||||
template_name = 'core/page_prop.jinja'
|
||||
|
||||
def get_success_url(self, **kwargs):
|
||||
return reverse_lazy('election:detail', kwargs={'election_id': self.object.id})
|
||||
|
Reference in New Issue
Block a user