Removed premature save of upload document state (doing it after verifying that the save to file worked instead). Tweaked materials documents revision extraction regexes. Added a test on no change of materials rev after failed upload. Corrected the naming of materials in make_meeting_test_data. Refined the test crawl of meeting materials pages.
- Legacy-Id: 14865
This commit is contained in:
parent
306431319a
commit
1ece5f1f3b
|
@ -1,5 +1,10 @@
|
||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
|
from django.utils.text import slugify
|
||||||
|
|
||||||
|
import debug # pyflakes:ignore
|
||||||
|
|
||||||
|
|
||||||
from ietf.doc.factories import DocumentFactory
|
from ietf.doc.factories import DocumentFactory
|
||||||
from ietf.group.models import Group
|
from ietf.group.models import Group
|
||||||
from ietf.meeting.models import (Meeting, Room, TimeSlot, Session, Schedule, SchedTimeSessAssignment,
|
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,
|
session=session,
|
||||||
schedule=session.meeting.agenda)
|
schedule=session.meeting.agenda)
|
||||||
# agenda
|
# agenda
|
||||||
doc = DocumentFactory.create(name='agenda-%s'%meeting.number, type_id='agenda', title="Agenda",
|
name = "agenda-%s-%s-%s" % (meeting.number, group.acronym, "01")
|
||||||
external_url="agenda-%s.txt"%meeting.number, group=group, rev='00', states=[('draft','active')])
|
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)
|
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
|
||||||
session.sessionpresentation_set.add(pres)
|
session.sessionpresentation_set.add(pres)
|
||||||
# minutes
|
# minutes
|
||||||
doc = DocumentFactory.create(name='minutes-%s'%meeting.number, type_id='minutes', title="Minutes",
|
name = "minutes-%s-%s" % (meeting.number, time.strftime("%Y%m%d%H%M"))
|
||||||
external_url="minutes-%s.txt"%meeting.number, group=group, rev='00', states=[('draft','active')])
|
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)
|
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
|
||||||
session.sessionpresentation_set.add(pres)
|
session.sessionpresentation_set.add(pres)
|
||||||
# slides
|
# slides
|
||||||
doc = DocumentFactory.create(name='slides-%s-1-active'%meeting.number, type_id='slides', title="Slideshow",
|
title = "Slideshow"
|
||||||
external_url="slides-%s.txt"%meeting.number, group=group, rev='00',
|
|
||||||
|
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')])
|
states=[('slides','active'), ('reuse_policy', 'single')])
|
||||||
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
|
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
|
||||||
session.sessionpresentation_set.add(pres)
|
session.sessionpresentation_set.add(pres)
|
||||||
|
|
|
@ -1619,6 +1619,8 @@ class MaterialsTests(TestCase):
|
||||||
def follow(url):
|
def follow(url):
|
||||||
seen.add(url)
|
seen.add(url)
|
||||||
r = self.client.get(url)
|
r = self.client.get(url)
|
||||||
|
if r.status_code != 200:
|
||||||
|
debug.show('url')
|
||||||
self.assertEqual(r.status_code, 200)
|
self.assertEqual(r.status_code, 200)
|
||||||
if not ('.' in url and url.rsplit('.', 1)[1] in ['tgz', 'pdf', ]):
|
if not ('.' in url and url.rsplit('.', 1)[1] in ['tgz', 'pdf', ]):
|
||||||
if r.content:
|
if r.content:
|
||||||
|
@ -1774,6 +1776,8 @@ class MaterialsTests(TestCase):
|
||||||
test_file.name = "some.html"
|
test_file.name = "some.html"
|
||||||
r = self.client.post(url,dict(file=test_file))
|
r = self.client.post(url,dict(file=test_file))
|
||||||
self.assertContains(r, 'Could not identify the file encoding')
|
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
|
# 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})
|
url = url=urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym})
|
||||||
|
|
|
@ -161,6 +161,8 @@ def materials_document(request, document, num=None, ext=None):
|
||||||
num = get_meeting(num).number
|
num = get_meeting(num).number
|
||||||
if (re.search('^\w+-\d+-.+-\d\d$', document) or
|
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+-.+-\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)):
|
re.search('^slides-interim-\d+-.+-\d\d$', document)):
|
||||||
name, rev = document.rsplit('-', 1)
|
name, rev = document.rsplit('-', 1)
|
||||||
else:
|
else:
|
||||||
|
@ -1293,7 +1295,6 @@ def upload_session_minutes(request, session_id, num):
|
||||||
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
|
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
|
||||||
doc.external_url = filename
|
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)
|
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.
|
# 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])
|
save_error = handle_upload_file(file, filename, session.meeting, 'minutes', request=request, encoding=form.file_encoding[file.name])
|
||||||
if save_error:
|
if save_error:
|
||||||
|
@ -1397,7 +1398,6 @@ def upload_session_agenda(request, session_id, num):
|
||||||
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
|
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
|
||||||
doc.external_url = filename
|
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)
|
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.
|
# 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])
|
save_error = handle_upload_file(file, filename, session.meeting, 'agenda', request=request, encoding=form.file_encoding[file.name])
|
||||||
if save_error:
|
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)
|
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
|
||||||
doc.external_url = filename
|
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)
|
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.
|
# 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])
|
save_error = handle_upload_file(file, filename, session.meeting, 'slides', request=request, encoding=form.file_encoding[file.name])
|
||||||
if save_error:
|
if save_error:
|
||||||
|
|
|
@ -323,9 +323,12 @@ def blue_sheet(request, meeting_id):
|
||||||
form = UploadBlueSheetForm(request.POST,request.FILES)
|
form = UploadBlueSheetForm(request.POST,request.FILES)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
file = request.FILES['file']
|
file = request.FILES['file']
|
||||||
handle_upload_file(file,file.name,meeting,'bluesheets')
|
save_error = handle_upload_file(file,file.name,meeting,'bluesheets')
|
||||||
messages.success(request, 'File Uploaded')
|
if save_error:
|
||||||
return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number)
|
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:
|
else:
|
||||||
form = UploadBlueSheetForm()
|
form = UploadBlueSheetForm()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue