|
9 | 9 |
|
10 | 10 | import debug # pyflakes:ignore |
11 | 11 |
|
| 12 | +from django.core.validators import MinValueValidator |
12 | 13 | from django.db import models |
13 | 14 | from django.db.models import Max |
14 | 15 | from django.conf import settings |
@@ -53,6 +54,8 @@ class Meeting(models.Model): |
53 | 54 | # is not used to determine date for timeslot instances thereafter, as |
54 | 55 | # they have their own datetime field. |
55 | 56 | date = models.DateField() |
| 57 | + days = models.PositiveIntegerField(default=7, null=False, validators=[MinValueValidator(1)], |
| 58 | + help_text="The number of days the meeting lasts") |
56 | 59 | city = models.CharField(blank=True, max_length=255) |
57 | 60 | country = models.CharField(blank=True, max_length=2, choices=countries) |
58 | 61 | # We can't derive time-zone from country, as there are some that have |
@@ -101,12 +104,7 @@ def get_meeting_date (self,offset): |
101 | 104 | return self.date + datetime.timedelta(days=offset) |
102 | 105 |
|
103 | 106 | def end_date(self): |
104 | | - if self.type_id == 'ietf': |
105 | | - return self.get_meeting_date(5) |
106 | | - else: |
107 | | - # TODO: Once interims have timeslots assigned, |
108 | | - # look for the last ending timeslot instead |
109 | | - return self.date |
| 107 | + return self.get_meeting_date(self.days-1) |
110 | 108 |
|
111 | 109 | def get_00_cutoff(self): |
112 | 110 | start_date = datetime.datetime(year=self.date.year, month=self.date.month, day=self.date.day, tzinfo=pytz.utc) |
@@ -143,20 +141,17 @@ def get_reopen_time(self): |
143 | 141 | def get_current_meeting(cls, type="ietf"): |
144 | 142 | return cls.objects.filter(type=type, date__gte=datetime.datetime.today()-datetime.timedelta(days=7) ).order_by('date').first() |
145 | 143 |
|
146 | | - @classmethod |
147 | | - def get_first_cut_off(cls): |
148 | | - meeting = cls.get_current_meeting() |
149 | | - return meeting.get_00_cutoff() |
| 144 | + def get_first_cut_off(self): |
| 145 | + return self.get_00_cutoff() |
150 | 146 |
|
151 | | - @classmethod |
152 | | - def get_second_cut_off(cls): |
153 | | - meeting = cls.get_current_meeting() |
154 | | - return meeting.get_01_cutoff() |
| 147 | + def get_second_cut_off(self): |
| 148 | + return self.get_01_cutoff() |
155 | 149 |
|
156 | | - @classmethod |
157 | | - def get_ietf_monday(cls): |
158 | | - date = cls.objects.all().filter(type="ietf").order_by('-date')[0].date |
159 | | - return date + datetime.timedelta(days=-date.weekday(), weeks=1) |
| 150 | + def get_ietf_monday(self): |
| 151 | + for offset in range(self.days): |
| 152 | + date = self.date+datetime.timedelta(days=offset) |
| 153 | + if date.weekday() == 0: # Monday is 0 |
| 154 | + return date |
160 | 155 |
|
161 | 156 | def get_materials_path(self): |
162 | 157 | return os.path.join(settings.AGENDA_PATH,self.number) |
|
0 commit comments