refactor code dealing with interim materials path

- Legacy-Id: 11229
This commit is contained in:
Ryan Cross 2016-05-23 22:58:45 +00:00
parent 81fe596c95
commit c8f3760dbe
11 changed files with 25 additions and 48 deletions

View file

@ -120,7 +120,7 @@ class DocumentInfo(models.Model):
meeting = None
if meeting_related:
meeting = self.name.split("-")[1]
meeting = self.session_set.first().meeting
return format.format(doc=self,meeting=meeting)

View file

@ -17,7 +17,6 @@ from ietf.meeting.helpers import get_next_interim_number
from ietf.meeting.helpers import is_meeting_approved, get_next_agenda_name
from ietf.message.models import Message
from ietf.person.models import Person
from ietf.secr.utils.meeting import get_upload_root
from ietf.utils.fields import DatepickerDateField
# need to insert empty option for use in ChoiceField
@ -288,7 +287,8 @@ class InterimSessionModelForm(forms.ModelForm):
type_id='agenda',
group=self.group,
name=filename,
rev='00')
rev='00',
external_url='{}-00.txt'.format(filename))
doc.set_state(State.objects.get(type=doc.type, slug='active'))
DocAlias.objects.create(name=doc.name, document=doc)
self.instance.sessionpresentation_set.create(document=doc, rev=doc.rev)
@ -299,7 +299,7 @@ class InterimSessionModelForm(forms.ModelForm):
rev=doc.rev,
desc='New revision available')
# write file
path = os.path.join(get_upload_root(self.instance.meeting), 'agenda', doc.filename_with_rev())
path = os.path.join(self.instance.meeting.get_materials_path(), 'agenda', doc.filename_with_rev())
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)

View file

@ -142,17 +142,7 @@ class Meeting(models.Model):
return date + datetime.timedelta(days=-date.weekday(), weeks=1)
def get_materials_path(self):
path = ''
if self.type_id == 'ietf':
path = os.path.join(settings.AGENDA_PATH,self.number)
elif self.type_id == 'interim':
path = os.path.join(settings.AGENDA_PATH,
'interim',
self.date.strftime('%Y'),
self.date.strftime('%m'),
self.date.strftime('%d'),
self.session_set.all()[0].group.acronym)
return path
return os.path.join(settings.AGENDA_PATH,self.number)
# the various dates are currently computed
def get_submission_start_date(self):

View file

@ -1092,7 +1092,8 @@ def interim_request_cancel(request, number):
form = InterimCancelForm(initial={'group': group.acronym, 'date': meeting.date})
return render(request, "meeting/interim_request_cancel.html", {
"form": form})
"form": form,
"meeting": meeting})
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair',

View file

@ -4,7 +4,6 @@ from django.conf import settings
from django.db import models
from ietf.meeting.models import Meeting
from ietf.secr.utils.meeting import get_upload_root
class InterimManager(models.Manager):
@ -43,8 +42,7 @@ class InterimMeeting(Meeting):
return None
def get_proceedings_path(self, group=None):
path = os.path.join(get_upload_root(self),'proceedings.html')
return path
return os.path.join(self.get_materials_path(),'proceedings.html')
def get_proceedings_url(self, group=None):
'''

View file

@ -23,7 +23,7 @@ from ietf.secr.proceedings.models import InterimMeeting # proxy model
from ietf.secr.proceedings.models import Registration
from ietf.secr.utils.document import get_rfc_num
from ietf.secr.utils.group import groups_by_session
from ietf.secr.utils.meeting import get_upload_root, get_proceedings_path, get_materials, get_session
from ietf.secr.utils.meeting import get_proceedings_path, get_materials, get_session
# -------------------------------------------------
@ -264,7 +264,7 @@ def create_proceedings(meeting, group, is_final=False):
docs = Document.objects.filter(group=group,type='draft').order_by('time')
meeting_root = get_upload_root(meeting)
meeting_root = meeting.get_materials_path()
if meeting.type.slug == 'ietf':
url_root = "%sproceedings/%s/" % (settings.MEDIA_URL,meeting.number)
else:

View file

@ -22,7 +22,7 @@ from ietf.secr.sreq.forms import GroupSelectForm
from ietf.secr.utils.decorators import check_permissions, sec_only
from ietf.secr.utils.document import get_full_path
from ietf.secr.utils.group import get_my_groups, groups_by_session
from ietf.secr.utils.meeting import get_upload_root, get_materials, get_timeslot, get_proceedings_path, get_proceedings_url
from ietf.secr.utils.meeting import get_materials, get_timeslot, get_proceedings_path, get_proceedings_url
from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocEvent
from ietf.group.models import Group
from ietf.ietfauth.utils import has_role, role_required
@ -68,9 +68,9 @@ def get_doc_filename(doc):
session = doc.session_set.all()[0]
meeting = session.meeting
if doc.external_url:
return os.path.join(get_upload_root(meeting),doc.type.slug,doc.external_url)
return os.path.join(meeting.get_materials_path(),doc.type.slug,doc.external_url)
else:
path = os.path.join(get_upload_root(meeting),doc.type.slug,doc.name)
path = os.path.join(meeting.get_materials_path(),doc.type.slug,doc.name)
files = glob.glob(path + '.*')
# TODO we might want to choose from among multiple files using some logic
return files[0]
@ -156,18 +156,18 @@ def get_next_order_num(session):
def handle_upload_file(file,filename,meeting,subdir):
'''
This function takes a file object, a filename and a meeting object and subdir as string.
It saves the file to the appropriate directory, get_upload_root() + subdir.
It saves the file to the appropriate directory, get_materials_path() + subdir.
If the file is a zip file, it creates a new directory in 'slides', which is the basename of the
zip file and unzips the file in the new directory.
'''
base, extension = os.path.splitext(filename)
if extension == '.zip':
path = os.path.join(get_upload_root(meeting),subdir,base)
path = os.path.join(meeting.get_materials_path(),subdir,base)
if not os.path.exists(path):
os.mkdir(path)
else:
path = os.path.join(get_upload_root(meeting),subdir)
path = os.path.join(meeting.get_materials_path(),subdir)
if not os.path.exists(path):
os.makedirs(path)
@ -191,7 +191,7 @@ def make_directories(meeting):
'''
This function takes a meeting object and creates the appropriate materials directories
'''
path = get_upload_root(meeting)
path = meeting.get_materials_path()
os.umask(0)
for leaf in ('slides','agenda','minutes','id','rfc','bluesheets'):
target = os.path.join(path,leaf)
@ -401,7 +401,7 @@ def delete_interim_meeting(request, meeting_num):
group = sessions[0].group
# delete directories
path = get_upload_root(meeting)
path = meeting.get_materials_path()
# do a quick sanity check on this path before we go and delete it
parts = path.split('/')

View file

@ -26,9 +26,9 @@ def get_materials(group,meeting):
def get_proceedings_path(meeting,group):
if meeting.type_id == 'ietf':
path = os.path.join(get_upload_root(meeting),group.acronym + '.html')
path = os.path.join(meeting.get_materials_path(),group.acronym + '.html')
elif meeting.type_id == 'interim':
path = os.path.join(get_upload_root(meeting),'proceedings.html')
path = os.path.join(meeting.get_materials.path(),'proceedings.html')
return path
def get_proceedings_url(meeting,group=None):
@ -72,15 +72,3 @@ def get_timeslot(session, schedule=None):
else:
return None
def get_upload_root(meeting):
path = ''
if meeting.type.slug == 'ietf':
path = os.path.join(settings.AGENDA_PATH,meeting.number)
elif meeting.type.slug == 'interim':
path = os.path.join(settings.AGENDA_PATH,
'interim',
meeting.date.strftime('%Y'),
meeting.date.strftime('%m'),
meeting.date.strftime('%d'),
meeting.session_set.all()[0].group.acronym)
return path

View file

@ -414,9 +414,9 @@ DOC_HREFS = {
}
MEETING_DOC_HREFS = {
"agenda": "/meeting/{meeting}/agenda/{doc.group.acronym}/",
"minutes": "https://www.ietf.org/proceedings/{meeting}/minutes/{doc.external_url}",
"slides": "https://www.ietf.org/proceedings/{meeting}/slides/{doc.external_url}",
"agenda": "/meeting/{meeting.number}/agenda/{doc.group.acronym}/",
"minutes": "https://www.ietf.org/proceedings/{meeting.number}/minutes/{doc.external_url}",
"slides": "https://www.ietf.org/proceedings/{meeting.number}/slides/{doc.external_url}",
"recording": "{doc.external_url}",
}

View file

@ -23,7 +23,7 @@
<div class="form-group"
{% buttons %}
<button type="submit" class="btn btn-primary">Submit</button>
<a class="btn btn-default pull-right" href="{% url 'ietf.meeting.views.upcoming' %}">Back</a>
<a class="btn btn-default pull-right" href="{% url 'ietf.meeting.views.interim_request_details' number=meeting.number %}">Back</a>
{% endbuttons %}
</div>

View file

@ -43,7 +43,7 @@
</div> <!-- fieldset -->
<input class="btn btn-default" type="submit" value="Send" name='send' />
<a class="btn btn-danger pull-right" href="{% url 'ietf.meeting.views.interim_announce' %}">Cancel</a>
<a class="btn btn-default pull-right" href="{% url 'ietf.meeting.views.interim_request_details' number=meeting.number %}">Back</a>
</form>