diff --git a/ietf/meeting/test_data.py b/ietf/meeting/test_data.py index 2a4fa85c4..5f01f82fd 100644 --- a/ietf/meeting/test_data.py +++ b/ietf/meeting/test_data.py @@ -1,5 +1,10 @@ import datetime +from django.utils.text import slugify + +import debug # pyflakes:ignore + + from ietf.doc.factories import DocumentFactory from ietf.group.models import Group from ietf.meeting.models import (Meeting, Room, TimeSlot, Session, Schedule, SchedTimeSessAssignment, @@ -28,18 +33,29 @@ def make_interim_meeting(group,date,status='sched'): session=session, schedule=session.meeting.agenda) # agenda - doc = DocumentFactory.create(name='agenda-%s'%meeting.number, type_id='agenda', title="Agenda", - external_url="agenda-%s.txt"%meeting.number, group=group, rev='00', states=[('draft','active')]) + name = "agenda-%s-%s-%s" % (meeting.number, group.acronym, "01") + rev = '00' + file = "%s-%s.txt" % (name, rev) + doc = DocumentFactory.create(name=name, type_id='agenda', title="Agenda", + external_url=file, group=group, rev=rev, states=[('draft','active')]) pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev) session.sessionpresentation_set.add(pres) # minutes - doc = DocumentFactory.create(name='minutes-%s'%meeting.number, type_id='minutes', title="Minutes", - external_url="minutes-%s.txt"%meeting.number, group=group, rev='00', states=[('draft','active')]) + name = "minutes-%s-%s" % (meeting.number, time.strftime("%Y%m%d%H%M")) + rev = '00' + file = "%s-%s.txt" % (name, rev) + doc = DocumentFactory.create(name=name, type_id='minutes', title="Minutes", + external_url=file, group=group, rev=rev, states=[('draft','active')]) pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev) session.sessionpresentation_set.add(pres) # slides - doc = DocumentFactory.create(name='slides-%s-1-active'%meeting.number, type_id='slides', title="Slideshow", - external_url="slides-%s.txt"%meeting.number, group=group, rev='00', + title = "Slideshow" + + name = "slides-%s-sessa-%s" % (meeting.number, slugify(title)) + rev = '00' + file = "%s-%s.txt" % (name, rev) + doc = DocumentFactory.create(name=name, type_id='slides', title=title, + external_url=file, group=group, rev=rev, states=[('slides','active'), ('reuse_policy', 'single')]) pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev) session.sessionpresentation_set.add(pres) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 1fdf62b2c..9dd73a156 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -1619,6 +1619,8 @@ class MaterialsTests(TestCase): def follow(url): seen.add(url) r = self.client.get(url) + if r.status_code != 200: + debug.show('url') self.assertEqual(r.status_code, 200) if not ('.' in url and url.rsplit('.', 1)[1] in ['tgz', 'pdf', ]): if r.content: @@ -1774,6 +1776,8 @@ class MaterialsTests(TestCase): test_file.name = "some.html" r = self.client.post(url,dict(file=test_file)) self.assertContains(r, 'Could not identify the file encoding') + doc = Document.objects.get(pk=doc.pk) + self.assertEqual(doc.rev,'02') # Verify that we don't have dead links url = url=urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym}) diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 1f37e279d..03ca3e904 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -161,6 +161,8 @@ def materials_document(request, document, num=None, ext=None): num = get_meeting(num).number if (re.search('^\w+-\d+-.+-\d\d$', document) or re.search('^\w+-interim-\d+-.+-\d\d-\d\d$', document) or + re.search('^\w+-interim-\d+-.+-sess[a-z]-\d\d$', document) or + re.search('^minutes-interim-\d+-.+-\d\d$', document) or re.search('^slides-interim-\d+-.+-\d\d$', document)): name, rev = document.rsplit('-', 1) else: @@ -1293,7 +1295,6 @@ def upload_session_minutes(request, session_id, num): filename = '%s-%s%s'% ( doc.name, doc.rev, ext) doc.external_url = filename e = NewRevisionDocEvent.objects.create(doc=doc, by=request.user.person, type='new_revision', desc='New revision available: %s'%doc.rev, rev=doc.rev) - doc.save_with_history([e]) # The way this function builds the filename it will never trigger the file delete in handle_file_upload. save_error = handle_upload_file(file, filename, session.meeting, 'minutes', request=request, encoding=form.file_encoding[file.name]) if save_error: @@ -1397,7 +1398,6 @@ def upload_session_agenda(request, session_id, num): filename = '%s-%s%s'% ( doc.name, doc.rev, ext) doc.external_url = filename e = NewRevisionDocEvent.objects.create(doc=doc,by=request.user.person,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev) - doc.save_with_history([e]) # The way this function builds the filename it will never trigger the file delete in handle_file_upload. save_error = handle_upload_file(file, filename, session.meeting, 'agenda', request=request, encoding=form.file_encoding[file.name]) if save_error: @@ -1503,7 +1503,6 @@ def upload_session_slides(request, session_id, num, name): filename = '%s-%s%s'% ( doc.name, doc.rev, ext) doc.external_url = filename e = NewRevisionDocEvent.objects.create(doc=doc,by=request.user.person,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev) - doc.save_with_history([e]) # The way this function builds the filename it will never trigger the file delete in handle_file_upload. save_error = handle_upload_file(file, filename, session.meeting, 'slides', request=request, encoding=form.file_encoding[file.name]) if save_error: diff --git a/ietf/secr/meetings/views.py b/ietf/secr/meetings/views.py index 2a4832514..e5b78f0e7 100644 --- a/ietf/secr/meetings/views.py +++ b/ietf/secr/meetings/views.py @@ -323,9 +323,12 @@ def blue_sheet(request, meeting_id): form = UploadBlueSheetForm(request.POST,request.FILES) if form.is_valid(): file = request.FILES['file'] - handle_upload_file(file,file.name,meeting,'bluesheets') - messages.success(request, 'File Uploaded') - return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number) + save_error = handle_upload_file(file,file.name,meeting,'bluesheets') + if save_error: + form.add_error(None, save_error) + else: + messages.success(request, 'File Uploaded') + return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number) else: form = UploadBlueSheetForm()