2016-12-05 19:18:03 +00:00
|
|
|
from django.shortcuts import render
|
|
|
|
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 _
|
2016-12-20 15:00:14 +00:00
|
|
|
from django.forms.models import modelform_factory
|
|
|
|
from django.forms import CheckboxSelectMultiple
|
2016-12-19 02:54:57 +00:00
|
|
|
from django.utils import timezone
|
2016-12-05 19:18:03 +00:00
|
|
|
from django.conf import settings
|
2016-12-20 15:00:14 +00:00
|
|
|
from django import forms
|
2016-12-05 19:18:03 +00:00
|
|
|
|
|
|
|
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, CanCreateMixin
|
2016-12-20 15:00:14 +00:00
|
|
|
from core.views.forms import SelectDateTime
|
|
|
|
from core.widgets import ChoiceWithOtherField
|
2016-12-13 21:22:19 +00:00
|
|
|
from election.models import Election, Role, Candidature
|
2016-12-05 19:18:03 +00:00
|
|
|
|
2016-12-20 15:00:14 +00:00
|
|
|
from ajax_select.fields import AutoCompleteSelectField
|
|
|
|
|
|
|
|
# Forms
|
|
|
|
|
|
|
|
|
|
|
|
class CandidateForm(forms.Form):
|
|
|
|
user = AutoCompleteSelectField('users', label=_('Refound this account'), help_text=None, required=True)
|
|
|
|
|
2016-12-05 19:18:03 +00:00
|
|
|
# Display elections
|
|
|
|
|
|
|
|
|
|
|
|
class ElectionsListView(CanViewMixin, ListView):
|
|
|
|
"""
|
|
|
|
A list with all responsabilities and their candidates
|
|
|
|
"""
|
|
|
|
model = Election
|
|
|
|
template_name = 'election/election_list.jinja'
|
2016-12-05 22:49:13 +00:00
|
|
|
|
2016-12-19 02:54:57 +00:00
|
|
|
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
|
|
|
|
|
2016-12-05 22:49:13 +00:00
|
|
|
|
|
|
|
class ElectionDetailView(CanViewMixin, DetailView):
|
|
|
|
"""
|
|
|
|
Details an election responsability by responsability
|
|
|
|
"""
|
|
|
|
model = Election
|
|
|
|
template_name = 'election/election_detail.jinja'
|
|
|
|
pk_url_kwarg = "election_id"
|
|
|
|
|
2016-12-20 15:00:14 +00:00
|
|
|
|
|
|
|
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})
|