Revision 2ff5e689
Added by Jérôme Schneider over 12 years ago
calebasse/agenda/views.py | ||
---|---|---|
1 | 1 |
import datetime |
2 | 2 |
|
3 |
from django.db.models import Q |
|
3 | 4 |
from django.shortcuts import redirect |
4 | 5 |
|
5 | 6 |
from calebasse.cbv import TemplateView, CreateView |
6 | 7 |
from calebasse.agenda.models import Occurrence |
8 |
from calebasse.personnes.models import TimeTable |
|
7 | 9 |
from calebasse.actes.models import EventAct |
8 | 10 |
from calebasse.agenda.appointments import get_daily_appointments |
9 | 11 |
from calebasse.personnes.models import Worker |
... | ... | |
22 | 24 |
|
23 | 25 |
def get_context_data(self, **kwargs): |
24 | 26 |
context = super(AgendaHomepageView, self).get_context_data(**kwargs) |
27 |
|
|
28 |
weekday_mapping = { |
|
29 |
'0': u'dimanche', |
|
30 |
'1': u'lundi', |
|
31 |
'2': u'mardi', |
|
32 |
'3': u'mercredi', |
|
33 |
'4': u'jeudi', |
|
34 |
'5': u'vendredi', |
|
35 |
'6': u'samedi' |
|
36 |
} |
|
37 |
weekday = weekday_mapping[context['date'].strftime("%w")] |
|
38 |
time_tables = TimeTable.objects.select_related().\ |
|
39 |
filter(service=self.service).\ |
|
40 |
filter(weekday=weekday).\ |
|
41 |
filter(start_date__lte=context['date']).\ |
|
42 |
filter(Q(end_date=None) |Q(end_date__gte=context['date'])).\ |
|
43 |
order_by('start_date') |
|
44 |
occurrences = Occurrence.objects.daily_occurrences(context['date']).select_related().order_by('start_time') |
|
45 |
|
|
25 | 46 |
context['workers_types'] = [] |
26 | 47 |
context['workers_agenda'] = [] |
27 | 48 |
context['disponnibility'] = {} |
28 | 49 |
workers = [] |
29 |
service = Service.objects.get(name=context['service_name']) |
|
30 | 50 |
for worker_type in WorkerType.objects.all(): |
31 | 51 |
data = {'type': worker_type.name, 'workers': Worker.objects.for_service(self.service, worker_type) } |
32 | 52 |
context['workers_types'].append(data) |
33 | 53 |
workers.extend(data['workers']) |
34 | 54 |
|
35 | 55 |
for worker in workers: |
56 |
time_tables_worker = [tt for tt in time_tables if tt.worker.id == worker.id] |
|
57 |
occurrences_worker = [o for o in occurrences for id in o.event.participants.values_list('id') if id[0] == worker.id] |
|
36 | 58 |
context['workers_agenda'].append({'worker': worker, |
37 |
'appointments': get_daily_appointments(context['date'], worker, service)}) |
|
59 |
'appointments': get_daily_appointments(context['date'], worker, self.service, |
|
60 |
time_tables_worker, occurrences_worker)}) |
|
38 | 61 |
|
39 | 62 |
context['disponibility'] = Occurrence.objects.daily_disponiblity(context['date'], workers) |
40 | 63 |
return context |
... | ... | |
62 | 85 |
|
63 | 86 |
def new_appointment(request): |
64 | 87 |
pass |
88 |
|
Also available in: Unified diff
agenda: optimize appoinments rendering and use interval lib
sql request * calebasse/agenda/views.py: use more generic sql requests * calebasse/agenda/models.py: cosmetic * calebasse/agenda/utils.py: deleted is use this function into
appointments * calebasse/fixtures/personnes.json: rename Lepouple Pol to Pol
Lepouple * scripts/import_db.py: remove ipdb