save agenda as a Document object

- Legacy-Id: 11131
This commit is contained in:
Ryan Cross 2016-04-26 00:16:32 +00:00
parent ba75fad3b5
commit 21d3ede5bc
4 changed files with 52 additions and 8 deletions
ietf

View file

@ -3,12 +3,14 @@
import textwrap
import re
import datetime
import os
import types
from email.utils import parseaddr
import debug # pyflakes:ignore
from ietf.doc.models import ConsensusDocEvent
from ietf.doc.utils import get_document_content
from django import template
from django.conf import settings
from django.utils.html import escape, fix_ampersands
@ -590,3 +592,19 @@ def urlize_html(html, autoescape=False):
def emailwrap(email):
email = str(email)
return mark_safe(email.replace('@', '<wbr>@'))
@register.filter
def document_content(doc):
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
return get_document_content(doc.name,path,markup=False)
@register.filter
def session_start_time(session):
timeslot = session.official_timeslotassignment().timeslot
return timeslot.time
@register.filter
def session_end_time(session):
timeslot = session.official_timeslotassignment().timeslot
return timeslot.time + timeslot.duration

View file

@ -1,4 +1,5 @@
import datetime
import os
import re
from django import forms
@ -7,11 +8,13 @@ from django.forms.fields import Field
from django.utils.encoding import force_text
from django.utils import six
from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocEvent
from ietf.group.models import Group
from ietf.ietfauth.utils import has_role
from ietf.meeting.models import Session, countries, timezones
from ietf.meeting.helpers import assign_interim_session
from ietf.message.models import Message
from ietf.secr.utils.meeting import get_upload_root
from ietf.utils.fields import DatepickerDateField
# need to insert empty option for use in ChoiceField
@ -189,7 +192,7 @@ class InterimSessionForm(forms.Form):
super(InterimSessionForm, self).__init__(*args, **kwargs)
self.fields['timezone'].initial = 'UTC'
def _save_agenda(self, text):
def _save_agenda(self, session):
pass
def save(self, request, group, meeting, is_approved):
@ -216,7 +219,26 @@ class InterimSessionForm(forms.Form):
assign_interim_session(session,time)
if agenda:
self._save_agenda(agenda)
# create objects
filename = 'agenda-interim-%s-%s' % (group.acronym,time.strftime("%Y-%m-%d-%H%M"))
doc = Document.objects.create(type_id='agenda',group=group,name=filename,rev='00')
doc.set_state(State.objects.get(type=doc.type,slug='active'))
DocAlias.objects.create(name=doc.name, document=doc)
session.sessionpresentation_set.create(document=doc,rev=doc.rev)
NewRevisionDocEvent.objects.create(type='new_revision',
by=request.user.person,
doc=doc,
rev=doc.rev,
desc='New revision available')
# write file
path = os.path.join(get_upload_root(meeting),'agenda',doc.filename_with_rev())
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
with open(path, "w") as file:
file.write(agenda)
return session
class InterimAnnounceForm(forms.ModelForm):

View file

@ -510,8 +510,13 @@ class InterimTests(TestCase):
timeslot = session.official_timeslotassignment().timeslot
self.assertEqual(timeslot.time,dt)
self.assertEqual(timeslot.duration,duration)
# ensure agenda document was created
self.assertEqual(session.materials.count(),1)
doc = session.materials.first()
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
self.assertTrue(os.path.exists(path))
def test_interim_request_single_f2f(self):
def test_interim_request_single_in_person(self):
make_meeting_test_data()
group = Group.objects.get(acronym='mars')
date = datetime.date.today() + datetime.timedelta(days=30)

View file

@ -1,11 +1,10 @@
The {{ group.name }} ({{ group.acronym }}) Working Group will hold a
virtual interim meeting on {{ meeting.date }} from {{ start }} to
{{ end }} UTC.
{% load ietf_filters %}The {{ group.name }} ({{ group.acronym }}) Working Group will hold a
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.
Agenda:
[AGENDA]
{{ meeting.session_set.first.agenda | document_content }}
To join the interim meeting:
{{ meeting.session_set.all.0.remote_instructions }}
{{ meeting.session_set.first.remote_instructions }}
[ADDITIONAL INFORMATION]