Project

General

Profile

« Previous | Next » 

Revision f8ad3b42

Added by Jérôme Schneider over 12 years ago

Manage disponiblity and fix fixtures

  • calebasse/agenda/managers.py: add daily_disponiblity for OccurrenceManager * agenda/models.py: Occurence notes field is now a many to many
    relation * agenda/templates/agenda/index.html: add disponibility support * agenda/views.py: add disponibility support * cale_base/fixtures/agenda.json: little fixes

View differences:

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