Skip to content

Commit 1ece5f1

Browse files
committed
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
1 parent 3064313 commit 1ece5f1

4 files changed

Lines changed: 34 additions & 12 deletions

File tree

ietf/meeting/test_data.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import datetime
22

3+
from django.utils.text import slugify
4+
5+
import debug # pyflakes:ignore
6+
7+
38
from ietf.doc.factories import DocumentFactory
49
from ietf.group.models import Group
510
from ietf.meeting.models import (Meeting, Room, TimeSlot, Session, Schedule, SchedTimeSessAssignment,
@@ -28,18 +33,29 @@ def make_interim_meeting(group,date,status='sched'):
2833
session=session,
2934
schedule=session.meeting.agenda)
3035
# agenda
31-
doc = DocumentFactory.create(name='agenda-%s'%meeting.number, type_id='agenda', title="Agenda",
32-
external_url="agenda-%s.txt"%meeting.number, group=group, rev='00', states=[('draft','active')])
36+
name = "agenda-%s-%s-%s" % (meeting.number, group.acronym, "01")
37+
rev = '00'
38+
file = "%s-%s.txt" % (name, rev)
39+
doc = DocumentFactory.create(name=name, type_id='agenda', title="Agenda",
40+
external_url=file, group=group, rev=rev, states=[('draft','active')])
3341
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
3442
session.sessionpresentation_set.add(pres)
3543
# minutes
36-
doc = DocumentFactory.create(name='minutes-%s'%meeting.number, type_id='minutes', title="Minutes",
37-
external_url="minutes-%s.txt"%meeting.number, group=group, rev='00', states=[('draft','active')])
44+
name = "minutes-%s-%s" % (meeting.number, time.strftime("%Y%m%d%H%M"))
45+
rev = '00'
46+
file = "%s-%s.txt" % (name, rev)
47+
doc = DocumentFactory.create(name=name, type_id='minutes', title="Minutes",
48+
external_url=file, group=group, rev=rev, states=[('draft','active')])
3849
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
3950
session.sessionpresentation_set.add(pres)
4051
# slides
41-
doc = DocumentFactory.create(name='slides-%s-1-active'%meeting.number, type_id='slides', title="Slideshow",
42-
external_url="slides-%s.txt"%meeting.number, group=group, rev='00',
52+
title = "Slideshow"
53+
54+
name = "slides-%s-sessa-%s" % (meeting.number, slugify(title))
55+
rev = '00'
56+
file = "%s-%s.txt" % (name, rev)
57+
doc = DocumentFactory.create(name=name, type_id='slides', title=title,
58+
external_url=file, group=group, rev=rev,
4359
states=[('slides','active'), ('reuse_policy', 'single')])
4460
pres = SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
4561
session.sessionpresentation_set.add(pres)

ietf/meeting/tests_views.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,6 +1619,8 @@ def crawl_materials(self, url, top):
16191619
def follow(url):
16201620
seen.add(url)
16211621
r = self.client.get(url)
1622+
if r.status_code != 200:
1623+
debug.show('url')
16221624
self.assertEqual(r.status_code, 200)
16231625
if not ('.' in url and url.rsplit('.', 1)[1] in ['tgz', 'pdf', ]):
16241626
if r.content:
@@ -1774,6 +1776,8 @@ def test_upload_minutes_agenda(self):
17741776
test_file.name = "some.html"
17751777
r = self.client.post(url,dict(file=test_file))
17761778
self.assertContains(r, 'Could not identify the file encoding')
1779+
doc = Document.objects.get(pk=doc.pk)
1780+
self.assertEqual(doc.rev,'02')
17771781

17781782
# Verify that we don't have dead links
17791783
url = url=urlreverse('ietf.meeting.views.session_details', kwargs={'num':session.meeting.number, 'acronym': session.group.acronym})

ietf/meeting/views.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ def materials_document(request, document, num=None, ext=None):
161161
num = get_meeting(num).number
162162
if (re.search('^\w+-\d+-.+-\d\d$', document) or
163163
re.search('^\w+-interim-\d+-.+-\d\d-\d\d$', document) or
164+
re.search('^\w+-interim-\d+-.+-sess[a-z]-\d\d$', document) or
165+
re.search('^minutes-interim-\d+-.+-\d\d$', document) or
164166
re.search('^slides-interim-\d+-.+-\d\d$', document)):
165167
name, rev = document.rsplit('-', 1)
166168
else:
@@ -1293,7 +1295,6 @@ def upload_session_minutes(request, session_id, num):
12931295
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
12941296
doc.external_url = filename
12951297
e = NewRevisionDocEvent.objects.create(doc=doc, by=request.user.person, type='new_revision', desc='New revision available: %s'%doc.rev, rev=doc.rev)
1296-
doc.save_with_history([e])
12971298
# The way this function builds the filename it will never trigger the file delete in handle_file_upload.
12981299
save_error = handle_upload_file(file, filename, session.meeting, 'minutes', request=request, encoding=form.file_encoding[file.name])
12991300
if save_error:
@@ -1397,7 +1398,6 @@ def upload_session_agenda(request, session_id, num):
13971398
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
13981399
doc.external_url = filename
13991400
e = NewRevisionDocEvent.objects.create(doc=doc,by=request.user.person,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev)
1400-
doc.save_with_history([e])
14011401
# The way this function builds the filename it will never trigger the file delete in handle_file_upload.
14021402
save_error = handle_upload_file(file, filename, session.meeting, 'agenda', request=request, encoding=form.file_encoding[file.name])
14031403
if save_error:
@@ -1503,7 +1503,6 @@ def upload_session_slides(request, session_id, num, name):
15031503
filename = '%s-%s%s'% ( doc.name, doc.rev, ext)
15041504
doc.external_url = filename
15051505
e = NewRevisionDocEvent.objects.create(doc=doc,by=request.user.person,type='new_revision',desc='New revision available: %s'%doc.rev,rev=doc.rev)
1506-
doc.save_with_history([e])
15071506
# The way this function builds the filename it will never trigger the file delete in handle_file_upload.
15081507
save_error = handle_upload_file(file, filename, session.meeting, 'slides', request=request, encoding=form.file_encoding[file.name])
15091508
if save_error:

ietf/secr/meetings/views.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -323,9 +323,12 @@ def blue_sheet(request, meeting_id):
323323
form = UploadBlueSheetForm(request.POST,request.FILES)
324324
if form.is_valid():
325325
file = request.FILES['file']
326-
handle_upload_file(file,file.name,meeting,'bluesheets')
327-
messages.success(request, 'File Uploaded')
328-
return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number)
326+
save_error = handle_upload_file(file,file.name,meeting,'bluesheets')
327+
if save_error:
328+
form.add_error(None, save_error)
329+
else:
330+
messages.success(request, 'File Uploaded')
331+
return redirect('ietf.secr.meetings.views.blue_sheet', meeting_id=meeting.number)
329332
else:
330333
form = UploadBlueSheetForm()
331334

0 commit comments

Comments
 (0)