Skip to content

Commit f635b2f

Browse files
committed
Merged in [16085] from rcross@amsl.com:
Fix issue where cancelling one break session causes other breaks to get cancelled. Fixes ietf-tools#2699. - Legacy-Id: 16090 Note: SVN reference [16085] has been migrated to Git commit 2842ad1
2 parents bde205b + 2842ad1 commit f635b2f

2 files changed

Lines changed: 55 additions & 28 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# -*- coding: utf-8 -*-
2+
# Generated by Django 1.11.20 on 2019-03-23 06:11
3+
from __future__ import unicode_literals
4+
5+
import datetime
6+
from django.db import migrations
7+
8+
9+
def copy_session(session):
10+
session.pk = None
11+
session.save()
12+
return session
13+
14+
15+
def forward(apps, schema_editor):
16+
Meeting = apps.get_model('meeting', 'Meeting')
17+
today = datetime.datetime.today()
18+
meetings = Meeting.objects.filter(date__gt=today, type='ietf')
19+
for meeting in meetings:
20+
sessions = meeting.session_set.filter(type__in=['break', 'reg'])
21+
for session in sessions:
22+
assignments = session.timeslotassignments.filter(schedule=meeting.agenda)
23+
if assignments.count() > 1:
24+
ids = [ a.id for a in assignments ]
25+
first_assignment = session.timeslotassignments.get(id=ids[0])
26+
original_session = first_assignment.session
27+
for assignment in session.timeslotassignments.filter(id__in=ids[1:]):
28+
assignment.session = copy_session(original_session)
29+
assignment.save()
30+
31+
def backward(apps, schema_editor):
32+
return
33+
34+
class Migration(migrations.Migration):
35+
36+
dependencies = [
37+
('meeting', '0011_auto_20190114_0550'),
38+
]
39+
40+
operations = [
41+
migrations.RunPython(forward, backward),
42+
]

ietf/secr/meetings/views.py

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -97,39 +97,24 @@ def build_nonsession(meeting,schedule):
9797

9898
delta = meeting.date - last_meeting.date
9999
system = Person.objects.get(name='(System)')
100-
secretariat = Group.objects.get(acronym='secretariat')
101100

102101
for slot in TimeSlot.objects.filter(meeting=last_meeting,type__in=('break','reg','other','plenary','lead')):
103102
new_time = slot.time + delta
104-
session = None
105-
# create Session object for Tutorials to hold materials
106-
if slot.type.slug in ('other','plenary'):
107-
session = Session(meeting=meeting,
108-
name=slot.name,
109-
short=get_session(slot).short,
110-
group=get_session(slot).group,
111-
requested_by=system,
112-
status_id='sched',
113-
type=slot.type,
114-
)
115-
else:
116-
session, __ = Session.objects.get_or_create(meeting=meeting,
117-
name=slot.name,
118-
group=secretariat,
119-
requested_by=system,
120-
status_id='sched',
121-
type=slot.type,
122-
)
123-
session.save()
103+
session = Session.objects.create(meeting=meeting,
104+
name=slot.name,
105+
short=get_session(slot).short,
106+
group=get_session(slot).group,
107+
requested_by=system,
108+
status_id='sched',
109+
type=slot.type)
124110

125111
ts = TimeSlot.objects.create(type=slot.type,
126-
meeting=meeting,
127-
name=slot.name,
128-
time=new_time,
129-
duration=slot.duration,
130-
show_location=slot.show_location)
131-
if session:
132-
SchedTimeSessAssignment.objects.create(schedule=schedule,session=session,timeslot=ts)
112+
meeting=meeting,
113+
name=slot.name,
114+
time=new_time,
115+
duration=slot.duration,
116+
show_location=slot.show_location)
117+
SchedTimeSessAssignment.objects.create(schedule=schedule,session=session,timeslot=ts)
133118

134119
def check_nonsession(meeting,schedule):
135120
'''

0 commit comments

Comments
 (0)