Skip to content

Commit 1e8eb0e

Browse files
committed
Rework how SlideSuggestion objects name their files. Improve the UI when there are multiple pending suggestions for updating the same presentation. Commit ready for merge.
- Legacy-Id: 16554
1 parent 3b26ade commit 1e8eb0e

4 files changed

Lines changed: 27 additions & 13 deletions

File tree

ietf/meeting/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,6 +1172,7 @@ def __str__(self):
11721172
return u'%s : %s : %s' % ( self.meeting, self.name, self.date )
11731173

11741174
class SlideSubmission(models.Model):
1175+
time = models.DateTimeField(auto_now=True)
11751176
session = ForeignKey(Session)
11761177
title = models.CharField(max_length=255)
11771178
filename = models.CharField(max_length=255)

ietf/meeting/tests_views.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2131,22 +2131,32 @@ def test_submit_and_approve_multiple_versions(self):
21312131
test_file.name = 'not_really.txt'
21322132
r = self.client.post(propose_url,dict(file=test_file,title='a test slide file',apply_to_all=True))
21332133
self.assertEqual(r.status_code, 302)
2134-
self.client.logout()
21352134

2136-
submission = SlideSubmission.objects.get(session = session)
2135+
test_file = BytesIO(b'this is not really a slide, but it is third version of it')
2136+
test_file.name = 'not_really.txt'
2137+
r = self.client.post(propose_url,dict(file=test_file,title='a test slide file',apply_to_all=True))
2138+
self.assertEqual(r.status_code, 302)
2139+
self.client.logout()
21372140

2138-
approve_url = urlreverse('ietf.meeting.views.approve_proposed_slides', kwargs={'slidesubmission_id':submission.pk,'num':submission.session.meeting.number})
2141+
(first_submission, second_submission) = SlideSubmission.objects.filter(session=session).order_by('id')
2142+
2143+
approve_url = urlreverse('ietf.meeting.views.approve_proposed_slides', kwargs={'slidesubmission_id':second_submission.pk,'num':second_submission.session.meeting.number})
21392144
login_testing_unauthorized(self, chair.user.username, approve_url)
21402145
r = self.client.post(approve_url,dict(title=submission.title,approve='approve'))
21412146
self.assertEqual(r.status_code,302)
2147+
2148+
disapprove_url = urlreverse('ietf.meeting.views.approve_proposed_slides', kwargs={'slidesubmission_id':first_submission.pk,'num':first_submission.session.meeting.number})
2149+
r = self.client.post(disapprove_url,dict(title='some title',disapprove="disapprove"))
2150+
self.assertEqual(r.status_code,302)
21422151
self.client.logout()
21432152

2153+
self.assertEqual(SlideSubmission.objects.count(),0)
21442154
self.assertEqual(session.sessionpresentation_set.first().document.rev,'01')
21452155
path = os.path.join(submission.session.meeting.get_materials_path(),'slides')
21462156
filename = os.path.join(path,session.sessionpresentation_set.first().document.name+'-01.txt')
21472157
self.assertTrue(os.path.exists(filename))
21482158
contents = open(filename,'r').read()
2149-
self.assertIn('another version', contents)
2159+
self.assertIn('third version', contents)
21502160

21512161

21522162
class SessionTests(TestCase):

ietf/meeting/views.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1580,6 +1580,9 @@ def propose_session_slides(request, session_id, num):
15801580
if show_apply_to_all_checkbox:
15811581
apply_to_all = form.cleaned_data['apply_to_all']
15821582
title = form.cleaned_data['title']
1583+
1584+
submission = SlideSubmission.objects.create(session = session, title = title, filename = '', apply_to_all = apply_to_all, submitter=request.user.person)
1585+
15831586
if session.meeting.type_id=='ietf':
15841587
name = 'slides-%s-%s' % (session.meeting.number,
15851588
session.group.acronym)
@@ -1588,15 +1591,15 @@ def propose_session_slides(request, session_id, num):
15881591
else:
15891592
name = 'slides-%s-%s' % (session.meeting.number, session.docname_token())
15901593
name = name + '-' + slugify(title).replace('_', '-')[:128]
1591-
rev = '00'
1592-
if Document.objects.filter(name=name).exists():
1593-
rev ='%02d' % (int(Document.objects.get(name=name).rev) + 1)
1594-
filename = '%s-%s%s'% (name, rev, ext)
1594+
filename = '%s-ss%d%s'% (name, submission.id, ext)
15951595
destination = io.open(os.path.join(settings.SLIDE_STAGING_PATH, filename),'wb+')
15961596
for chunk in file.chunks():
15971597
destination.write(chunk)
15981598
destination.close()
1599-
submission = SlideSubmission.objects.create(session = session, title = title, filename = filename, apply_to_all = apply_to_all, submitter=request.user.person)
1599+
1600+
submission.filename = filename
1601+
submission.save()
1602+
16001603
(to, cc) = gather_address_lists('slides_proposed', group=session.group).as_strings()
16011604
msg_txt = render_to_string("meeting/slides_proposed.txt", {
16021605
"to": to,
@@ -2436,7 +2439,7 @@ def approve_proposed_slides(request, slidesubmission_id, num):
24362439
if len(sessions) > 1:
24372440
session_number = 1 + sessions.index(submission.session)
24382441
name, _ = os.path.splitext(submission.filename)
2439-
name = name[:-3]
2442+
name = name[:name.rfind('-ss')]
24402443
existing_doc = Document.objects.filter(name=name).first()
24412444
if request.method == 'POST':
24422445
form = ApproveSlidesForm(show_apply_to_all_checkbox, request.POST)
@@ -2480,7 +2483,7 @@ def approve_proposed_slides(request, slidesubmission_id, num):
24802483
if not os.path.exists(path):
24812484
os.makedirs(path)
24822485
sub_name, sub_ext = os.path.splitext(submission.filename)
2483-
target_filename = '%s-%s%s' % (sub_name[:-3],doc.rev,sub_ext)
2486+
target_filename = '%s-%s%s' % (sub_name[:sub_name.rfind('-ss')],doc.rev,sub_ext)
24842487
os.rename(submission.staged_filepath(), os.path.join(path, target_filename))
24852488
acronym = submission.session.group.acronym
24862489
submission.delete()

ietf/templates/meeting/session_details.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ <h1>{{ meeting }} : {{ acronym }}
4949
<div id="proposedslidelist" class="panel-body">
5050
{% for s in pending_suggestions %}
5151
{% if can_manage_materials %}
52-
<p><a href="{% url "ietf.meeting.views.approve_proposed_slides" slidesubmission_id=s.pk num=s.session.meeting.number %}">{{s.submitter}} - {{s.title}}</a></p>
52+
<p><a href="{% url "ietf.meeting.views.approve_proposed_slides" slidesubmission_id=s.pk num=s.session.meeting.number %}">{{s.submitter}} - {{s.title}} ({{s.time}})</a></p>
5353
{% else %}
54-
<p>{{s.title}}</p>
54+
<p>{{s.title}} ({{s.time}})</p>
5555
{% endif %}
5656
{% endfor %}
5757
</div>

0 commit comments

Comments
 (0)