Skip to content

Commit a85424a

Browse files
committed
Allows the secretariat to manage more meeting types, including leadership meetings.
Backfills those types of meetings from IETF91 and IETF92. Addresses several facelift issues in the meeting application. Commit ready for merge. - Legacy-Id: 9603
2 parents 374e77b + 547a1ae commit a85424a

42 files changed

Lines changed: 1123 additions & 77 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ietf/bin/create-break-sessions

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ scheduled = SessionStatusName.objects.get(slug='sched')
2222

2323
for meeting in Meeting.objects.filter(type="ietf").order_by("date"):
2424
print "Checking %s schedules ..." % meeting
25-
brk, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Break', )
26-
reg, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Registration', )
25+
brk, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Break', type_id='break',)
26+
reg, __ = Session.objects.get_or_create(meeting=meeting, group=secretariat, requested_by=system, status=scheduled, name='Registration', type_id='reg',)
2727

2828
for schedule in meeting.schedule_set.all():
2929
print " Checking for missing Break and Reg sessions in %s" % schedule

ietf/doc/tests.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,7 @@ def test_document_material(self):
527527
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
528528
modified = datetime.datetime.now(),
529529
requested_by = Person.objects.get(user__username="marschairman"),
530+
type_id = "session",
530531
)
531532
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
532533

ietf/doc/tests_material.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ def test_revise(self):
148148
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
149149
modified = datetime.datetime.now(),
150150
requested_by = Person.objects.get(user__username="marschairman"),
151+
type_id="session",
151152
)
152153
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
153154

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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+
('group', '0003_auto_20150304_0743'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='group',
16+
name='unused_states',
17+
field=models.ManyToManyField(help_text=b'Document states that have been disabled for the group.', to='doc.State', blank=True),
18+
preserve_default=True,
19+
),
20+
migrations.AlterField(
21+
model_name='group',
22+
name='unused_tags',
23+
field=models.ManyToManyField(help_text=b'Document tags that have been disabled for the group.', to='name.DocTagName', blank=True),
24+
preserve_default=True,
25+
),
26+
migrations.AlterField(
27+
model_name='grouphistory',
28+
name='unused_states',
29+
field=models.ManyToManyField(help_text=b'Document states that have been disabled for the group.', to='doc.State', blank=True),
30+
preserve_default=True,
31+
),
32+
migrations.AlterField(
33+
model_name='grouphistory',
34+
name='unused_tags',
35+
field=models.ManyToManyField(help_text=b'Document tags that have been disabled for the group.', to='name.DocTagName', blank=True),
36+
preserve_default=True,
37+
),
38+
migrations.AlterField(
39+
model_name='groupmilestone',
40+
name='resolved',
41+
field=models.CharField(help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50, blank=True),
42+
preserve_default=True,
43+
),
44+
migrations.AlterField(
45+
model_name='groupmilestonehistory',
46+
name='resolved',
47+
field=models.CharField(help_text=b'Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50, blank=True),
48+
preserve_default=True,
49+
),
50+
migrations.AlterField(
51+
model_name='role',
52+
name='email',
53+
field=models.ForeignKey(help_text=b'Email address used by person for this role.', to='person.Email'),
54+
preserve_default=True,
55+
),
56+
migrations.AlterField(
57+
model_name='rolehistory',
58+
name='email',
59+
field=models.ForeignKey(help_text=b'Email address used by person for this role.', to='person.Email'),
60+
preserve_default=True,
61+
),
62+
]
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# -*- coding: utf-8 -*-
2+
from __future__ import unicode_literals
3+
4+
from django.db import migrations
5+
6+
def create_iab_roles(apps, schema_editor):
7+
Role = apps.get_model('group','Role')
8+
Group = apps.get_model('group','Group')
9+
Person = apps.get_model('person','Person')
10+
11+
iab = Group.objects.get(acronym='iab')
12+
13+
iab_names = [
14+
'Jari Arkko',
15+
'Mary Barnes',
16+
'Marc Blanchet',
17+
'Ralph Droms',
18+
'Ted Hardie',
19+
'Joe Hildebrand',
20+
'Russ Housley',
21+
'Erik Nordmark',
22+
'Robert Sparks',
23+
'Andrew Sullivan',
24+
'Dave Thaler',
25+
'Brian Trammell',
26+
'Suzanne Woolf',
27+
]
28+
29+
for name in iab_names:
30+
person = Person.objects.get(name=name)
31+
person.role_set.add(Role(name_id='member',group=iab,person=person,email_id=person.email_set.filter(active=True).order_by('-time').first().address))
32+
33+
34+
class Migration(migrations.Migration):
35+
36+
dependencies = [
37+
('group', '0004_auto_20150430_0847'),
38+
]
39+
40+
operations = [
41+
migrations.RunPython(create_iab_roles),
42+
]

ietf/ietfauth/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def has_role(user, role_names, *args, **kwargs):
4646
role_qs = {
4747
"Area Director": Q(person=person, name__in=("pre-ad", "ad"), group__type="area", group__state="active"),
4848
"Secretariat": Q(person=person, name="secr", group__acronym="secretariat"),
49+
"IAB" : Q(person=person, name="member", group__acronym="iab"),
4950
"IANA": Q(person=person, name="auth", group__acronym="iana"),
5051
"RFC Editor": Q(person=person, name="auth", group__acronym="rfceditor"),
5152
"ISE" : Q(person=person, name="chair", group__acronym="ise"),
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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+
('ipr', '0002_remove_legacy_models'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='genericiprdisclosure',
16+
name='holder_contact_info',
17+
field=models.TextField(help_text=b'Address, phone, etc.', blank=True),
18+
preserve_default=True,
19+
),
20+
migrations.AlterField(
21+
model_name='holderiprdisclosure',
22+
name='holder_contact_info',
23+
field=models.TextField(help_text=b'Address, phone, etc.', blank=True),
24+
preserve_default=True,
25+
),
26+
migrations.AlterField(
27+
model_name='iprdisclosurebase',
28+
name='compliant',
29+
field=models.BooleanField(default=True, verbose_name=b'Complies to RFC3979'),
30+
preserve_default=True,
31+
),
32+
migrations.AlterField(
33+
model_name='iprdisclosurebase',
34+
name='notes',
35+
field=models.TextField(verbose_name=b'Additional notes', blank=True),
36+
preserve_default=True,
37+
),
38+
migrations.AlterField(
39+
model_name='iprdisclosurebase',
40+
name='other_designations',
41+
field=models.CharField(max_length=255, verbose_name=b'Designations for other contributions', blank=True),
42+
preserve_default=True,
43+
),
44+
migrations.AlterField(
45+
model_name='nondocspecificiprdisclosure',
46+
name='holder_contact_info',
47+
field=models.TextField(help_text=b'Address, phone, etc.', blank=True),
48+
preserve_default=True,
49+
),
50+
migrations.AlterField(
51+
model_name='thirdpartyiprdisclosure',
52+
name='ietfer_contact_info',
53+
field=models.TextField(help_text=b'Address, phone, etc.', blank=True),
54+
preserve_default=True,
55+
),
56+
]

ietf/meeting/ajax.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ def timeslot_roomurl(request, num=None, roomid=None):
158158
# no authorization required to list.
159159
def timeslot_slotlist(request, mtg):
160160
slots = mtg.timeslot_set.all()
161+
# Restrict graphical editing to slots of type 'session' for now
162+
slots = slots.filter(type__slug='session')
161163
json_array=[]
162164
for slot in slots:
163165
json_array.append(slot.json_dict(request.build_absolute_uri('/')))

ietf/meeting/helpers.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def build_all_agenda_slices(meeting):
6666
time_slices = []
6767
date_slices = {}
6868

69-
for ts in meeting.timeslot_set.exclude(type__in=['reg','break']).order_by('time','name'):
69+
for ts in meeting.timeslot_set.filter(type__in=['session',]).order_by('time','name'):
7070
ymd = ts.time.date()
7171

7272
if ymd not in date_slices and ts.location != None:
@@ -80,13 +80,10 @@ def build_all_agenda_slices(meeting):
8080
time_slices.sort()
8181
return time_slices,date_slices
8282

83-
def get_scheduledsessions_from_schedule(schedule):
84-
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).exclude(session__isnull = True).order_by('timeslot__time','timeslot__name','session__group__group')
85-
86-
return ss
87-
8883
def get_all_scheduledsessions_from_schedule(schedule):
89-
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False).order_by('timeslot__time','timeslot__name')
84+
ss = schedule.scheduledsession_set.filter(timeslot__location__isnull = False)
85+
ss = ss.filter(session__type__slug='session')
86+
ss = ss.order_by('timeslot__time','timeslot__name')
9087

9188
return ss
9289

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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', '0004_auto_20150308_0446'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='meeting',
16+
name='agenda_note',
17+
field=models.TextField(help_text=b'Text in this field will be placed at the top of the html agenda page for the meeting. HTML can be used, but will not be validated.', blank=True),
18+
preserve_default=True,
19+
),
20+
migrations.AlterField(
21+
model_name='schedule',
22+
name='public',
23+
field=models.BooleanField(default=True, help_text='Make this agenda publically available.'),
24+
preserve_default=True,
25+
),
26+
migrations.AlterField(
27+
model_name='schedule',
28+
name='visible',
29+
field=models.BooleanField(default=True, help_text='Make this agenda available to those who know about it.'),
30+
preserve_default=True,
31+
),
32+
migrations.AlterField(
33+
model_name='scheduledsession',
34+
name='extendedfrom',
35+
field=models.ForeignKey(default=None, to='meeting.ScheduledSession', help_text='Timeslot this session is an extension of.', null=True),
36+
preserve_default=True,
37+
),
38+
migrations.AlterField(
39+
model_name='scheduledsession',
40+
name='pinned',
41+
field=models.BooleanField(default=False, help_text=b'Do not move session during automatic placement.'),
42+
preserve_default=True,
43+
),
44+
migrations.AlterField(
45+
model_name='scheduledsession',
46+
name='session',
47+
field=models.ForeignKey(default=None, to='meeting.Session', help_text='Scheduled session.', null=True),
48+
preserve_default=True,
49+
),
50+
migrations.AlterField(
51+
model_name='session',
52+
name='name',
53+
field=models.CharField(help_text=b'Name of session, in case the session has a purpose rather than just being a group meeting.', max_length=255, blank=True),
54+
preserve_default=True,
55+
),
56+
migrations.AlterField(
57+
model_name='session',
58+
name='short',
59+
field=models.CharField(help_text=b"Short version of 'name' above, for use in filenames.", max_length=32, blank=True),
60+
preserve_default=True,
61+
),
62+
migrations.AlterField(
63+
model_name='timeslot',
64+
name='sessions',
65+
field=models.ManyToManyField(related_name='slots', to='meeting.Session', through='meeting.ScheduledSession', blank=True, help_text='Scheduled session, if any.', null=True),
66+
preserve_default=True,
67+
),
68+
migrations.AlterField(
69+
model_name='timeslot',
70+
name='show_location',
71+
field=models.BooleanField(default=True, help_text=b'Show location in agenda.'),
72+
preserve_default=True,
73+
),
74+
]

0 commit comments

Comments
 (0)