feat: import IAB minutes from the IAB wordpress site (#5689)
* feat: import IAB minutes from the IAB wordpress site Work in Progress * fix: refactor as management commands * fix: use datetime.timezone.utc for comparisons * fix: coerce an argument. Command now runs * chore: extend queryset in a better way * fix: fetch kesara's repo and move files into place. * fix: add a DocEvent explaining where the Documents came from * fix: small optimizations and typo fixes * fix: performance compromise for very old meetings * fix: ensure variable is initialized * fix: avoid operating on null by changing method signature - address review comments * fix: repair html typo and address pyflake complaint * chore: run black on a new and changed things
This commit is contained in:
parent
c7d98a1cdb
commit
b75b560dea
|
@ -83,7 +83,7 @@ from ietf.group.utils import (get_charter_text, can_manage_all_groups_of_type,
|
|||
from ietf.ietfauth.utils import has_role, is_authorized_in_group
|
||||
from ietf.mailtrigger.utils import gather_relevant_expansions
|
||||
from ietf.meeting.helpers import get_meeting
|
||||
from ietf.meeting.utils import group_sessions, add_event_info_to_session_qs
|
||||
from ietf.meeting.utils import group_sessions
|
||||
from ietf.name.models import GroupTypeName, StreamName
|
||||
from ietf.person.models import Email, Person
|
||||
from ietf.review.models import (ReviewRequest, ReviewAssignment, ReviewerSettings,
|
||||
|
@ -828,18 +828,22 @@ def email_aliases(request, acronym=None, group_type=None):
|
|||
|
||||
return render(request,'group/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'group':group})
|
||||
|
||||
def meetings(request, acronym=None, group_type=None):
|
||||
group = get_group_or_404(acronym,group_type) if acronym else None
|
||||
def meetings(request, acronym, group_type=None):
|
||||
group = get_group_or_404(acronym, group_type)
|
||||
|
||||
four_years_ago = timezone.now()-datetime.timedelta(days=4*365)
|
||||
four_years_ago = timezone.now() - datetime.timedelta(days=4 * 365)
|
||||
|
||||
sessions = add_event_info_to_session_qs(
|
||||
group.session_set.filter(
|
||||
meeting__date__gt=four_years_ago,
|
||||
type__in=['regular','plenary','other']
|
||||
sessions = (
|
||||
group.session_set.with_current_status()
|
||||
.filter(
|
||||
meeting__date__gt=four_years_ago
|
||||
if group.acronym != "iab"
|
||||
else datetime.date(1970, 1, 1),
|
||||
type__in=["regular", "plenary", "other"],
|
||||
)
|
||||
.filter(
|
||||
current_status__in=["sched", "schedw", "appr", "canceled"],
|
||||
)
|
||||
).filter(
|
||||
current_status__in=['sched','schedw','appr','canceled'],
|
||||
)
|
||||
sessions = list(sessions)
|
||||
for s in sessions:
|
||||
|
@ -847,19 +851,40 @@ def meetings(request, acronym=None, group_type=None):
|
|||
|
||||
future, in_progress, recent, past = group_sessions(sessions)
|
||||
|
||||
can_edit = group.has_role(request.user,group.features.groupman_roles)
|
||||
can_always_edit = has_role(request.user,["Secretariat","Area Director"])
|
||||
can_edit = group.has_role(request.user, group.features.groupman_roles)
|
||||
can_always_edit = has_role(request.user, ["Secretariat", "Area Director"])
|
||||
|
||||
far_past = []
|
||||
if group.acronym == "iab":
|
||||
recent_past = []
|
||||
for s in past:
|
||||
if s.time >= four_years_ago:
|
||||
recent_past.append(s)
|
||||
else:
|
||||
far_past.append(s)
|
||||
past = recent_past
|
||||
|
||||
return render(
|
||||
request,
|
||||
"group/meetings.html",
|
||||
construct_group_menu_context(
|
||||
request,
|
||||
group,
|
||||
"meetings",
|
||||
group_type,
|
||||
{
|
||||
"group": group,
|
||||
"future": future,
|
||||
"in_progress": in_progress,
|
||||
"recent": recent,
|
||||
"past": past,
|
||||
"far_past": far_past,
|
||||
"can_edit": can_edit,
|
||||
"can_always_edit": can_always_edit,
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
return render(request,'group/meetings.html',
|
||||
construct_group_menu_context(request, group, "meetings", group_type, {
|
||||
'group':group,
|
||||
'future':future,
|
||||
'in_progress':in_progress,
|
||||
'recent':recent,
|
||||
'past':past,
|
||||
'can_edit':can_edit,
|
||||
'can_always_edit':can_always_edit,
|
||||
}))
|
||||
|
||||
def chair_photos(request, group_type=None):
|
||||
roles = sorted(Role.objects.filter(group__type=group_type, group__state='active', name_id='chair'),key=lambda x: x.person.last_name()+x.person.name+x.group.acronym)
|
||||
|
|
File diff suppressed because one or more lines are too long
141
ietf/meeting/management/commands/import_iab_minutes.py
Normal file
141
ietf/meeting/management/commands/import_iab_minutes.py
Normal file
|
@ -0,0 +1,141 @@
|
|||
# Copyright The IETF Trust 2023, All Rights Reserved
|
||||
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
from pathlib import Path
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
from ietf.doc.models import Document, DocAlias, DocEvent
|
||||
from ietf.meeting.models import (
|
||||
Meeting,
|
||||
Schedule,
|
||||
Session,
|
||||
SchedulingEvent,
|
||||
SchedTimeSessAssignment,
|
||||
TimeSlot,
|
||||
)
|
||||
|
||||
|
||||
def nametimes_by_year():
|
||||
with Path(__file__).parent.joinpath("data_for_import_iab_minutes").open() as file:
|
||||
return json.loads(file.read())
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Performs a one-time import of older IAB minutes, creating Meetings to attach them to"
|
||||
|
||||
def handle(self, *args, **options):
|
||||
tmpdir = tempfile.mkdtemp()
|
||||
process = subprocess.Popen(
|
||||
["git", "clone", "https://github.com/kesara/iab-scraper.git", tmpdir],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
stdout, stderr = process.communicate()
|
||||
if not Path(tmpdir).joinpath("iab_minutes", "2022-12-14.md").exists():
|
||||
print("Git clone of the iab-scraper directory did not go as expected")
|
||||
print("stdout:", stdout)
|
||||
print("stderr:", stderr)
|
||||
print(f"Clean up {tmpdir} manually")
|
||||
exit(-1)
|
||||
|
||||
ntby = nametimes_by_year()
|
||||
for year in ntby:
|
||||
counter = 1
|
||||
for month, day, ext, start_hour, start_minute, duration in ntby[year]:
|
||||
start = datetime.datetime(
|
||||
int(year),
|
||||
month,
|
||||
day,
|
||||
start_hour,
|
||||
start_minute,
|
||||
tzinfo=datetime.timezone.utc,
|
||||
)
|
||||
meeting_name = f"interim-{year}-iab-{counter:02d}"
|
||||
minutes_docname = f"minutes-interim-{year}-iab-{counter:02d}-{start:%Y%m%d}" # Note violating the convention of having the start time...
|
||||
minutes_filename = f"{minutes_docname}-00.{ext}"
|
||||
# Create Document
|
||||
doc = Document.objects.create(
|
||||
name=minutes_docname,
|
||||
type_id="minutes",
|
||||
title=f"Minutes {meeting_name} {start:%Y-%m-%d}", # Another violation of convention,
|
||||
group_id=7, # The IAB group
|
||||
rev="00",
|
||||
uploaded_filename=minutes_filename,
|
||||
)
|
||||
DocAlias.objects.create(name=doc.name).docs.add(doc)
|
||||
e = DocEvent.objects.create(
|
||||
type="comment",
|
||||
doc=doc,
|
||||
rev="00",
|
||||
by_id=1, # The "(System)" person
|
||||
desc="Minutes moved into datatracker from iab wordpress website",
|
||||
)
|
||||
doc.save_with_history([e])
|
||||
# Create Meeting - Add a note about noon utc fake meeting times
|
||||
meeting = Meeting.objects.create(
|
||||
number=meeting_name,
|
||||
type_id="interim",
|
||||
date=start.date(),
|
||||
days=1,
|
||||
time_zone=start.tzname(),
|
||||
)
|
||||
schedule = Schedule.objects.create(
|
||||
meeting=meeting,
|
||||
owner_id=1, # The "(System)" person
|
||||
visible=True,
|
||||
public=True,
|
||||
)
|
||||
meeting.schedule = schedule
|
||||
if start.timetz() == datetime.time(
|
||||
12, 0, 0, tzinfo=datetime.timezone.utc
|
||||
):
|
||||
meeting.agenda_note = "The actual time of this meeting was not recorded and was likely not at noon UTC"
|
||||
meeting.save()
|
||||
# Create Session
|
||||
session = Session.objects.create(
|
||||
meeting=meeting,
|
||||
group_id=7, # The IAB group
|
||||
type_id="regular",
|
||||
purpose_id="regular",
|
||||
)
|
||||
# Schedule the Session
|
||||
SchedulingEvent.objects.create(
|
||||
session=session,
|
||||
status_id="sched",
|
||||
by_id=1, # (System)
|
||||
)
|
||||
timeslot = TimeSlot.objects.create(
|
||||
meeting=meeting,
|
||||
type_id="regular",
|
||||
time=start,
|
||||
duration=datetime.timedelta(seconds=duration),
|
||||
)
|
||||
SchedTimeSessAssignment.objects.create(
|
||||
timeslot=timeslot, session=session, schedule=schedule
|
||||
)
|
||||
# Add Document to Session
|
||||
session.sessionpresentation_set.create(document=doc, rev=doc.rev)
|
||||
|
||||
# Put file in place
|
||||
source = Path(tmpdir).joinpath(
|
||||
"iab_minutes", f"{year}-{month:02d}-{day:02d}.{ext}"
|
||||
)
|
||||
dest = Path(settings.AGENDA_PATH).joinpath(
|
||||
meeting_name, "minutes", minutes_filename
|
||||
)
|
||||
if dest.exists():
|
||||
print(f"WARNING: {dest} already exists - not overwriting it.")
|
||||
else:
|
||||
os.makedirs(dest.parent, exist_ok=True)
|
||||
shutil.copy(source, dest)
|
||||
|
||||
counter += 1
|
||||
|
||||
shutil.rmtree(tmpdir)
|
|
@ -0,0 +1,872 @@
|
|||
# Copyright The IETF Trust 2023, All Rights Reserved
|
||||
|
||||
import datetime
|
||||
import json
|
||||
|
||||
from collections import defaultdict
|
||||
from pathlib import Path
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Regenerates the json used by import_iab_minutes"
|
||||
|
||||
def handle(self, *args, **options):
|
||||
ntby = build_nametimes_by_year()
|
||||
with Path(__file__).parent.joinpath("data_for_import_iab_minutes").open(
|
||||
"w"
|
||||
) as file:
|
||||
file.write(json.dumps(ntby, sort_keys=True))
|
||||
|
||||
|
||||
def make_time_tuple(date, start_hour, start_minute, end_hour, end_minute, tz):
|
||||
start = datetime.datetime(
|
||||
date.year, date.month, date.day, start_hour, start_minute, tzinfo=ZoneInfo(tz)
|
||||
).astimezone(datetime.timezone.utc)
|
||||
end = datetime.datetime(
|
||||
date.year, date.month, date.day, end_hour, end_minute, tzinfo=ZoneInfo(tz)
|
||||
).astimezone(datetime.timezone.utc)
|
||||
return (start.hour, start.minute, (end - start).seconds)
|
||||
|
||||
|
||||
def get_time(name):
|
||||
"""
|
||||
From Cindy:
|
||||
2011-04-06 (and likely earlier) - 2013-02-27: 0930-1100 PST8PDT
|
||||
2013-03-27 - 2015-04-08: 0700-0830 PST8PDT
|
||||
2015-04-15 - 2016-03-23: 0800-0930 PST8PDT
|
||||
2016-04-20 - 2016-11-02: 0700-0830 PST8PDT
|
||||
2016-11-20 - 2019-03-13: 2000-2130 UTC
|
||||
2019-04-10 - 2019-10-02: 1330-1430 UTC
|
||||
2019-10-16 - 2020-03-18: 2130-2230 UTC
|
||||
2020-04-01 - 2020-10-14: 1330-1430 UTC
|
||||
2020-10-21 - 2021-03-03: 2130-2230 UTC
|
||||
2021-03-24 - Present: 0700-0800 PST8PDT
|
||||
"""
|
||||
date_string = name.split(".")[0]
|
||||
date = datetime.date(*map(int, date_string.split("-")))
|
||||
times = None
|
||||
if datetime.date(2011, 4, 6) <= date <= datetime.date(2013, 2, 27):
|
||||
times = make_time_tuple(date, 9, 30, 11, 0, "PST8PDT")
|
||||
elif datetime.date(2013, 3, 27) <= date <= datetime.date(2015, 4, 8):
|
||||
times = make_time_tuple(date, 7, 0, 8, 30, "PST8PDT")
|
||||
elif datetime.date(2015, 4, 15) <= date <= datetime.date(2016, 3, 23):
|
||||
times = make_time_tuple(date, 8, 0, 9, 30, "PST8PDT")
|
||||
elif datetime.date(2016, 11, 20) <= date <= datetime.date(2019, 3, 13):
|
||||
times = make_time_tuple(date, 20, 0, 21, 30, "UTC")
|
||||
elif datetime.date(2019, 4, 10) <= date <= datetime.date(2019, 10, 2):
|
||||
times = make_time_tuple(date, 13, 30, 14, 30, "UTC")
|
||||
elif datetime.date(2019, 10, 16) <= date <= datetime.date(2020, 3, 18):
|
||||
times = make_time_tuple(date, 21, 30, 22, 30, "UTC")
|
||||
elif datetime.date(2020, 4, 1) <= date <= datetime.date(2020, 10, 14):
|
||||
times = make_time_tuple(date, 13, 30, 14, 30, "UTC")
|
||||
elif datetime.date(2020, 10, 21) <= date <= datetime.date(2021, 3, 3):
|
||||
times = make_time_tuple(date, 21, 30, 22, 30, "UTC")
|
||||
elif datetime.date(2021, 3, 24) <= date:
|
||||
times = make_time_tuple(date, 7, 0, 8, 0, "PST8PDT")
|
||||
else:
|
||||
times = make_time_tuple(date, 12, 0, 12, 5, "UTC")
|
||||
return times
|
||||
|
||||
|
||||
def build_nametimes_by_year():
|
||||
scraped_basenames = [
|
||||
"2022-12-14.md",
|
||||
"2022-12-07.md",
|
||||
"2022-11-23.md",
|
||||
"2022-11-10.md",
|
||||
"2022-11-08.md",
|
||||
"2022-11-06.md",
|
||||
"2022-10-26.md",
|
||||
"2022-10-12.md",
|
||||
"2022-10-05.md",
|
||||
"2022-09-28.md",
|
||||
"2022-09-21.md",
|
||||
"2022-09-07.md",
|
||||
"2022-08-24.md",
|
||||
"2022-08-10.md",
|
||||
"2022-07-26.md",
|
||||
"2022-07-24.md",
|
||||
"2022-07-06.md",
|
||||
"2022-06-29.md",
|
||||
"2022-06-22.md",
|
||||
"2022-06-15.md",
|
||||
"2022-06-01.md",
|
||||
"2022-05-11.md",
|
||||
"2022-05-04.md",
|
||||
"2022-04-27.md",
|
||||
"2022-04-20.md",
|
||||
"2022-04-13.md",
|
||||
"2022-04-06.md",
|
||||
"2022-03-20.md",
|
||||
"2022-03-09.md",
|
||||
"2022-03-02.md",
|
||||
"2022-02-23.md",
|
||||
"2022-02-16.md",
|
||||
"2022-02-02.md",
|
||||
"2022-01-19.md",
|
||||
"2022-01-12.md",
|
||||
"2021-12-15.md",
|
||||
"2021-12-08.md",
|
||||
"2021-12-01.md",
|
||||
"2021-11-17.md",
|
||||
"2021-10-27.md",
|
||||
"2021-10-20.md",
|
||||
"2021-10-06.md",
|
||||
"2021-09-22.md",
|
||||
"2021-09-08.md",
|
||||
"2021-09-01.md",
|
||||
"2021-08-25.md",
|
||||
"2021-08-11.md",
|
||||
"2021-07-21.md",
|
||||
"2021-07-14.md",
|
||||
"2021-06-30.md",
|
||||
"2021-06-23.md",
|
||||
"2021-06-16.md",
|
||||
"2021-06-02.md",
|
||||
"2021-05-26.md",
|
||||
"2021-05-19.md",
|
||||
"2021-05-12.md",
|
||||
"2021-05-05.md",
|
||||
"2021-04-21.md",
|
||||
"2021-04-14.md",
|
||||
"2021-04-07.md",
|
||||
"2021-03-31.md",
|
||||
"2021-03-24.md",
|
||||
"2021-03-03.md",
|
||||
"2021-02-24.md",
|
||||
"2021-02-17.md",
|
||||
"2021-02-10.md",
|
||||
"2021-02-03.md",
|
||||
"2021-01-27.md",
|
||||
"2021-01-20.md",
|
||||
"2021-01-13.md",
|
||||
"2021-01-06.md",
|
||||
"2020-12-16.md",
|
||||
"2020-12-02.md",
|
||||
"2020-11-04.md",
|
||||
"2020-10-21.md",
|
||||
"2020-10-14.md",
|
||||
"2020-10-07.md",
|
||||
"2020-09-23.md",
|
||||
"2020-09-09.md",
|
||||
"2020-08-26.md",
|
||||
"2020-08-12.md",
|
||||
"2020-07-15.md",
|
||||
"2020-07-01.md",
|
||||
"2020-06-17.md",
|
||||
"2020-06-10.md",
|
||||
"2020-05-27.md",
|
||||
"2020-05-20.md",
|
||||
"2020-05-13.md",
|
||||
"2020-04-29.md",
|
||||
"2020-04-15.md",
|
||||
"2020-04-08.md",
|
||||
"2020-04-01.md",
|
||||
"2020-03-18.md",
|
||||
"2020-03-11.md",
|
||||
"2020-03-04.md",
|
||||
"2020-02-19.md",
|
||||
"2020-02-12.md",
|
||||
"2020-02-05.md",
|
||||
"2020-01-22.md",
|
||||
"2020-01-15.md",
|
||||
"2020-01-08.md",
|
||||
"2019-12-18.md",
|
||||
"2019-12-11.md",
|
||||
"2019-12-04.md",
|
||||
"2019-11-21.md",
|
||||
"2019-11-18.md",
|
||||
"2019-11-17.md",
|
||||
"2019-10-30.md",
|
||||
"2019-10-16.md",
|
||||
"2019-10-02.md",
|
||||
"2019-09-18.md",
|
||||
"2019-09-04.md",
|
||||
"2019-08-28.md",
|
||||
"2019-08-21.md",
|
||||
"2019-08-07.md",
|
||||
"2019-07-25.md",
|
||||
"2019-07-21.md",
|
||||
"2019-07-10.md",
|
||||
"2019-06-26.md",
|
||||
"2019-06-12.md",
|
||||
"2019-05-29.md",
|
||||
"2019-05-08.md",
|
||||
"2019-05-01.md",
|
||||
"2019-04-17.md",
|
||||
"2019-04-10.md",
|
||||
"2019-03-28.md",
|
||||
"2019-03-25.md",
|
||||
"2019-03-24.md",
|
||||
"2019-03-13.md",
|
||||
"2019-03-06.md",
|
||||
"2019-02-27.md",
|
||||
"2019-02-13.md",
|
||||
"2019-02-06.md",
|
||||
"2019-01-23.md",
|
||||
"2019-01-16.md",
|
||||
"2019-01-09.md",
|
||||
"2018-12-19.md",
|
||||
"2018-12-05.md",
|
||||
"2018-11-28.md",
|
||||
"2018-11-21.md",
|
||||
"2018-11-08.md",
|
||||
"2018-11-05.md",
|
||||
"2018-11-04.md",
|
||||
"2018-10-24.md",
|
||||
"2018-10-10.md",
|
||||
"2018-10-03.md",
|
||||
"2018-09-26.md",
|
||||
"2018-09-12.md",
|
||||
"2018-09-05.md",
|
||||
"2018-08-22.md",
|
||||
"2018-08-08.md",
|
||||
"2018-08-01.md",
|
||||
"2018-07-19.md",
|
||||
"2018-07-16.md",
|
||||
"2018-07-15.md",
|
||||
"2018-07-03.md",
|
||||
"2018-06-27.md",
|
||||
"2018-06-13.md",
|
||||
"2018-06-06.md",
|
||||
"2018-05-30.md",
|
||||
"2018-05-16.md",
|
||||
"2018-05-09.md",
|
||||
"2018-04-11.md",
|
||||
"2018-04-04.md",
|
||||
"2018-03-22.md",
|
||||
"2018-03-19.md",
|
||||
"2018-03-18.md",
|
||||
"2018-03-07.md",
|
||||
"2018-02-28.md",
|
||||
"2018-02-14.md",
|
||||
"2018-02-07.md",
|
||||
"2018-01-31.md",
|
||||
"2018-01-17.md",
|
||||
"2018-01-10.md",
|
||||
"2017-12-13.md",
|
||||
"2017-12-06.md",
|
||||
"2017-11-29.md",
|
||||
"2017-11-13.md",
|
||||
"2017-11-12.md",
|
||||
"2017-11-01.md",
|
||||
"2017-10-25.md",
|
||||
"2017-10-18.md",
|
||||
"2017-10-04.md",
|
||||
"2017-09-27.md",
|
||||
"2017-09-13.md",
|
||||
"2017-09-06.md",
|
||||
"2017-08-23.md",
|
||||
"2017-08-09.md",
|
||||
"2017-08-02.md",
|
||||
"2017-07-20.md",
|
||||
"2017-07-17.md",
|
||||
"2017-07-16.md",
|
||||
"2017-07-05.md",
|
||||
"2017-06-28.md",
|
||||
"2017-06-14.md",
|
||||
"2017-06-07.md",
|
||||
"2017-05-24.md",
|
||||
"2017-05-10.md",
|
||||
"2017-05-03.md",
|
||||
"2017-04-26.md",
|
||||
"2017-04-12.md",
|
||||
"2017-03-30.md",
|
||||
"2017-03-29.md",
|
||||
"2017-03-26.md",
|
||||
"2017-03-15.md",
|
||||
"2017-03-08.md",
|
||||
"2017-03-01.md",
|
||||
"2017-02-22.md",
|
||||
"2017-02-08.md",
|
||||
"2017-02-01.md",
|
||||
"2017-01-25.md",
|
||||
"2017-01-11.md",
|
||||
"2017-01-04.md",
|
||||
"2016-12-14.md",
|
||||
"2016-12-07.md",
|
||||
"2016-11-30.md",
|
||||
"2016-11-17.md",
|
||||
"2016-11-13.md",
|
||||
"2016-11-02.md",
|
||||
"2016-10-26.md",
|
||||
"2016-10-12.md",
|
||||
"2016-10-05.md",
|
||||
"2016-09-28.md",
|
||||
"2016-09-14.md",
|
||||
"2016-08-31.md",
|
||||
"2016-08-17.md",
|
||||
"2016-08-03.md",
|
||||
"2016-07-21.md",
|
||||
"2016-07-17.md",
|
||||
"2016-07-06.md",
|
||||
"2016-06-22.md",
|
||||
"2016-06-08.md",
|
||||
"2016-06-01.md",
|
||||
"2016-05-25.md",
|
||||
"2016-05-11.md",
|
||||
"2016-05-04.md",
|
||||
"2016-04-27.md",
|
||||
"2016-04-20.md",
|
||||
"2016-04-07.md",
|
||||
"2016-04-03.md",
|
||||
"2016-03-23.md",
|
||||
"2016-03-09.md",
|
||||
"2016-03-02.md",
|
||||
"2016-02-24.md",
|
||||
"2016-02-10.md",
|
||||
"2016-02-03.md",
|
||||
"2016-01-27.md",
|
||||
"2016-01-13.md",
|
||||
"2016-01-06.md",
|
||||
"2015-12-16.md",
|
||||
"2015-12-09.md",
|
||||
"2015-11-25.md",
|
||||
"2015-11-18.md",
|
||||
"2015-11-05.md",
|
||||
"2015-11-01.md",
|
||||
"2015-10-21.md",
|
||||
"2015-10-14.md",
|
||||
"2015-10-07.md",
|
||||
"2015-09-23.md",
|
||||
"2015-09-09.md",
|
||||
"2015-09-02.md",
|
||||
"2015-08-26.md",
|
||||
"2015-08-12.md",
|
||||
"2015-08-05.md",
|
||||
"2015-07-24.md",
|
||||
"2015-07-23.md",
|
||||
"2015-07-20.md",
|
||||
"2015-07-19.md",
|
||||
"2015-07-08.md",
|
||||
"2015-07-01.md",
|
||||
"2015-06-24.md",
|
||||
"2015-06-10.md",
|
||||
"2015-06-03.md",
|
||||
"2015-05-27.md",
|
||||
"2015-05-13.md",
|
||||
"2015-04-29.md",
|
||||
"2015-04-15.md",
|
||||
"2015-04-08.md",
|
||||
"2015-03-26.md",
|
||||
"2015-03-24.md",
|
||||
"2015-03-22.md",
|
||||
"2015-03-11.md",
|
||||
"2015-03-04.md",
|
||||
"2015-02-25.md",
|
||||
"2015-02-11.md",
|
||||
"2015-02-04.md",
|
||||
"2015-01-21.md",
|
||||
"2015-01-14.md",
|
||||
"2015-01-07.md",
|
||||
"2014-12-10.md",
|
||||
"2014-12-03.md",
|
||||
"2014-11-26.md",
|
||||
"2014-11-13.md",
|
||||
"2014-11-11.md",
|
||||
"2014-11-10.md",
|
||||
"2014-11-09.md",
|
||||
"2014-10-29.md",
|
||||
"2014-10-22.md",
|
||||
"2014-10-08.md",
|
||||
"2014-10-01.md",
|
||||
"2014-09-24.md",
|
||||
"2014-09-10.md",
|
||||
"2014-09-03.md",
|
||||
"2014-08-27.md",
|
||||
"2014-08-13.md",
|
||||
"2014-08-06.md",
|
||||
"2014-07-20.md",
|
||||
"2014-07-09.md",
|
||||
"2014-07-02.md",
|
||||
"2014-06-25.md",
|
||||
"2014-06-11.md",
|
||||
"2014-06-04.md",
|
||||
"2014-05-28.md",
|
||||
"2014-05-14.md",
|
||||
"2014-05-08.md",
|
||||
"2014-04-30.md",
|
||||
"2014-04-16.md",
|
||||
"2014-04-09.md",
|
||||
"2014-04-02.md",
|
||||
"2014-03-26.md",
|
||||
"2014-03-19.md",
|
||||
"2014-03-06.md",
|
||||
"2014-03-04.md",
|
||||
"2014-03-02.md",
|
||||
"2014-02-19.md",
|
||||
"2014-02-12.md",
|
||||
"2014-02-05.md",
|
||||
"2014-01-29.md",
|
||||
"2014-01-22.md",
|
||||
"2014-01-15.md",
|
||||
"2014-01-08.md",
|
||||
"2013-12-18.md",
|
||||
"2013-12-11.md",
|
||||
"2013-11-27.md",
|
||||
"2013-11-20.md",
|
||||
"2013-11-13.md",
|
||||
"2013-11-08.md",
|
||||
"2013-11-07.md",
|
||||
"2013-11-05.md",
|
||||
"2013-11-03.md",
|
||||
"2013-10-23.md",
|
||||
"2013-10-09.md",
|
||||
"2013-10-02.md",
|
||||
"2013-09-25.md",
|
||||
"2013-09-18.md",
|
||||
"2013-09-11.md",
|
||||
"2013-09-04.md",
|
||||
"2013-08-28.md",
|
||||
"2013-08-14.md",
|
||||
"2013-08-01.md",
|
||||
"2013-07-30.md",
|
||||
"2013-07-28.md",
|
||||
"2013-07-17.md",
|
||||
"2013-07-10.md",
|
||||
"2013-07-03.md",
|
||||
"2013-06-26.md",
|
||||
"2013-06-19.md",
|
||||
"2013-06-12.md",
|
||||
"2013-06-03.md",
|
||||
"2013-05-22.md",
|
||||
"2013-05-09.md",
|
||||
"2013-05-01.md",
|
||||
"2013-04-24.md",
|
||||
"2013-04-10.md",
|
||||
"2013-04-03.md",
|
||||
"2013-03-27.md",
|
||||
"2013-03-14.md",
|
||||
"2013-03-12.md",
|
||||
"2013-03-10.md",
|
||||
"2013-02-27.md",
|
||||
"2013-02-13.md",
|
||||
"2013-02-06.md",
|
||||
"2013-01-30.md",
|
||||
"2013-01-16.md",
|
||||
"2013-01-09.md",
|
||||
"2012-12-19.md",
|
||||
"2012-12-12.md",
|
||||
"2012-12-05.md",
|
||||
"2012-11-28.md",
|
||||
"2012-11-08.md",
|
||||
"2012-11-06.md",
|
||||
"2012-11-04.md",
|
||||
"2012-10-24.md",
|
||||
"2012-10-10.md",
|
||||
"2012-10-03.md",
|
||||
"2012-09-19.md",
|
||||
"2012-09-12.md",
|
||||
"2012-09-05.md",
|
||||
"2012-08-29.md",
|
||||
"2012-08-22.md",
|
||||
"2012-08-15.md",
|
||||
"2012-08-02.md",
|
||||
"2012-07-31.md",
|
||||
"2012-07-29.md",
|
||||
"2012-07-25.md",
|
||||
"2012-07-18.md",
|
||||
"2012-07-11.md",
|
||||
"2012-06-27.md",
|
||||
"2012-06-13.md",
|
||||
"2012-06-06.md",
|
||||
"2012-05-30.md",
|
||||
"2012-05-23.md",
|
||||
"2012-05-16.md",
|
||||
"2012-05-10.md",
|
||||
"2012-05-02.md",
|
||||
"2012-04-25.md",
|
||||
"2012-04-18.md",
|
||||
"2012-04-11.md",
|
||||
"2012-03-29.md",
|
||||
"2012-03-27.md",
|
||||
"2012-03-25.md",
|
||||
"2012-03-14.md",
|
||||
"2012-03-07.md",
|
||||
"2012-02-29.md",
|
||||
"2012-02-22.md",
|
||||
"2012-02-08.md",
|
||||
"2012-01-25.md",
|
||||
"2012-01-18.md",
|
||||
"2012-01-11.md",
|
||||
"2012-01-04.md",
|
||||
"2011-12-21.md",
|
||||
"2011-12-14.md",
|
||||
"2011-12-07.md",
|
||||
"2011-11-30.md",
|
||||
"2011-11-17.md",
|
||||
"2011-11-15.md",
|
||||
"2011-11-13.md",
|
||||
"2011-11-02.md",
|
||||
"2011-10-26.md",
|
||||
"2011-10-12.md",
|
||||
"2011-10-05.md",
|
||||
"2011-09-28.md",
|
||||
"2011-09-21.md",
|
||||
"2011-09-14.md",
|
||||
"2011-09-07.md",
|
||||
"2011-08-24.md",
|
||||
"2011-08-10.md",
|
||||
"2011-07-28.md",
|
||||
"2011-07-26.md",
|
||||
"2011-07-24.md",
|
||||
"2011-07-13.md",
|
||||
"2011-07-06.md",
|
||||
"2011-06-29.md",
|
||||
"2011-06-22.md",
|
||||
"2011-06-15.md",
|
||||
"2011-06-08.md",
|
||||
"2011-06-01.md",
|
||||
"2011-05-25.md",
|
||||
"2011-05-12.md",
|
||||
"2011-05-04.md",
|
||||
"2011-04-27.md",
|
||||
"2011-04-13.md",
|
||||
"2011-04-06.md",
|
||||
"2011-03-29.md",
|
||||
"2011-03-09.md",
|
||||
"2011-03-02.md",
|
||||
"2011-02-23.md",
|
||||
"2011-02-09.md",
|
||||
"2011-02-02.md",
|
||||
"2011-02-01.md",
|
||||
"2011-01-26.md",
|
||||
"2011-01-19.md",
|
||||
"2011-01-12.md",
|
||||
"2011-01-05.md",
|
||||
"2010-12-22.md",
|
||||
"2010-12-01.md",
|
||||
"2010-11-24.md",
|
||||
"2010-10-27.md",
|
||||
"2010-10-13.md",
|
||||
"2010-09-29.md",
|
||||
"2010-09-22.md",
|
||||
"2010-09-16.md",
|
||||
"2010-09-08.md",
|
||||
"2010-09-01.md",
|
||||
"2010-08-25.md",
|
||||
"2010-08-11.md",
|
||||
"2010-07-14.md",
|
||||
"2010-07-07.md",
|
||||
"2010-06-23.md",
|
||||
"2010-06-02.md",
|
||||
"2010-05-12.md",
|
||||
"2010-04-28.md",
|
||||
"2010-04-14.md",
|
||||
"2010-04-07.md",
|
||||
"2010-03-10.md",
|
||||
"2010-03-03.md",
|
||||
"2010-02-24.md",
|
||||
"2010-02-10.md",
|
||||
"2010-02-03.md",
|
||||
"2010-02-01.md",
|
||||
"2010-01-27.md",
|
||||
"2010-01-20.md",
|
||||
"2010-01-13.md",
|
||||
"2010-01-07.md",
|
||||
"2010-01-06.md",
|
||||
"2009-12-09.md",
|
||||
"2009-12-02.md",
|
||||
"2009-11-25.md",
|
||||
"2009-11-04.md",
|
||||
"2009-10-28.md",
|
||||
"2009-10-21.md",
|
||||
"2009-10-14.md",
|
||||
"2009-10-07.md",
|
||||
"2009-09-25.md",
|
||||
"2009-09-23.md",
|
||||
"2009-09-09.md",
|
||||
"2009-09-02.md",
|
||||
"2009-08-12.md",
|
||||
"2009-07-01.md",
|
||||
"2009-06-24.md",
|
||||
"2009-06-10.md",
|
||||
"2009-06-03.md",
|
||||
"2009-05-27.md",
|
||||
"2009-05-13.md",
|
||||
"2009-04-08.md",
|
||||
"2009-04-01.md",
|
||||
"2009-03-18.md",
|
||||
"2009-03-04.md",
|
||||
"2009-02-25.md",
|
||||
"2009-02-18.md",
|
||||
"2009-02-05.md",
|
||||
"2009-02-04.md",
|
||||
"2009-01-28.md",
|
||||
"2009-01-21.md",
|
||||
"2009-01-14.md",
|
||||
"2009-01-07.md",
|
||||
"2008-12-17.md",
|
||||
"2008-12-03.md",
|
||||
"2008-11-05.md",
|
||||
"2008-10-15.md",
|
||||
"2008-10-08.md",
|
||||
"2008-10-03.md",
|
||||
"2008-10-01.md",
|
||||
"2008-09-24.md",
|
||||
"2008-09-17.md",
|
||||
"2008-09-03.md",
|
||||
"2008-08-27.md",
|
||||
"2008-08-20.md",
|
||||
"2008-08-13.md",
|
||||
"2008-08-06.md",
|
||||
"2008-07-23.md",
|
||||
"2008-07-16.md",
|
||||
"2008-07-02.md",
|
||||
"2008-06-25.md",
|
||||
"2008-06-18.md",
|
||||
"2008-06-12.md",
|
||||
"2008-06-04.md",
|
||||
"2008-05-28.md",
|
||||
"2008-05-21.md",
|
||||
"2008-05-07.md",
|
||||
"2008-04-16.md",
|
||||
"2008-04-02.md",
|
||||
"2008-03-26.md",
|
||||
"2008-02-20.md",
|
||||
"2008-02-13.md",
|
||||
"2008-02-06.md",
|
||||
"2008-01-30.md",
|
||||
"2008-01-16.md",
|
||||
"2008-01-09.md",
|
||||
"2007-12-19.md",
|
||||
"2007-11-21.md",
|
||||
"2007-11-07.md",
|
||||
"2007-10-17.md",
|
||||
"2007-10-03.md",
|
||||
"2007-09-19.md",
|
||||
"2007-09-05.md",
|
||||
"2007-08-15.md",
|
||||
"2007-07-26.md",
|
||||
"2007-07-24.md",
|
||||
"2007-07-11.md",
|
||||
"2007-06-20.md",
|
||||
"2007-06-06.md",
|
||||
"2007-05-16.md",
|
||||
"2007-05-02.md",
|
||||
"2007-04-18.md",
|
||||
"2007-04-04.md",
|
||||
"2007-03-18.md",
|
||||
"2007-03-07.md",
|
||||
"2007-02-21.md",
|
||||
"2007-02-07.md",
|
||||
"2007-01-24.md",
|
||||
"2007-01-10.md",
|
||||
"2006-12-20.md",
|
||||
"2006-12-06.md",
|
||||
"2006-11-22.md",
|
||||
"2006-11-05.md",
|
||||
"2006-11-01.md",
|
||||
"2006-10-25.md",
|
||||
"2006-10-04.md",
|
||||
"2006-09-20.md",
|
||||
"2006-09-06.md",
|
||||
"2006-08-30.md",
|
||||
"2006-08-02.md",
|
||||
"2006-07-09.md",
|
||||
"2006-07-05.md",
|
||||
"2006-06-21.md",
|
||||
"2006-06-07.md",
|
||||
"2006-05-17.md",
|
||||
"2006-05-03.md",
|
||||
"2006-04-17.md",
|
||||
"2006-04-05.md",
|
||||
"2006-03-19.md",
|
||||
"2006-03-15.md",
|
||||
"2006-02-15.md",
|
||||
"2006-02-01.md",
|
||||
"2006-01-18.md",
|
||||
"2006-01-04.md",
|
||||
"2005-12-21.md",
|
||||
"2005-12-07.md",
|
||||
"2005-11-10.md",
|
||||
"2005-11-02.md",
|
||||
"2005-10-12.md",
|
||||
"2005-09-14.md",
|
||||
"2005-08-02.md",
|
||||
"2005-07-13.md",
|
||||
"2005-06-10.md",
|
||||
"2005-05-11.md",
|
||||
"2005-04-13.md",
|
||||
"2005-03-07.md",
|
||||
"2005-03-01.md",
|
||||
"2005-02-08.md",
|
||||
"2005-01-11.md",
|
||||
"2004-12-14.md",
|
||||
"2004-11-07.md",
|
||||
"2004-10-12.md",
|
||||
"2004-09-14.md",
|
||||
"2004-08-03.md",
|
||||
"2004-07-13.md",
|
||||
"2004-06-08.md",
|
||||
"2004-05-11.md",
|
||||
"2004-04-13.md",
|
||||
"2004-03-02.md",
|
||||
"2004-02-10.md",
|
||||
"2004-01-13.md",
|
||||
"2003-12-09.md",
|
||||
"2003-11-09.md",
|
||||
"2003-11-04.md",
|
||||
"2003-10-14.md",
|
||||
"2003-09-09.md",
|
||||
"2003-08-12.md",
|
||||
"2003-07-17.md",
|
||||
"2003-07-08.md",
|
||||
"2003-06-10.md",
|
||||
"2003-05-13.md",
|
||||
"2003-04-08.md",
|
||||
"2003-03-18.md",
|
||||
"2003-03-11.md",
|
||||
"2003-02-11.md",
|
||||
"2003-01-14.md",
|
||||
"2002-12-10.md",
|
||||
"2002-11-17.md",
|
||||
"2002-10-08.md",
|
||||
"2002-09-10.md",
|
||||
"2002-08-13.md",
|
||||
"2002-07-16.md",
|
||||
"2002-06-11.md",
|
||||
"2002-05-14.md",
|
||||
"2002-04-09.md",
|
||||
"2002-03-19.md",
|
||||
"2002-03-12.md",
|
||||
"2002-02-15.md",
|
||||
"2002-02-12.md",
|
||||
"2002-01-08.md",
|
||||
"2001-12-11.md",
|
||||
"2001-11-20.md",
|
||||
"2001-10-09.md",
|
||||
"2001-09-24.md",
|
||||
"2001-09-11.pdf",
|
||||
"2001-09-11.md",
|
||||
"2001-08-07.md",
|
||||
"2001-07-10.md",
|
||||
"2001-06-12.md",
|
||||
"2001-05-08.md",
|
||||
"2001-04-10.md",
|
||||
"2001-03-20.md",
|
||||
"2001-02-13.md",
|
||||
"2001-01-09.md",
|
||||
"2000-12-12.md",
|
||||
"2000-11-13.md",
|
||||
"2000-10-16.md",
|
||||
"2000-09-11.md",
|
||||
"2000-08-14.md",
|
||||
"2000-08-01.md",
|
||||
"2000-07-10.md",
|
||||
"2000-06-12.md",
|
||||
"2000-05-08.md",
|
||||
"2000-04-10.md",
|
||||
"2000-03-26.md",
|
||||
"2000-02-14.md",
|
||||
"2000-01-10.md",
|
||||
"1999-12-14.md",
|
||||
"1999-11-09.md",
|
||||
"1999-10-19.md",
|
||||
"1999-09-14.md",
|
||||
"1999-08-10.md",
|
||||
"1999-07-11.md",
|
||||
"1999-06-15.md",
|
||||
"1999-05-11.md",
|
||||
"1999-04-13.md",
|
||||
"1999-03-16.md",
|
||||
"1999-02-09.md",
|
||||
"1999-01-12.md",
|
||||
"1998-12-08.md",
|
||||
"1998-11-10.md",
|
||||
"1998-10-13.md",
|
||||
"1998-09-15.md",
|
||||
"1998-08-23.md",
|
||||
"1998-08-04.md",
|
||||
"1998-07-14.md",
|
||||
"1998-06-09.md",
|
||||
"1998-05-12.md",
|
||||
"1998-04-02.md",
|
||||
"1998-03-31.pdf",
|
||||
"1998-03-31.md",
|
||||
"1998-03-10.md",
|
||||
"1998-02-10.md",
|
||||
"1998-01-20.md",
|
||||
"1997-12-10.md",
|
||||
"1997-12-09.md",
|
||||
"1997-11-11.md",
|
||||
"1997-10-14.md",
|
||||
"1997-09-09.md",
|
||||
"1997-08-13.md",
|
||||
"1997-08-12.md",
|
||||
"1997-07-15.md",
|
||||
"1997-06-17.md",
|
||||
"1997-04-09.md",
|
||||
"1997-04-08.md",
|
||||
"1997-03-11.md",
|
||||
"1997-01-14.md",
|
||||
"1996-12-10.md",
|
||||
"1996-11-12.md",
|
||||
"1996-10-08.md",
|
||||
"1996-09-12.md",
|
||||
"1996-08-13.md",
|
||||
"1996-07-09.md",
|
||||
"1996-06-26.md",
|
||||
"1996-06-11.md",
|
||||
"1996-05-14.md",
|
||||
"1996-04-09.md",
|
||||
"1996-03-06.md",
|
||||
"1996-03-05.md",
|
||||
"1996-02-13.md",
|
||||
"1996-01-09.md",
|
||||
"1995-12-03.md",
|
||||
"1995-11-14.md",
|
||||
"1995-10-10.md",
|
||||
"1995-09-12.md",
|
||||
"1995-08-08.md",
|
||||
"1995-07-19.md",
|
||||
"1995-06-29.md",
|
||||
"1995-06-07.md",
|
||||
"1995-05-10.md",
|
||||
"1995-04-19.md",
|
||||
"1995-04-05.md",
|
||||
"1995-04-02.md",
|
||||
"1995-03-22.md",
|
||||
"1995-02-28.md",
|
||||
"1995-02-07.md",
|
||||
"1995-01-10.md",
|
||||
"1994-12-09.md",
|
||||
"1994-12-07.md",
|
||||
"1994-11-09.md",
|
||||
"1994-10-13.md",
|
||||
"1994-09-23.md",
|
||||
"1994-07-27.md",
|
||||
"1994-07-05.md",
|
||||
"1994-05-24.md",
|
||||
"1994-04-29.md",
|
||||
"1994-03-30.md",
|
||||
"1993-07-13.md",
|
||||
"1993-03-30.md",
|
||||
"1992-10-29.md",
|
||||
"1992-07-17.md",
|
||||
"1992-06-18.md",
|
||||
"1992-01-07.md",
|
||||
"1991-11-19.md",
|
||||
"1991-10-10.md",
|
||||
"1991-06-14.md",
|
||||
"1991-01-08.md",
|
||||
"1990-10-11.md",
|
||||
"1990-06-28.md",
|
||||
"1990-04-26.md",
|
||||
"1990-01-03.md",
|
||||
"1988-07-12.md",
|
||||
"1988-03-21.md",
|
||||
]
|
||||
|
||||
nametimes_by_year = defaultdict(list)
|
||||
for name in sorted(scraped_basenames):
|
||||
date, ext = name.split(".")
|
||||
year, month, day = map(int, date.split("-"))
|
||||
start_hour, start_minute, duration = get_time(name)
|
||||
nametimes_by_year[year].append(
|
||||
(month, day, ext, start_hour, start_minute, duration)
|
||||
)
|
||||
return nametimes_by_year
|
|
@ -1254,7 +1254,9 @@ class Session(models.Model):
|
|||
return Constraint.objects.filter(target=self.group, meeting=self.meeting).order_by('name__name')
|
||||
|
||||
def official_timeslotassignment(self):
|
||||
return self.timeslotassignments.filter(schedule__in=[self.meeting.schedule, self.meeting.schedule.base if self.meeting.schedule else None]).first()
|
||||
if not hasattr(self, "_cache_official_timeslotassignment"):
|
||||
self._cache_official_timeslotassignment = self.timeslotassignments.filter(schedule__in=[self.meeting.schedule, self.meeting.schedule.base if self.meeting.schedule else None]).first()
|
||||
return self._cache_official_timeslotassignment
|
||||
|
||||
@property
|
||||
def people_constraints(self):
|
||||
|
@ -1317,8 +1319,11 @@ class Session(models.Model):
|
|||
def notes_url(self):
|
||||
return urljoin(settings.IETF_NOTES_URL, self.notes_id())
|
||||
|
||||
|
||||
def group_at_the_time(self):
|
||||
return self.meeting.group_at_the_time(self.group)
|
||||
if not hasattr(self,"_cached_group_at_the_time"):
|
||||
self._cached_group_at_the_time = self.meeting.group_at_the_time(self.group)
|
||||
return self._cached_group_at_the_time
|
||||
|
||||
def group_parent_at_the_time(self):
|
||||
if self.group_at_the_time().parent:
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if s.name %}{{ s.name }}{% endif %}
|
||||
{% if s.current_status == "sched" %}
|
||||
{{ s.time|date:"Y-m-d" }}
|
||||
{% else %}
|
||||
|
@ -26,6 +25,9 @@
|
|||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if s.name %}{{ s.name }}{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if s.current_status == "sched" %}{{ s.time|date:"D" }}{% endif %}
|
||||
</td>
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
<th scope="col" data-sort="meeting">Meeting</th>
|
||||
<th scope="col" data-sort="date">Date</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col">Materials</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -53,6 +54,7 @@
|
|||
<th scope="col" data-sort="meeting">Meeting</th>
|
||||
<th scope="col" data-sort="date">Date</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col">Materials</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -64,13 +66,14 @@
|
|||
</table>
|
||||
{% endif %}
|
||||
{% if past or recent %}
|
||||
<h2 class="mt-3" id="pastmeets">Past Meetings</h2>
|
||||
<h2 class="mt-3" id="pastmeets">Past Meetings (within the last four years)</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" data-sort="meeting">Meeting</th>
|
||||
<th scope="col" data-sort="date">Date</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col">Materials</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -84,8 +87,72 @@
|
|||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
<p class="alert alert-info my-3">
|
||||
This page shows meetings within the last four years. For earlier meetings, please see the
|
||||
<a href="https://www.ietf.org/how/meetings/past/">proceedings</a>.
|
||||
</p>
|
||||
{# The following is a temporary performance workaround, not long term design #}
|
||||
{% if group.acronym != "iab" %}
|
||||
<p class="alert alert-info my-3">
|
||||
This page shows meetings within the last four years. For earlier meetings, please see the
|
||||
<a href="https://www.ietf.org/how/meetings/past/">proceedings</a>.
|
||||
</p>
|
||||
{% else %}
|
||||
{% comment %}
|
||||
Note: This block is only capable of correctly processing interim sessions.
|
||||
If the view starts sending other types of meetings with a non-empty
|
||||
older_sessions value, this block will need to be adjusted.
|
||||
{% endcomment %}
|
||||
{% if far_past %}
|
||||
<h2 class="mt-3" id="farpastmeets">Meetings more than four years ago</h2>
|
||||
<table class="table table-sm table-striped tablesorter">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" data-sort="meeting">Meeting</th>
|
||||
<th scope="col" data-sort="date">Date</th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col">Materials</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for s in far_past %}
|
||||
<tr>
|
||||
<td>
|
||||
{% if s.meeting.type.slug == 'ietf' %}
|
||||
IETF {{ s.meeting.number }}
|
||||
{% else %}
|
||||
{{ s.meeting.number }}
|
||||
{% endif %} </td>
|
||||
<td>
|
||||
{% if s.current_status == "sched" %}
|
||||
{{ s.time|date:"Y-m-d" }}
|
||||
{% else %}
|
||||
<i>{{ s.current_status_name }}</i>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if s.name %}{{ s.name }}{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if s.current_status == "sched" %}{{ s.time|date:"D" }}{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if not s.canceled %}
|
||||
<a class="btn btn-sm {% if not s.minutes %}btn-secondary disabled{% else %}btn-primary{% endif %}"
|
||||
{% if s.minutes %}href="{{ s.minutes.get_absolute_url }}"{% endif %}>
|
||||
Minutes
|
||||
</a>
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'ietf.meeting.views.session_details' num=s.meeting.number acronym=s.group.acronym %}">
|
||||
{% if can_always_edit or can_edit_materials %}
|
||||
<i class="bi bi-pencil-square">
|
||||
</i>
|
||||
{% endif %}
|
||||
Materials
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -91,7 +91,7 @@ def require_api_key(f):
|
|||
|
||||
|
||||
def _memoize(func, self, *args, **kwargs):
|
||||
''''Memoize wrapper for instance methouds. Use @lru_cache for functions.'''
|
||||
'''Memoize wrapper for instance methods. Use @lru_cache for functions.'''
|
||||
if kwargs: # frozenset is used to ensure hashability
|
||||
key = args, frozenset(list(kwargs.items()))
|
||||
else:
|
||||
|
|
Loading…
Reference in a new issue