save agenda as a Document object
- Legacy-Id: 11131
This commit is contained in:
parent
ba75fad3b5
commit
21d3ede5bc
ietf
doc/templatetags
meeting
templates/meeting
|
@ -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
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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]
|
Loading…
Reference in a new issue