Revision 5f372104
Added by Jérôme Schneider over 12 years ago
calebasse/agenda/appointments.py | ||
---|---|---|
1 |
|
|
2 |
from calebasse.agenda.models import Occurence |
|
3 |
from calebasse.personnes.models import TimeTable |
|
4 |
|
|
5 |
class Appointment(object): |
|
6 |
|
|
7 |
def __init__(self, title=None, begin_hour=None, type=None, |
|
8 |
length=None, description=None, room=None, convocation_sent=None, |
|
9 |
service_name=None): |
|
10 |
""" """ |
|
11 |
self.title = title |
|
12 |
self.begin_hour = begin_hour |
|
13 |
self.type = type |
|
14 |
self.length = length |
|
15 |
self.description = description |
|
16 |
self.room = room |
|
17 |
self.convocation_sent = None |
|
18 |
self.service_name = None |
|
19 |
|
|
20 |
def load_from_occurence(self, occurence, service): |
|
21 |
""" """ |
|
22 |
delta = occurence.end_time - occurence.start_time |
|
23 |
self.length = (delta.hours * 60) + dela.minutes |
|
24 |
self.title = occurence.title |
|
25 |
self.begin_hour = occurence.start_time.hours |
|
26 |
if service in occurence.services: |
|
27 |
self.type = "busy-here" |
|
28 |
else: |
|
29 |
self.type = "busy-elsewhere" |
|
30 |
self.service_name = service.name |
|
31 |
self.room = occurence.room.name |
|
32 |
self.convocation_sent = occurence.convocation_sent |
|
33 |
self.description = occurence.description |
|
34 |
|
|
35 |
def get_daily_appointments(date, worker, service): |
|
36 |
""" |
|
37 |
""" |
|
38 |
weekday_mapping = { |
|
39 |
'0': 'dimanche', |
|
40 |
'1': 'lundi', |
|
41 |
'2': 'mardi', |
|
42 |
'3': 'mercredi', |
|
43 |
'4': 'jeudi', |
|
44 |
'5': 'vendredi' |
|
45 |
'6': 'samedi' |
|
46 |
} |
|
47 |
weekday = weekday_mapping[date.strftime("%w")] |
|
48 |
time_tables = TimeTable.objects.filter(worker=worker).\ |
|
49 |
filter(service=service).\ |
|
50 |
filter(weekday=weekday).\ |
|
51 |
filter(start_date__lte=date).\ |
|
52 |
filter(end_date__gte=date) |
|
53 |
occurences = Occurence.objects.daily_occurrences(date, [worker]) |
|
54 |
|
|
55 |
|
calebasse/agenda/managers.py | ||
---|---|---|
81 | 81 |
|
82 | 82 |
#use_for_related_fields = True |
83 | 83 |
|
84 |
def daily_occurrences(self, date=None, participants=None):
|
|
84 |
def daily_occurrences(self, date, participants=None, services=None):
|
|
85 | 85 |
''' |
86 | 86 |
Returns a queryset of for instances that have any overlap with a |
87 | 87 |
particular day. |
... | ... | |
110 | 110 |
) |
111 | 111 |
|
112 | 112 |
if participants: |
113 |
return qs.filter(event__participants__in=participants) |
|
114 |
else: |
|
115 |
return qs |
|
113 |
qs = qs.filter(event__participants__in=participants) |
|
114 |
if services: |
|
115 |
qs = qs.filter(services__in=services) |
|
116 |
return qs |
|
116 | 117 |
|
117 | 118 |
def daily_disponiblity(self, date, participants): |
118 | 119 |
start_datetime = datetime(date.year, date.month, date.day, 8, 0) |
calebasse/agenda/views.py | ||
---|---|---|
31 | 31 |
context['workers_agenda'].append({'worker': worker, |
32 | 32 |
'agenda': Occurrence.objects.daily_occurrences(context['date'], [worker])}) |
33 | 33 |
|
34 |
context['disponnibility'] = Occurrence.objects.daily_disponiblity(context['date'], context['workers'])
|
|
34 |
context['disponnibility'] = Occurrence.objects.daily_disponiblity(context['date'], workers)
|
|
35 | 35 |
return context |
calebasse/personnes/models.py | ||
---|---|---|
26 | 26 |
return self.filter(services__in=[service]).filter(type=type) |
27 | 27 |
else: |
28 | 28 |
return self.filter(services__in=[service]) |
29 |
|
|
30 | 29 |
|
31 | 30 |
class Worker(People): |
32 | 31 |
objects = WorkerManager() |
Also available in: Unified diff
Agenda: add appointments management