Revision f8ad3b42
Added by Jérôme Schneider over 12 years ago
calebasse/agenda/managers.py | ||
---|---|---|
1 | 1 |
|
2 |
from datetime import datetime |
|
2 |
from datetime import datetime, timedelta
|
|
3 | 3 |
from dateutil import rrule |
4 | 4 |
|
5 | 5 |
from django.db import models |
... | ... | |
79 | 79 |
|
80 | 80 |
class OccurrenceManager(models.Manager): |
81 | 81 |
|
82 |
use_for_related_fields = True |
|
83 |
|
|
84 |
class Meta: |
|
85 |
app_label = 'agenda' |
|
82 |
#use_for_related_fields = True |
|
86 | 83 |
|
87 | 84 |
def daily_occurrences(self, date=None, participants=None): |
88 | 85 |
''' |
... | ... | |
117 | 114 |
else: |
118 | 115 |
return qs |
119 | 116 |
|
117 |
def daily_disponiblity(self, date, participants): |
|
118 |
start_datetime = datetime(date.year, date.month, date.day, 8, 0) |
|
119 |
end_datetime = datetime(date.year, date.month, date.day, 8, 15) |
|
120 |
result = dict() |
|
121 |
while (start_datetime.hour <= 19): |
|
122 |
for participant in participants: |
|
123 |
if not result.has_key(start_datetime.hour): |
|
124 |
result[start_datetime.hour] = [0, 1, 2, 3] |
|
125 |
result[start_datetime.hour][0] = [] |
|
126 |
result[start_datetime.hour][1] = [] |
|
127 |
result[start_datetime.hour][2] = [] |
|
128 |
result[start_datetime.hour][3] = [] |
|
129 |
quater = 0 |
|
130 |
qs = self.filter( |
|
131 |
models.Q( |
|
132 |
start_time__gte=start_datetime, |
|
133 |
start_time__lt=end_datetime, |
|
134 |
) | |
|
135 |
models.Q( |
|
136 |
end_time__gt=start_datetime, |
|
137 |
end_time__lte=end_datetime, |
|
138 |
) | |
|
139 |
models.Q( |
|
140 |
start_time__lt=start_datetime, |
|
141 |
end_time__gt=end_datetime, |
|
142 |
) |
|
143 |
).filter(event__participants__in=[participant]) |
|
144 |
|
|
145 |
if qs: |
|
146 |
result[start_datetime.hour][quater].append({'id': participant.id, 'dispo': 'busy'}) |
|
147 |
else: |
|
148 |
result[start_datetime.hour][quater].append({'id': participant.id, 'dispo': 'free'}) |
|
149 |
quater += 1 |
|
150 |
start_datetime += timedelta(minutes=15) |
|
151 |
end_datetime += timedelta(minutes=15) |
|
152 |
return result |
|
153 |
|
|
154 |
|
Also available in: Unified diff
Manage disponiblity and fix fixtures
relation * agenda/templates/agenda/index.html: add disponibility support * agenda/views.py: add disponibility support * cale_base/fixtures/agenda.json: little fixes