Project

General

Profile

« Previous | Next » 

Revision a5bdc8ec

Added by Benjamin Dauvergne over 12 years ago

personnes: add new methods of the HolidayQuerySet

New methods allow to filter holidays based on a time period or for the
future (happening later than today, today included).

View differences:

calebasse/personnes/views.py
80 80
            if intervene_status and 0 < len(intervene_status) < 2:
81 81
                qs = qs.filter(type__intervene=intervene_status[0] == 'a')
82 82
        today = date.today()
83
        if models.Holiday.objects.for_service(self.service) \
83
        if models.Holiday.objects.for_service(self.service).future() \
84 84
                .filter(start_date__lte=today).exists():
85 85
            for worker in qs:
86 86
                worker.holiday = True
87 87
        else:
88
            qs2 = models.Holiday.objects.filter(
89
                           start_date__lte=today,
90
                           end_date__gte=today)
88
            qs2 = models.Holiday.objects.today()
91 89
            worker_dict = dict(((w.id, w) for w in qs))
92 90
            for worker in qs:
93 91
                worker.holiday = False
......
138 136
        ctx['timetables'] = timetable
139 137
        ctx['holidays'] = models.Holiday.objects \
140 138
                            .for_worker(self.object) \
139
                            .future() \
141 140
                            .order_by('start_date')
142 141
        try:
143
            holiday = models.Holiday.objects.for_worker(self.object) \
144
                .filter(start_date__lte=date.today())[0]
142
            holiday = models.Holiday.objects \
143
                    .for_worker(self.object) \
144
                    .today()[0]
145 145
        except IndexError:
146 146
            holiday = None
147 147
        ctx['holiday'] = holiday
......
209 209
    def get_context_data(self, **kwargs):
210 210
        ctx = super(HolidayView, self).get_context_data(**kwargs)
211 211
        end_date = date.today() + relativedelta(months=self.months)
212
        qs = models.Holiday.objects.for_service_workers(self.service)
212
        qs = models.Holiday.objects.for_service_workers(self.service).future()
213 213
        today = date.today()
214
        future_qs = qs.filter(start_date__gt=today,
215
                start_date__lte=end_date)
214
        future_qs = qs.for_period(today, end_date)
216 215
        annual_qs = models.Holiday.objects.for_service(self.service)
217
        current_qs = qs.filter(start_date__lte=today)
216
        current_qs = qs.today()
218 217
        form = self.get_form()
219 218
        if form.is_valid() and form.cleaned_data.get('start_date'):
220 219
            cleaned_data = form.cleaned_data
221 220
            start_date = cleaned_data['start_date']
222 221
            end_date = cleaned_data['end_date']
223
            q = Q(start_date__gte=start_date, start_date__lte=end_date)
224
            q |= Q(end_date__gte=start_date, end_date__lte=end_date)
225
            future_qs = models.Holiday.objects.filter(q) \
226
                    .filter(worker__services=self.service)
227
            annual_qs = annual_qs.filter(q)
222
            future_qs = models.Holiday.objects \
223
                    .for_period(start_date, end_date) \
224
                    .for_service_workers(self.service)
225
            annual_qs = annual_qs.for_period(start_date, end_date)
228 226
            current_qs = []
229 227
        ctx['current_holidays'] = current_qs
230 228
        future_holidays = defaultdict(lambda:[])

Also available in: Unified diff