Merged in [16085] from rcross@amsl.com:
Fix issue where cancelling one break session causes other breaks to get cancelled. Fixes #2699.
- Legacy-Id: 16090
Note: SVN reference [16085] has been migrated to Git commit 2842ad12bb
This commit is contained in:
commit
f635b2f973
42
ietf/meeting/migrations/0012_auto_20190323_0611.py
Normal file
42
ietf/meeting/migrations/0012_auto_20190323_0611.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.20 on 2019-03-23 06:11
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def copy_session(session):
|
||||
session.pk = None
|
||||
session.save()
|
||||
return session
|
||||
|
||||
|
||||
def forward(apps, schema_editor):
|
||||
Meeting = apps.get_model('meeting', 'Meeting')
|
||||
today = datetime.datetime.today()
|
||||
meetings = Meeting.objects.filter(date__gt=today, type='ietf')
|
||||
for meeting in meetings:
|
||||
sessions = meeting.session_set.filter(type__in=['break', 'reg'])
|
||||
for session in sessions:
|
||||
assignments = session.timeslotassignments.filter(schedule=meeting.agenda)
|
||||
if assignments.count() > 1:
|
||||
ids = [ a.id for a in assignments ]
|
||||
first_assignment = session.timeslotassignments.get(id=ids[0])
|
||||
original_session = first_assignment.session
|
||||
for assignment in session.timeslotassignments.filter(id__in=ids[1:]):
|
||||
assignment.session = copy_session(original_session)
|
||||
assignment.save()
|
||||
|
||||
def backward(apps, schema_editor):
|
||||
return
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('meeting', '0011_auto_20190114_0550'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forward, backward),
|
||||
]
|
|
@ -97,39 +97,24 @@ def build_nonsession(meeting,schedule):
|
|||
|
||||
delta = meeting.date - last_meeting.date
|
||||
system = Person.objects.get(name='(System)')
|
||||
secretariat = Group.objects.get(acronym='secretariat')
|
||||
|
||||
for slot in TimeSlot.objects.filter(meeting=last_meeting,type__in=('break','reg','other','plenary','lead')):
|
||||
new_time = slot.time + delta
|
||||
session = None
|
||||
# create Session object for Tutorials to hold materials
|
||||
if slot.type.slug in ('other','plenary'):
|
||||
session = Session(meeting=meeting,
|
||||
name=slot.name,
|
||||
short=get_session(slot).short,
|
||||
group=get_session(slot).group,
|
||||
requested_by=system,
|
||||
status_id='sched',
|
||||
type=slot.type,
|
||||
)
|
||||
else:
|
||||
session, __ = Session.objects.get_or_create(meeting=meeting,
|
||||
name=slot.name,
|
||||
group=secretariat,
|
||||
requested_by=system,
|
||||
status_id='sched',
|
||||
type=slot.type,
|
||||
)
|
||||
session.save()
|
||||
session = Session.objects.create(meeting=meeting,
|
||||
name=slot.name,
|
||||
short=get_session(slot).short,
|
||||
group=get_session(slot).group,
|
||||
requested_by=system,
|
||||
status_id='sched',
|
||||
type=slot.type)
|
||||
|
||||
ts = TimeSlot.objects.create(type=slot.type,
|
||||
meeting=meeting,
|
||||
name=slot.name,
|
||||
time=new_time,
|
||||
duration=slot.duration,
|
||||
show_location=slot.show_location)
|
||||
if session:
|
||||
SchedTimeSessAssignment.objects.create(schedule=schedule,session=session,timeslot=ts)
|
||||
meeting=meeting,
|
||||
name=slot.name,
|
||||
time=new_time,
|
||||
duration=slot.duration,
|
||||
show_location=slot.show_location)
|
||||
SchedTimeSessAssignment.objects.create(schedule=schedule,session=session,timeslot=ts)
|
||||
|
||||
def check_nonsession(meeting,schedule):
|
||||
'''
|
||||
|
|
Loading…
Reference in a new issue