Skip to content

Commit 0555879

Browse files
committed
Rename Meeting.agenda to Meeting.schedule together with a bunch of
related internal things - Legacy-Id: 17051
1 parent 4049804 commit 0555879

34 files changed

Lines changed: 322 additions & 290 deletions

ietf/meeting/ajax.py

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Copyright The IETF Trust 2013-2019, All Rights Reserved
12
import json
23

34
from django.shortcuts import get_object_or_404, redirect
@@ -7,9 +8,9 @@
78
from django.views.decorators.http import require_POST
89

910
from ietf.ietfauth.utils import role_required, has_role
10-
from ietf.meeting.helpers import get_meeting, get_schedule, agenda_permissions, get_person_by_email, get_schedule_by_name
11+
from ietf.meeting.helpers import get_meeting, get_schedule, schedule_permissions, get_person_by_email, get_schedule_by_name
1112
from ietf.meeting.models import TimeSlot, Session, Schedule, Room, Constraint, SchedTimeSessAssignment, ResourceAssociation
12-
from ietf.meeting.views import edit_timeslots, edit_agenda
13+
from ietf.meeting.views import edit_timeslots, edit_schedule
1314

1415
import debug # pyflakes:ignore
1516

@@ -43,8 +44,8 @@ def get_meeting_schedule(num, owner, name):
4344

4445

4546

46-
# should asking if an agenda is read-only require any kind of permission?
47-
def agenda_permission_api(request, num, owner, name):
47+
# should asking if an schedule is read-only require any kind of permission?
48+
def schedule_permission_api(request, num, owner, name):
4849
meeting = get_meeting(num)
4950
person = get_person_by_email(owner)
5051
schedule = get_schedule_by_name(meeting, person, name)
@@ -56,7 +57,7 @@ def agenda_permission_api(request, num, owner, name):
5657
owner_href = ""
5758

5859
if schedule is not None:
59-
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
60+
cansee,canedit,secretariat = schedule_permissions(meeting, schedule, request.user)
6061
owner_href = request.build_absolute_uri(schedule.owner.json_url())
6162

6263
if has_role(request.user, "Area Director") or secretariat:
@@ -256,39 +257,39 @@ def timeslot_sloturl(request, num=None, slotid=None):
256257
return timeslot_delslot(request, meeting, slotid)
257258

258259
#############################################################################
259-
## Agenda List API
260+
## Schedule List API
260261
#############################################################################
261-
AgendaEntryForm = modelform_factory(Schedule, exclude=('meeting','owner'))
262-
EditAgendaEntryForm = modelform_factory(Schedule, exclude=('meeting','owner', 'name'))
262+
ScheduleEntryForm = modelform_factory(Schedule, exclude=('meeting','owner'))
263+
EditScheduleEntryForm = modelform_factory(Schedule, exclude=('meeting','owner', 'name'))
263264

264265
@role_required('Area Director','Secretariat')
265-
def agenda_list(request, mtg):
266-
agendas = mtg.schedule_set.all()
266+
def schedule_list(request, mtg):
267+
schedules = mtg.schedule_set.all()
267268
json_array=[]
268-
for agenda in agendas:
269-
json_array.append(agenda.json_dict(request.build_absolute_uri('/')))
269+
for schedule in schedules:
270+
json_array.append(schedule.json_dict(request.build_absolute_uri('/')))
270271
return HttpResponse(json.dumps(json_array),
271272
content_type="application/json")
272273

273274
# duplicates save-as functionality below.
274275
@role_required('Area Director','Secretariat')
275-
def agenda_add(request, meeting):
276-
newagendaform = AgendaEntryForm(request.POST)
277-
if not newagendaform.is_valid():
276+
def schedule_add(request, meeting):
277+
newscheduleform = ScheduleEntryForm(request.POST)
278+
if not newscheduleform.is_valid():
278279
return HttpResponse(status=404)
279280

280-
newagenda = newagendaform.save(commit=False)
281-
newagenda.meeting = meeting
282-
newagenda.owner = request.user.person
283-
newagenda.save()
281+
newschedule = newscheduleform.save(commit=False)
282+
newschedule.meeting = meeting
283+
newschedule.owner = request.user.person
284+
newschedule.save()
284285

285286
if "HTTP_ACCEPT" in request.META and "application/json" in request.META['HTTP_ACCEPT']:
286-
return redirect(agenda_infourl, meeting.number, newagenda.owner_email(), newagenda.name)
287+
return redirect(schedule_infourl, meeting.number, newschedule.owner_email(), newschedule.name)
287288
else:
288-
return redirect(edit_agenda, meeting.number, newagenda.owner_email(), newagenda.name)
289+
return redirect(edit_schedule, meeting.number, newschedule.owner_email(), newschedule.name)
289290

290291
@require_POST
291-
def agenda_update(request, meeting, schedule):
292+
def schedule_update(request, meeting, schedule):
292293
# forms are completely useless for update actions that want to
293294
# accept a subset of values. (huh? we could use required=False)
294295

@@ -297,7 +298,7 @@ def agenda_update(request, meeting, schedule):
297298
if not user.is_authenticated:
298299
return HttpResponse({'error':'no permission'}, status=403)
299300

300-
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
301+
cansee,canedit,secretariat = schedule_permissions(meeting, schedule, request.user)
301302
#read_only = not canedit ## not used
302303

303304
# TODO: Secretariat should always get canedit
@@ -316,53 +317,53 @@ def agenda_update(request, meeting, schedule):
316317
schedule.save()
317318

318319
# enforce that a non-public schedule can not be the public one.
319-
if meeting.agenda == schedule and not schedule.public:
320-
meeting.agenda = None
320+
if meeting.schedule == schedule and not schedule.public:
321+
meeting.schedule = None
321322
meeting.save()
322323

323324
if "HTTP_ACCEPT" in request.META and "application/json" in request.META['HTTP_ACCEPT']:
324325
return HttpResponse(json.dumps(schedule.json_dict(request.build_absolute_uri('/'))),
325326
content_type="application/json")
326327
else:
327-
return redirect(edit_agenda, meeting.number, schedule.owner_email(), schedule.name)
328+
return redirect(edit_schedule, meeting.number, schedule.owner_email(), schedule.name)
328329

329330
@role_required('Secretariat')
330-
def agenda_del(request, meeting, schedule):
331+
def schedule_del(request, meeting, schedule):
331332
schedule.delete_assignments()
332-
#debug.log("deleting meeting: %s agenda: %s" % (meeting, meeting.agenda))
333-
if meeting.agenda == schedule:
334-
meeting.agenda = None
333+
#debug.log("deleting meeting: %s schedule: %s" % (meeting, meeting.schedule))
334+
if meeting.schedule == schedule:
335+
meeting.schedule = None
335336
meeting.save()
336337
schedule.delete()
337338
return HttpResponse('{"error":"none"}', status = 200)
338339

339-
def agenda_infosurl(request, num=None):
340+
def schedule_infosurl(request, num=None):
340341
meeting = get_meeting(num)
341342

342343
if request.method == 'GET':
343-
return agenda_list(request, meeting)
344+
return schedule_list(request, meeting)
344345
elif request.method == 'POST':
345-
return agenda_add(request, meeting)
346+
return schedule_add(request, meeting)
346347

347348
# unacceptable action
348349
return HttpResponse(status=406)
349350

350-
def agenda_infourl(request, num=None, owner=None, name=None):
351+
def schedule_infourl(request, num=None, owner=None, name=None):
351352
meeting = get_meeting(num)
352353
person = get_person_by_email(owner)
353354
schedule = get_schedule_by_name(meeting, person, name)
354355
if schedule is None:
355356
raise Http404("No meeting information for meeting %s schedule %s available" % (num,name))
356357

357-
#debug.log("results in agenda: %u / %s" % (schedule.id, request.method))
358+
#debug.log("results in schedule: %u / %s" % (schedule.id, request.method))
358359

359360
if request.method == 'GET':
360361
return HttpResponse(json.dumps(schedule.json_dict(request.build_absolute_uri('/'))),
361362
content_type="application/json")
362363
elif request.method == 'POST':
363-
return agenda_update(request, meeting, schedule)
364+
return schedule_update(request, meeting, schedule)
364365
elif request.method == 'DELETE':
365-
return agenda_del(request, meeting, schedule)
366+
return schedule_del(request, meeting, schedule)
366367
else:
367368
return HttpResponse(status=406)
368369

@@ -377,22 +378,22 @@ def meeting_get(request, meeting):
377378

378379
@role_required('Secretariat')
379380
def meeting_update(request, meeting):
380-
# at present, only the official agenda can be updated from this interface.
381+
# at present, only the official schedule can be updated from this interface.
381382

382-
#debug.log("1 meeting.agenda: %s / %s / %s" % (meeting.agenda, update_dict, request.body))
383-
if "agenda" in request.POST:
384-
value = request.POST["agenda"]
385-
#debug.log("4 meeting.agenda: %s" % (value))
383+
#debug.log("1 meeting.schedule: %s / %s / %s" % (meeting.schedule, update_dict, request.body))
384+
if "schedule" in request.POST:
385+
value = request.POST["schedule"]
386+
#debug.log("4 meeting.schedule: %s" % (value))
386387
if not value or value == "None": # value == "None" is just weird, better with empty string
387-
meeting.set_official_agenda(None)
388+
meeting.set_official_schedule(None)
388389
else:
389390
schedule = get_schedule(meeting, value)
390391
if not schedule.public:
391392
return HttpResponse(status = 406)
392-
#debug.log("3 meeting.agenda: %s" % (schedule))
393-
meeting.set_official_agenda(schedule)
393+
#debug.log("3 meeting.schedule: %s" % (schedule))
394+
meeting.set_official_schedule(schedule)
394395

395-
#debug.log("2 meeting.agenda: %s" % (meeting.agenda))
396+
#debug.log("2 meeting.schedule: %s" % (meeting.schedule))
396397
meeting.save()
397398
return meeting_get(request, meeting)
398399

@@ -442,9 +443,9 @@ def sessions_json(request, num):
442443

443444
# this creates an entirely *NEW* schedtimesessassignment
444445
def assignments_post(request, meeting, schedule):
445-
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
446+
cansee,canedit,secretariat = schedule_permissions(meeting, schedule, request.user)
446447
if not canedit:
447-
return HttpResponse(json.dumps({'error':'no permission to modify this agenda'}),
448+
return HttpResponse(json.dumps({'error':'no permission to modify this schedule'}),
448449
status = 403,
449450
content_type="application/json")
450451

@@ -491,7 +492,7 @@ def assignments_get(request, num, schedule):
491492
return HttpResponse(json.dumps(sess1_dict, sort_keys=True, indent=2),
492493
content_type="application/json")
493494

494-
# this returns the list of scheduled sessions for the given named agenda
495+
# this returns the list of scheduled sessions for the given named schedule
495496
def assignments_json(request, num, owner, name):
496497
info = get_meeting_schedule(num, owner, name)
497498
# The return values from get_meeting_schedule() are silly, in that it
@@ -512,9 +513,9 @@ def assignments_json(request, num, owner, name):
512513

513514
# accepts both POST and PUT in order to implement Postel Doctrine.
514515
def assignment_update(request, meeting, schedule, ss):
515-
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
516+
cansee,canedit,secretariat = schedule_permissions(meeting, schedule, request.user)
516517
if not canedit:
517-
return HttpResponse(json.dumps({'error':'no permission to update this agenda'}),
518+
return HttpResponse(json.dumps({'error':'no permission to update this schedule'}),
518519
status = 403,
519520
content_type="application/json")
520521

@@ -530,9 +531,9 @@ def assignment_update(request, meeting, schedule, ss):
530531
content_type="application/json")
531532

532533
def assignment_delete(request, meeting, schedule, ss):
533-
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
534+
cansee,canedit,secretariat = schedule_permissions(meeting, schedule, request.user)
534535
if not canedit:
535-
return HttpResponse(json.dumps({'error':'no permission to update this agenda'}),
536+
return HttpResponse(json.dumps({'error':'no permission to update this schedule'}),
536537
status = 403,
537538
content_type="application/json")
538539

@@ -552,10 +553,10 @@ def assignment_delete(request, meeting, schedule, ss):
552553
content_type="application/json")
553554

554555
def assignment_get(request, meeting, schedule, ss):
555-
cansee,canedit,secretariat = agenda_permissions(meeting, schedule, request.user)
556+
cansee,canedit,secretariat = schedule_permissions(meeting, schedule, request.user)
556557

557558
if not cansee:
558-
return HttpResponse(json.dumps({'error':'no permission to see this agenda'}),
559+
return HttpResponse(json.dumps({'error':'no permission to see this schedule'}),
559560
status = 403,
560561
content_type="application/json")
561562

ietf/meeting/factories.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,17 @@ def date(self):
6363

6464

6565
@factory.post_generation
66-
def populate_agenda(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
66+
def populate_schedule(obj, create, extracted, **kwargs): # pylint: disable=no-self-argument
6767
'''
68-
Create a default agenda, unless the factory is called
68+
Create a default schedule, unless the factory is called
6969
with populate_agenda=False
7070
'''
7171
if extracted is None:
7272
extracted = True
7373
if create and extracted:
7474
for x in range(3):
7575
TimeSlotFactory(meeting=obj)
76-
obj.agenda = ScheduleFactory(meeting=obj)
76+
obj.schedule = ScheduleFactory(meeting=obj)
7777
obj.save()
7878

7979
class SessionFactory(factory.DjangoModelFactory):
@@ -96,7 +96,7 @@ def add_to_schedule(obj, create, extracted, **kwargs): # pylint: disable=no-self
9696
extracted = True
9797
if create and extracted:
9898
ts = obj.meeting.timeslot_set.all()
99-
obj.timeslotassignments.create(timeslot=ts[random.randrange(len(ts))],schedule=obj.meeting.agenda)
99+
obj.timeslotassignments.create(timeslot=ts[random.randrange(len(ts))],schedule=obj.meeting.schedule)
100100

101101
class ScheduleFactory(factory.DjangoModelFactory):
102102
class Meta:
@@ -175,4 +175,4 @@ class Meta:
175175

176176
make_file = factory.PostGeneration(
177177
lambda obj, create, extracted, **kwargs: open(obj.staged_filepath(),'a').close()
178-
)
178+
)

ietf/meeting/forms.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,11 +187,11 @@ def save(self, *args, **kwargs):
187187
if kwargs.get('commit', True):
188188
# create schedule with meeting
189189
meeting.save() # pre-save so we have meeting.pk for schedule
190-
if not meeting.agenda:
191-
meeting.agenda = Schedule.objects.create(
190+
if not meeting.schedule:
191+
meeting.schedule = Schedule.objects.create(
192192
meeting=meeting,
193193
owner=Person.objects.get(name='(System)'))
194-
meeting.save() # save with agenda
194+
meeting.save() # save with schedule
195195

196196
# create directories
197197
make_materials_directories(meeting)

ietf/meeting/helpers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,14 @@ def get_ietf_meeting(num=None):
138138

139139
def get_schedule(meeting, name=None):
140140
if name is None:
141-
schedule = meeting.agenda
141+
schedule = meeting.schedule
142142
else:
143143
schedule = get_object_or_404(meeting.schedule_set, name=name)
144144
return schedule
145145

146146
def get_schedule_by_id(meeting, schedid):
147147
if schedid is None:
148-
schedule = meeting.agenda
148+
schedule = meeting.schedule
149149
else:
150150
schedule = get_object_or_404(meeting.schedule_set, id=int(schedid))
151151
return schedule
@@ -271,7 +271,7 @@ def convert_draft_to_pdf(doc_name):
271271
pipe("ps2pdf "+psname+" "+outpath)
272272
os.unlink(psname)
273273

274-
def agenda_permissions(meeting, schedule, user):
274+
def schedule_permissions(meeting, schedule, user):
275275
# do this in positive logic.
276276
cansee = False
277277
canedit = False
@@ -389,7 +389,7 @@ def create_interim_meeting(group, date, city='', country='', timezone='UTC',
389389
owner=person,
390390
visible=True,
391391
public=True)
392-
meeting.agenda = schedule
392+
meeting.schedule = schedule
393393
meeting.save()
394394
return meeting
395395

@@ -622,7 +622,7 @@ def update_interim_session_assignment(form):
622622
SchedTimeSessAssignment.objects.create(
623623
timeslot=slot,
624624
session=session,
625-
schedule=session.meeting.agenda)
625+
schedule=session.meeting.schedule)
626626

627627
def populate_important_dates(meeting):
628628
assert ImportantDate.objects.filter(meeting=meeting).exists() is False
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Copyright The IETF Trust 2019, All Rights Reserved
2+
# -*- coding: utf-8 -*-
3+
# Generated by Django 1.11.26 on 2019-11-18 04:01
4+
from __future__ import unicode_literals
5+
6+
from django.db import migrations
7+
import django.db.models.deletion
8+
import ietf.utils.models
9+
10+
11+
class Migration(migrations.Migration):
12+
13+
dependencies = [
14+
('meeting', '0020_remove_future_break_sessions'),
15+
]
16+
17+
operations = [
18+
migrations.RenameField(
19+
model_name='meeting',
20+
old_name='agenda',
21+
new_name='schedule',
22+
),
23+
migrations.AlterField(
24+
model_name='schedule',
25+
name='meeting',
26+
field=ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='schedule_set', to='meeting.Meeting'),
27+
),
28+
]

0 commit comments

Comments
 (0)