Skip to content

Commit 71dec7a

Browse files
committed
Moved forward to 6.7.2.dev0 the changes to rename class ScheduledSession to the more correct (but unfortunately also cumbersome) SchedTimeSessAssignment, and rename reverse relationships involving this class appropriately. Accompanying changes in javascript and templates. Migrations to match.
- Legacy-Id: 10297
1 parent e3ea4d8 commit 71dec7a

32 files changed

Lines changed: 385 additions & 278 deletions

ietf/doc/tests_material.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def test_material_presentations(self):
188188
r = self.client.get(url)
189189
self.assertEqual(r.status_code, 200)
190190

191-
when = meeting.agenda.scheduledsession_set.filter(session__group__acronym='testteam').first().timeslot.time
191+
when = meeting.agenda.assignments.filter(session__group__acronym='testteam').first().timeslot.time
192192
mdw = when.date().isoformat()
193193
dow = ['mon','tue','wed','thu','fri','sat','sun'][when.weekday()]
194194

@@ -212,7 +212,7 @@ def test_edit_material_presentations(self):
212212
meeting = make_meeting_test_data()
213213
meeting.session_set.filter(group__acronym='mars').update(group=doc.group)
214214

215-
session = meeting.agenda.scheduledsession_set.filter(session__group__acronym='testteam').first().session
215+
session = meeting.agenda.assignments.filter(session__group__acronym='testteam').first().session
216216

217217
url = urlreverse(edit_material_presentations,kwargs=dict(name=doc.name,acronym='testteam',seq=1))
218218
login_testing_unauthorized(self, "secretary", url)

ietf/doc/views_material.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,18 +197,18 @@ def get_upcoming_manageable_sessions(user, doc, acronym=None, date=None, seq=Non
197197
if date:
198198
if len(date)==15:
199199
start = datetime.datetime.strptime(date,"%Y-%m-%d-%H%M")
200-
refined_candidates = [ sess for sess in refined_candidates if sess.scheduledsession_set.filter(schedule=sess.meeting.agenda,timeslot__time=start) ]
200+
refined_candidates = [ sess for sess in refined_candidates if sess.timeslotassignments.filter(schedule=sess.meeting.agenda,timeslot__time=start) ]
201201
else:
202202
start = datetime.datetime.strptime(date,"%Y-%m-%d").date()
203203
end = start+datetime.timedelta(days=1)
204-
refined_candidates = [ sess for sess in refined_candidates if sess.scheduledsession_set.filter(schedule=sess.meeting.agenda,timeslot__time__range=(start,end)) ]
204+
refined_candidates = [ sess for sess in refined_candidates if sess.timeslotassignments.filter(schedule=sess.meeting.agenda,timeslot__time__range=(start,end)) ]
205205

206206
if week_day:
207207
try:
208208
dow = ['sun','mon','tue','wed','thu','fri','sat'].index(week_day.lower()[:3]) + 1
209209
except ValueError:
210210
raise Http404
211-
refined_candidates = [ sess for sess in refined_candidates if sess.scheduledsession_set.filter(schedule=sess.meeting.agenda,timeslot__time__week_day=dow) ]
211+
refined_candidates = [ sess for sess in refined_candidates if sess.timeslotassignments.filter(schedule=sess.meeting.agenda,timeslot__time__week_day=dow) ]
212212

213213
changeable_sessions = [ sess for sess in refined_candidates if can_manage_materials(user, sess.group) ]
214214

@@ -226,7 +226,7 @@ def get_upcoming_manageable_sessions(user, doc, acronym=None, date=None, seq=Non
226226
# scheduled).
227227

228228
def time_sort_key(session):
229-
official_sessions = session.scheduledsession_set.filter(schedule=session.meeting.agenda)
229+
official_sessions = session.timeslotassignments.filter(schedule=session.meeting.agenda)
230230
if official_sessions:
231231
return official_sessions.first().timeslot.time
232232
else:

ietf/meeting/admin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django.contrib import admin
22

3-
from ietf.meeting.models import Meeting, Room, Session, TimeSlot, Constraint, Schedule, ScheduledSession, ResourceAssociation
3+
from ietf.meeting.models import Meeting, Room, Session, TimeSlot, Constraint, Schedule, SchedTimeSessAssignment, ResourceAssociation
44

55
class RoomAdmin(admin.ModelAdmin):
66
list_display = ["id", "meeting", "name", "capacity", ]
@@ -87,11 +87,11 @@ class ScheduleAdmin(admin.ModelAdmin):
8787
admin.site.register(Schedule, ScheduleAdmin)
8888

8989

90-
class ScheduledSessionAdmin(admin.ModelAdmin):
90+
class SchedTimeSessAssignmentAdmin(admin.ModelAdmin):
9191
list_display = ["id", "schedule", "timeslot", "session", "modified"]
9292
list_filter = ["timeslot__meeting", "schedule"]
9393

94-
admin.site.register(ScheduledSession, ScheduledSessionAdmin)
94+
admin.site.register(SchedTimeSessAssignment, SchedTimeSessAssignmentAdmin)
9595

9696

9797
class ResourceAssociationAdmin(admin.ModelAdmin):

ietf/meeting/ajax.py

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from ietf.ietfauth.utils import role_required, has_role
1010
from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, get_person_by_email, get_schedule_by_name
11-
from ietf.meeting.models import TimeSlot, Session, Schedule, Room, Constraint, ScheduledSession, ResourceAssociation
11+
from ietf.meeting.models import TimeSlot, Session, Schedule, Room, Constraint, SchedTimeSessAssignment, ResourceAssociation
1212
from ietf.meeting.views import edit_timeslots, edit_agenda
1313

1414
import debug # pyflakes:ignore
@@ -151,7 +151,7 @@ def timeslot_roomurl(request, num=None, roomid=None):
151151

152152
#############################################################################
153153
## DAY/SLOT API
154-
## -- this creates groups of timeslots, and associated scheduledsessions.
154+
## -- this creates groups of timeslots, and associated schedtimesessassignments.
155155
#############################################################################
156156
AddSlotForm = modelform_factory(TimeSlot, exclude=('meeting','name','location','sessions', 'modified'))
157157

@@ -319,7 +319,7 @@ def agenda_update(request, meeting, schedule):
319319

320320
@role_required('Secretariat')
321321
def agenda_del(request, meeting, schedule):
322-
schedule.delete_scheduledsessions()
322+
schedule.delete_assignments()
323323
#debug.log("deleting meeting: %s agenda: %s" % (meeting, meeting.agenda))
324324
if meeting.agenda == schedule:
325325
meeting.agenda = None
@@ -431,8 +431,8 @@ def sessions_json(request, num):
431431
## Scheduledsesion
432432
#############################################################################
433433

434-
# this creates an entirely *NEW* scheduledsession
435-
def scheduledsessions_post(request, meeting, schedule):
434+
# this creates an entirely *NEW* schedtimesessassignment
435+
def assignments_post(request, meeting, schedule):
436436
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
437437
if not canedit:
438438
return HttpResponse(json.dumps({'error':'no permission to modify this agenda'}),
@@ -446,15 +446,15 @@ def scheduledsessions_post(request, meeting, schedule):
446446
status = 406,
447447
content_type="application/json")
448448

449-
ss1 = ScheduledSession(schedule = schedule,
449+
ss1 = SchedTimeSessAssignment(schedule = schedule,
450450
session_id = newvalues["session_id"],
451451
timeslot_id = newvalues["timeslot_id"])
452452
if("extendedfrom_id" in newvalues):
453453
val = int(newvalues["extendedfrom_id"])
454454
try:
455-
ss2 = schedule.scheduledsession_set.get(pk = val)
455+
ss2 = schedule.assignments.get(pk = val)
456456
ss1.extendedfrom = ss2
457-
except ScheduledSession.DoesNotExist:
457+
except SchedTimeSessAssignment.DoesNotExist:
458458
return HttpResponse(json.dumps({'error':'invalid extendedfrom value: %u' % val}),
459459
status = 406,
460460
content_type="application/json")
@@ -467,28 +467,28 @@ def scheduledsessions_post(request, meeting, schedule):
467467
response['Location'] = ss1_dict["href"],
468468
return response
469469

470-
def scheduledsessions_get(request, num, schedule):
471-
scheduledsessions = schedule.scheduledsession_set.all()
470+
def assignments_get(request, num, schedule):
471+
assignments = schedule.assignments.all()
472472

473-
sess1_dict = [ x.json_dict(request.build_absolute_uri('/')) for x in scheduledsessions ]
473+
sess1_dict = [ x.json_dict(request.build_absolute_uri('/')) for x in assignments ]
474474
return HttpResponse(json.dumps(sess1_dict, sort_keys=True, indent=2),
475475
content_type="application/json")
476476

477477
# this returns the list of scheduled sessions for the given named agenda
478-
def scheduledsessions_json(request, num, owner, name):
478+
def assignments_json(request, num, owner, name):
479479
meeting, person, schedule = get_meeting_schedule(num, owner, name)
480480

481481
if request.method == 'GET':
482-
return scheduledsessions_get(request, meeting, schedule)
482+
return assignments_get(request, meeting, schedule)
483483
elif request.method == 'POST':
484-
return scheduledsessions_post(request, meeting, schedule)
484+
return assignments_post(request, meeting, schedule)
485485
else:
486486
return HttpResponse(json.dumps({'error':'inappropriate action: %s' % (request.method)}),
487487
status = 406,
488488
content_type="application/json")
489489

490490
# accepts both POST and PUT in order to implement Postel Doctrine.
491-
def scheduledsession_update(request, meeting, schedule, ss):
491+
def assignment_update(request, meeting, schedule, ss):
492492
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
493493
if not canedit:
494494
return HttpResponse(json.dumps({'error':'no permission to update this agenda'}),
@@ -506,29 +506,29 @@ def scheduledsession_update(request, meeting, schedule, ss):
506506
return HttpResponse(json.dumps({'message':'valid'}),
507507
content_type="application/json")
508508

509-
def scheduledsession_delete(request, meeting, schedule, ss):
509+
def assignment_delete(request, meeting, schedule, ss):
510510
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
511511
if not canedit:
512512
return HttpResponse(json.dumps({'error':'no permission to update this agenda'}),
513513
status = 403,
514514
content_type="application/json")
515515

516516
# in case there is, somehow, more than one item with the same pk.. XXX
517-
scheduledsessions = schedule.scheduledsession_set.filter(pk = ss.pk)
518-
if len(scheduledsessions) == 0:
517+
assignments = schedule.assignments.filter(pk = ss.pk)
518+
if len(assignments) == 0:
519519
return HttpResponse(json.dumps({'error':'no such object'}),
520520
status = 404,
521521
content_type="application/json")
522522
count=0
523-
for ss in scheduledsessions:
523+
for ss in assignments:
524524
ss.delete()
525525
count += 1
526526

527527
return HttpResponse(json.dumps({'result':"%u objects deleted"%(count)}),
528528
status = 200,
529529
content_type="application/json")
530530

531-
def scheduledsession_get(request, meeting, schedule, ss):
531+
def assignment_get(request, meeting, schedule, ss):
532532
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
533533

534534
if not cansee:
@@ -541,22 +541,22 @@ def scheduledsession_get(request, meeting, schedule, ss):
541541
content_type="application/json")
542542

543543
# this return a specific session, updates a session or deletes a SPECIFIC scheduled session
544-
def scheduledsession_json(request, num, owner, name, scheduledsession_id):
544+
def assignment_json(request, num, owner, name, assignment_id):
545545
meeting, person, schedule = get_meeting_schedule(num, owner, name)
546546

547-
scheduledsessions = schedule.scheduledsession_set.filter(pk = scheduledsession_id)
548-
if len(scheduledsessions) == 0:
549-
return HttpResponse(json.dumps({'error' : 'invalid scheduledsession'}),
547+
assignments = schedule.assignments.filter(pk = assignment_id)
548+
if len(assignments) == 0:
549+
return HttpResponse(json.dumps({'error' : 'invalid assignment'}),
550550
content_type="application/json",
551551
status=404);
552-
ss = scheduledsessions[0]
552+
ss = assignments[0]
553553

554554
if request.method == 'GET':
555-
return scheduledsession_get(request, meeting, schedule, ss)
555+
return assignment_get(request, meeting, schedule, ss)
556556
elif request.method == 'PUT' or request.method=='POST':
557-
return scheduledsession_update(request, meeting, schedule, ss)
557+
return assignment_update(request, meeting, schedule, ss)
558558
elif request.method == 'DELETE':
559-
return scheduledsession_delete(request, meeting, schedule, ss)
559+
return assignment_delete(request, meeting, schedule, ss)
560560

561561
#############################################################################
562562
## Constraints API

ietf/meeting/helpers.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ def get_areas():
6161
Q(state="active", type="area")).order_by('acronym')
6262

6363
# get list of areas that are referenced.
64-
def get_area_list_from_sessions(scheduledsessions, num):
65-
return scheduledsessions.filter(timeslot__type = 'Session',
64+
def get_area_list_from_sessions(assignments, num):
65+
return assignments.filter(timeslot__type = 'Session',
6666
session__group__parent__isnull = False).order_by(
6767
'session__group__parent__acronym').distinct().values_list(
6868
'session__group__parent__acronym',flat=True)
@@ -85,25 +85,25 @@ def build_all_agenda_slices(meeting):
8585
time_slices.sort()
8686
return time_slices,date_slices
8787

88-
def get_all_scheduledsessions_from_schedule(schedule):
89-
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False)
88+
def get_all_assignments_from_schedule(schedule):
89+
ss = schedule.assignments.filter(timeslot__location__isnull = False)
9090
ss = ss.filter(session__type__slug='session')
9191
ss = ss.order_by('timeslot__time','timeslot__name')
9292

9393
return ss
9494

95-
def get_modified_from_scheduledsessions(scheduledsessions):
96-
return scheduledsessions.aggregate(Max('timeslot__modified'))['timeslot__modified__max']
95+
def get_modified_from_assignments(assignments):
96+
return assignments.aggregate(Max('timeslot__modified'))['timeslot__modified__max']
9797

98-
def get_wg_name_list(scheduledsessions):
99-
return scheduledsessions.filter(timeslot__type = 'Session',
98+
def get_wg_name_list(assignments):
99+
return assignments.filter(timeslot__type = 'Session',
100100
session__group__isnull = False,
101101
session__group__parent__isnull = False).order_by(
102102
'session__group__acronym').distinct().values_list(
103103
'session__group__acronym',flat=True)
104104

105-
def get_wg_list(scheduledsessions):
106-
wg_name_list = get_wg_name_list(scheduledsessions)
105+
def get_wg_list(assignments):
106+
wg_name_list = get_wg_name_list(assignments)
107107
return Group.objects.filter(acronym__in = set(wg_name_list)).order_by('parent__acronym','acronym')
108108

109109

ietf/meeting/management/commands/schedwrite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ def handle(self, *labels, **options):
2727
meeting = get_meeting(meetingname)
2828
schedule = get_schedule(meeting, schedname)
2929

30-
scheduledsessions = schedule.scheduledsession_set.all()
30+
assignments = schedule.assignments.all()
3131

3232
# cribbed from django/core/management/commands/dumpdata.py
3333
# Check that the serialization format exists; this is a shortcut to
3434
# avoid collating all the objects and _then_ failing.
3535
if format not in serializers.get_public_serializer_formats():
3636
raise CommandError("Unknown serialization format: %s" % format)
3737

38-
return serializers.serialize(format, scheduledsessions, indent=indent,
38+
return serializers.serialize(format, assignments, indent=indent,
3939
use_natural_keys=True)
4040

4141

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import models, migrations
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('meeting', '0011_ietf92_meetings'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='scheduledsession',
16+
name='session',
17+
field=models.ForeignKey(related_name='timeslotassignments', default=None, to='meeting.Session', help_text='Scheduled session.', null=True),
18+
preserve_default=True,
19+
),
20+
migrations.AlterField(
21+
model_name='scheduledsession',
22+
name='timeslot',
23+
field=models.ForeignKey(related_name='sessionassignments', to='meeting.TimeSlot'),
24+
preserve_default=True,
25+
),
26+
]
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import models, migrations
5+
import datetime
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('meeting', '0012_auto_20151026_1406'),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='Dummy',
17+
fields=[
18+
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
19+
('modified', models.DateTimeField(default=datetime.datetime.now)),
20+
('notes', models.TextField(blank=True)),
21+
('badness', models.IntegerField(default=0, null=True, blank=True)),
22+
('pinned', models.BooleanField(default=False, help_text=b'Do not move session during automatic placement.')),
23+
('extendedfrom', models.ForeignKey(default=None, to='self', help_text='Timeslot this session is an extension of.', null=True)),
24+
('schedule', models.ForeignKey(related_name='assignments', to='meeting.Schedule')),
25+
('session', models.ForeignKey(related_name='timeslotassignments', default=None, to='meeting.Session', help_text='Scheduled session.', null=True)),
26+
('timeslot', models.ForeignKey(related_name='sessionassignments', to='meeting.TimeSlot')),
27+
],
28+
options={
29+
'ordering': ['timeslot__time', 'timeslot__type__slug', 'session__group__parent__name', 'session__group__acronym', 'session__name'],
30+
},
31+
bases=(models.Model,),
32+
),
33+
migrations.AlterField(
34+
model_name='timeslot',
35+
name='sessions',
36+
field=models.ManyToManyField(related_name='slots', to='meeting.Session', through='meeting.Dummy', blank=True, help_text='Scheduled session, if any.', null=True),
37+
preserve_default=True,
38+
),
39+
]

0 commit comments

Comments
 (0)