Skip to content

Commit 21d3ede

Browse files
committed
save agenda as a Document object
- Legacy-Id: 11131
1 parent ba75fad commit 21d3ede

4 files changed

Lines changed: 52 additions & 8 deletions

File tree

ietf/doc/templatetags/ietf_filters.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import textwrap
44
import re
55
import datetime
6+
import os
67
import types
78
from email.utils import parseaddr
89

910
import debug # pyflakes:ignore
1011

1112
from ietf.doc.models import ConsensusDocEvent
13+
from ietf.doc.utils import get_document_content
1214
from django import template
1315
from django.conf import settings
1416
from django.utils.html import escape, fix_ampersands
@@ -590,3 +592,19 @@ def urlize_html(html, autoescape=False):
590592
def emailwrap(email):
591593
email = str(email)
592594
return mark_safe(email.replace('@', '<wbr>@'))
595+
596+
@register.filter
597+
def document_content(doc):
598+
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
599+
return get_document_content(doc.name,path,markup=False)
600+
601+
@register.filter
602+
def session_start_time(session):
603+
timeslot = session.official_timeslotassignment().timeslot
604+
return timeslot.time
605+
606+
@register.filter
607+
def session_end_time(session):
608+
timeslot = session.official_timeslotassignment().timeslot
609+
return timeslot.time + timeslot.duration
610+

ietf/meeting/forms.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import datetime
2+
import os
23
import re
34

45
from django import forms
@@ -7,11 +8,13 @@
78
from django.utils.encoding import force_text
89
from django.utils import six
910

11+
from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocEvent
1012
from ietf.group.models import Group
1113
from ietf.ietfauth.utils import has_role
1214
from ietf.meeting.models import Session, countries, timezones
1315
from ietf.meeting.helpers import assign_interim_session
1416
from ietf.message.models import Message
17+
from ietf.secr.utils.meeting import get_upload_root
1518
from ietf.utils.fields import DatepickerDateField
1619

1720
# need to insert empty option for use in ChoiceField
@@ -189,7 +192,7 @@ def __init__(self, *args, **kwargs):
189192
super(InterimSessionForm, self).__init__(*args, **kwargs)
190193
self.fields['timezone'].initial = 'UTC'
191194

192-
def _save_agenda(self, text):
195+
def _save_agenda(self, session):
193196
pass
194197

195198
def save(self, request, group, meeting, is_approved):
@@ -216,7 +219,26 @@ def save(self, request, group, meeting, is_approved):
216219
assign_interim_session(session,time)
217220

218221
if agenda:
219-
self._save_agenda(agenda)
222+
# create objects
223+
filename = 'agenda-interim-%s-%s' % (group.acronym,time.strftime("%Y-%m-%d-%H%M"))
224+
doc = Document.objects.create(type_id='agenda',group=group,name=filename,rev='00')
225+
doc.set_state(State.objects.get(type=doc.type,slug='active'))
226+
DocAlias.objects.create(name=doc.name, document=doc)
227+
session.sessionpresentation_set.create(document=doc,rev=doc.rev)
228+
NewRevisionDocEvent.objects.create(type='new_revision',
229+
by=request.user.person,
230+
doc=doc,
231+
rev=doc.rev,
232+
desc='New revision available')
233+
# write file
234+
path = os.path.join(get_upload_root(meeting),'agenda',doc.filename_with_rev())
235+
directory = os.path.dirname(path)
236+
if not os.path.exists(directory):
237+
os.makedirs(directory)
238+
with open(path, "w") as file:
239+
file.write(agenda)
240+
241+
return session
220242

221243
class InterimAnnounceForm(forms.ModelForm):
222244

ietf/meeting/tests_views.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,8 +510,13 @@ def test_interim_request_single(self):
510510
timeslot = session.official_timeslotassignment().timeslot
511511
self.assertEqual(timeslot.time,dt)
512512
self.assertEqual(timeslot.duration,duration)
513+
# ensure agenda document was created
514+
self.assertEqual(session.materials.count(),1)
515+
doc = session.materials.first()
516+
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
517+
self.assertTrue(os.path.exists(path))
513518

514-
def test_interim_request_single_f2f(self):
519+
def test_interim_request_single_in_person(self):
515520
make_meeting_test_data()
516521
group = Group.objects.get(acronym='mars')
517522
date = datetime.date.today() + datetime.timedelta(days=30)
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
The {{ group.name }} ({{ group.acronym }}) Working Group will hold a
2-
virtual interim meeting on {{ meeting.date }} from {{ start }} to
3-
{{ end }} UTC.
1+
{% load ietf_filters %}The {{ group.name }} ({{ group.acronym }}) Working Group will hold a
2+
virtual interim meeting on {{ meeting.date }} from {{ meeting.session_set.first | session_start_time | date:"H:i" }} to {{ meeting.session_set.first | session_end_time | date:"H:i" }} UTC.
43

54
Agenda:
6-
[AGENDA]
5+
{{ meeting.session_set.first.agenda | document_content }}
76

87
To join the interim meeting:
9-
{{ meeting.session_set.all.0.remote_instructions }}
8+
{{ meeting.session_set.first.remote_instructions }}
109

1110
[ADDITIONAL INFORMATION]

0 commit comments

Comments
 (0)