Skip to content

Commit 0fafe56

Browse files
committed
allow edit of timeslots, changes to scheduled notifications, support non-official schedules
- Legacy-Id: 7554
1 parent e3d9469 commit 0fafe56

17 files changed

Lines changed: 425 additions & 160 deletions

File tree

ietf/group/models.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,10 @@ class GroupMilestoneInfo(models.Model):
139139
docs = models.ManyToManyField('doc.Document', blank=True)
140140

141141
def __unicode__(self):
142-
return self.desc[:20] + "..."
142+
return self.desc[:20] + "..."
143143
class Meta:
144144
abstract = True
145-
ordering = ['due', 'id']
145+
ordering = ['due', 'id']
146146

147147
class GroupMilestone(GroupMilestoneInfo):
148148
time = models.DateTimeField(auto_now=True)
@@ -159,14 +159,15 @@ class GroupStateTransitions(models.Model):
159159
next_states = models.ManyToManyField('doc.State', related_name='previous_groupstatetransitions_states')
160160

161161
def __unicode__(self):
162-
return u'%s "%s" -> %s' % (self.group.acronym, self.state.name, [s.name for s in self.next_states.all()])
162+
return u'%s "%s" -> %s' % (self.group.acronym, self.state.name, [s.name for s in self.next_states.all()])
163163

164164
GROUP_EVENT_CHOICES = [
165165
("changed_state", "Changed state"),
166166
("added_comment", "Added comment"),
167167
("info_changed", "Changed metadata"),
168168
("requested_close", "Requested closing group"),
169169
("changed_milestone", "Changed milestone"),
170+
("sent_notification", "Sent notification")
170171
]
171172

172173
class GroupEvent(models.Model):

ietf/meeting/models.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -206,20 +206,9 @@ def vtimezone(self):
206206
return ''
207207

208208
def set_official_agenda(self, agenda):
209-
# send_notification should be refactored into Session
210-
from ietf.secr.meetings.views import send_notification
211209
if self.agenda != agenda:
212210
self.agenda = agenda
213211
self.save()
214-
if self.agenda is not None:
215-
for ss in self.agenda.scheduledsession_set.all():
216-
session = ss.session
217-
if session.status.slug == "schedw":
218-
session.status_id = "sched"
219-
session.scheduled = datetime.datetime.now()
220-
session.save()
221-
# refactoring send_notification will obviate this odd hoop-jump
222-
send_notification(None, Session.objects.filter(id=session.id))
223212

224213
class Meta:
225214
ordering = ["-date", ]
@@ -1174,3 +1163,4 @@ def badness_fast(self, timeslot, scheduleslot, session_pk_list):
11741163
if self.badness_test(1):
11751164
self.badness_log(1, "badgroup: %s badness = %u\n" % (self.group.acronym, badness))
11761165
return badness
1166+

ietf/secr/meetings/tests.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.core.urlresolvers import reverse
22
from ietf.utils import TestCase
33

4-
from ietf.meeting.models import Meeting
4+
from ietf.meeting.models import Meeting, Schedule
55
from ietf.utils.test_data import make_test_data
66

77
from pyquery import PyQuery
@@ -22,3 +22,14 @@ def test_view(self):
2222
url = reverse('meetings_view', kwargs={'meeting_id':meeting.number})
2323
response = self.client.get(url, REMOTE_USER=SECR_USER)
2424
self.assertEqual(response.status_code, 200)
25+
26+
def test_add_meeting(self):
27+
"Add Meeting"
28+
url = reverse('meetings_add')
29+
post_data = dict(number=1,city='Seattle',date='2014-07-20',country='US',
30+
time_zone='America/Los_Angeles',venue_name='Hilton',
31+
venue_addr='100 First Ave')
32+
response = self.client.post(url, post_data,follow=True,REMOTE_USER=SECR_USER)
33+
self.assertEqual(response.status_code, 200)
34+
self.assertEqual(Meeting.objects.count(),1)
35+
self.assertEqual(Schedule.objects.count(),1)

ietf/secr/meetings/urls.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@
99
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/$', 'blue_sheet', name='meetings_blue_sheet'),
1010
url(r'^(?P<meeting_id>\d{1,6})/blue_sheet/generate/$', 'blue_sheet_generate', name='meetings_blue_sheet_generate'),
1111
url(r'^(?P<meeting_id>\d{1,6})/edit/$', 'edit_meeting', name='meetings_edit_meeting'),
12-
url(r'^(?P<meeting_id>\d{1,6})/rooms/$', 'rooms', name='meetings_rooms'),
13-
url(r'^(?P<meeting_id>\d{1,6})/times/$', 'times', name='meetings_times'),
14-
url(r'^(?P<meeting_id>\d{1,6})/times/delete/(?P<time>[0-9\:]+)/$', 'times_delete', name='meetings_times_delete'),
15-
url(r'^(?P<meeting_id>\d{1,6})/non_session/$', 'non_session', name='meetings_non_session'),
16-
url(r'^(?P<meeting_id>\d{1,6})/non_session/edit/(?P<slot_id>\d{1,6})/$', 'non_session_edit', name='meetings_non_session_edit'),
17-
url(r'^(?P<meeting_id>\d{1,6})/non_session/delete/(?P<slot_id>\d{1,6})/$', 'non_session_delete', name='meetings_non_session_delete'),
18-
url(r'^(?P<meeting_id>\d{1,6})/select/$', 'select_group',
19-
name='meetings_select_group'),
20-
url(r'^(?P<meeting_id>\d{1,6})/(?P<acronym>[A-Za-z0-9_\-\+]+)/schedule/$', 'schedule', name='meetings_schedule'),
12+
url(r'^(?P<meeting_id>\d{1,6})/notifications/$', 'notifications', name='meetings_notifications'),
13+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/$', 'select', name='meetings_select'),
14+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/$', 'non_session', name='meetings_non_session'),
15+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/edit/(?P<slot_id>\d{1,6})/$', 'non_session_edit', name='meetings_non_session_edit'),
16+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/non_session/delete/(?P<slot_id>\d{1,6})/$', 'non_session_delete', name='meetings_non_session_delete'),
17+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/rooms/$', 'rooms', name='meetings_rooms'),
18+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/select/$', 'select_group', name='meetings_select_group'),
19+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/$', 'times', name='meetings_times'),
20+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/delete/(?P<time>[0-9\:]+)/$', 'times_delete', name='meetings_times_delete'),
21+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/times/edit/(?P<time>[0-9\:]+)/$', 'times_edit', name='meetings_times_edit'),
22+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/unschedule/(?P<session_id>\d{1,6})/$', 'unschedule', name='meetings_unschedule'),
23+
url(r'^(?P<meeting_id>\d{1,6})/(?P<schedule_name>[A-Za-z0-9_\-]+)/(?P<acronym>[A-Za-z0-9_\-\+]+)/schedule/$', 'schedule', name='meetings_schedule'),
2124
url(r'^(?P<meeting_id>\d{1,6})/(?P<acronym>[A-Za-z0-9_\-\+]+)/remove/$', 'remove_session', name='meetings_remove_session'),
2225
)

0 commit comments

Comments
 (0)