Add private bit to time slot types so that it can be configured in the

admin instead of hardcoding the list of private sessions types in the
code.
 - Legacy-Id: 18402
This commit is contained in:
Ole Laursen 2020-08-21 12:15:52 +00:00
parent a39fa7f967
commit 2029fb74fa
5 changed files with 48 additions and 10 deletions

View file

@ -1344,9 +1344,8 @@ def agenda(request, num=None, name=None, base=None, ext=None, owner=None, utc=""
updated = meeting.updated()
filtered_assignments = SchedTimeSessAssignment.objects.filter(
schedule__in=[schedule, schedule.base]
).exclude(
timeslot__type__in=['lead', 'offagenda']
schedule__in=[schedule, schedule.base],
timeslot__type__private=False,
)
filtered_assignments = preprocess_assignments_for_agenda(filtered_assignments, meeting)
@ -1641,9 +1640,8 @@ def week_view(request, num=None, name=None, owner=None):
raise Http404
filtered_assignments = SchedTimeSessAssignment.objects.filter(
schedule__in=[schedule, schedule.base]
).exclude(
timeslot__type__in=['lead','offagenda']
schedule__in=[schedule, schedule.base],
timeslot__type__private=False,
)
# Only show assignments from the traditional meeting "week" (Sat-Fri).
# We'll determine this using the saturday before the first scheduled regular session.
@ -1815,7 +1813,10 @@ def agenda_ical(request, num=None, name=None, acronym=None, session_id=None):
elif len(item) > 1 and item[0] == '~':
include_types |= set([item[1:]])
assignments = SchedTimeSessAssignment.objects.filter(schedule__in=[schedule, schedule.base]).exclude(timeslot__type__in=['lead','offagenda'])
assignments = SchedTimeSessAssignment.objects.filter(
schedule__in=[schedule, schedule.base],
timeslot__type__private=False,
)
assignments = preprocess_assignments_for_agenda(assignments, meeting)
if q:
@ -1848,9 +1849,10 @@ def agenda_json(request, num=None):
locations = set()
parent_acronyms = set()
assignments = SchedTimeSessAssignment.objects.filter(
schedule__in=[meeting.schedule, meeting.schedule.base if meeting.schedule else None]
schedule__in=[meeting.schedule, meeting.schedule.base if meeting.schedule else None],
timeslot__type__private=False,
).exclude(
session__type__in=['lead','offagenda','break','reg']
session__type__in=['break', 'reg']
)
# Update the assignments with historic information, i.e., valid at the
# time of the meeting

View file

@ -12372,6 +12372,7 @@
"desc": "",
"name": "Break",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",
@ -12382,6 +12383,7 @@
"desc": "Leadership Meetings",
"name": "Leadership",
"order": 0,
"private": true,
"used": true
},
"model": "name.timeslottypename",
@ -12392,6 +12394,7 @@
"desc": "Other Meetings Not Published on Agenda",
"name": "Off Agenda",
"order": 0,
"private": true,
"used": true
},
"model": "name.timeslottypename",
@ -12402,6 +12405,7 @@
"desc": "",
"name": "Other",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",
@ -12412,6 +12416,7 @@
"desc": "",
"name": "Plenary",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",
@ -12422,6 +12427,7 @@
"desc": "",
"name": "Registration",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",
@ -12432,6 +12438,7 @@
"desc": "",
"name": "Regular",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",
@ -12442,6 +12449,7 @@
"desc": "A room has been reserved for use by another body the timeslot indicated",
"name": "Room Reserved",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",
@ -12452,6 +12460,7 @@
"desc": "A room was not booked for the timeslot indicated",
"name": "Room Unavailable",
"order": 0,
"private": false,
"used": true
},
"model": "name.timeslottypename",

View file

@ -0,0 +1,26 @@
# Generated by Django 2.2.15 on 2020-08-20 02:40
from django.db import migrations, models
def set_private_bit_on_timeslottypename(apps, schema_editor):
TimeSlotTypeName = apps.get_model('name', 'TimeSlotTypeName')
TimeSlotTypeName.objects.filter(slug__in=['lead', 'offagenda']).update(private=True)
def noop(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
('name', '0017_update_constraintname_order_and_label'),
]
operations = [
migrations.AddField(
model_name='timeslottypename',
name='private',
field=models.BooleanField(default=False, help_text='Whether sessions of this type should be kept off the public agenda'),
),
migrations.RunPython(set_private_bit_on_timeslottypename, noop),
]

View file

@ -6,7 +6,7 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('name', '0017_update_constraintname_order_and_label'),
('name', '0018_add_timeslottypename_private'),
]
def add_rescheduled_session_status_name(apps, schema_editor):

View file

@ -66,6 +66,7 @@ class SessionStatusName(NameModel):
"""Waiting for Approval, Approved, Waiting for Scheduling, Scheduled, Cancelled, Disapproved"""
class TimeSlotTypeName(NameModel):
"""Session, Break, Registration, Other, Reserved, unavail"""
private = models.BooleanField(default=False, help_text="Whether sessions of this type should be kept off the public agenda")
class ConstraintName(NameModel):
"""conflict, conflic2, conflic3, bethere, timerange, time_relation, wg_adjacent"""
penalty = models.IntegerField(default=0, help_text="The penalty for violating this kind of constraint; for instance 10 (small penalty) or 10000 (large penalty)")