Skip to content

Commit b44141a

Browse files
committed
Merged in [9671] from rcross@amsl.com:
Fixes ietf-tools#1724. Convert PPT materials to PDF. - Legacy-Id: 9682 Note: SVN reference [9671] has been migrated to Git commit 8bf84a7
1 parent 89445e2 commit b44141a

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

ietf/secr/proceedings/views.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import itertools
44
import os
55
import shutil
6+
import subprocess
67

78
import debug # pyflakes:ignore
89

@@ -31,6 +32,7 @@
3132
gen_attendees, gen_group_pages, gen_index, gen_irtf, gen_overview, gen_plenaries,
3233
gen_progress, gen_research, gen_training, create_proceedings, create_interim_directory,
3334
create_recording )
35+
from ietf.utils.log import log
3436

3537
# -------------------------------------------------
3638
# Globals
@@ -187,6 +189,31 @@ def parsedate(d):
187189
'''
188190
return (d.strftime('%Y'),d.strftime('%m'),d.strftime('%d'))
189191

192+
def is_powerpoint(doc):
193+
'''
194+
Returns true if document is a Powerpoint presentation
195+
'''
196+
return doc.file_extension() in ('ppt','pptx')
197+
198+
def post_process(doc):
199+
'''
200+
Does post processing on uploaded file.
201+
- Convert PPT to PDF
202+
'''
203+
if is_powerpoint(doc) and hasattr(settings,'SECR_PPT2PDF_COMMAND'):
204+
try:
205+
cmd = settings.SECR_PPT2PDF_COMMAND
206+
cmd.append(doc.get_file_path()) # outdir
207+
cmd.append(os.path.join(doc.get_file_path(),doc.external_url)) # filename
208+
subprocess.check_call(cmd)
209+
except (subprocess.CalledProcessError, OSError) as error:
210+
log("Error converting PPT: %s" % (error))
211+
return
212+
# change extension
213+
base,ext = os.path.splitext(doc.external_url)
214+
doc.external_url = base + '.pdf'
215+
doc.save()
216+
190217
# -------------------------------------------------
191218
# AJAX Functions
192219
# -------------------------------------------------
@@ -678,7 +705,8 @@ def replace_slide(request, slide_id):
678705

679706
new_slide.external_url = disk_filename
680707
new_slide.save()
681-
708+
post_process(new_slide)
709+
682710
# create DocEvent uploaded
683711
DocEvent.objects.create(doc=slide,
684712
by=request.user.person,
@@ -913,7 +941,8 @@ def redirection_back(meeting, group):
913941
DocAlias.objects.get_or_create(name=doc.name, document=doc)
914942

915943
handle_upload_file(file,disk_filename,meeting,material_type.slug)
916-
944+
post_process(doc)
945+
917946
# set Doc state
918947
if doc.type.slug=='slides':
919948
doc.set_state(State.objects.get(type=doc.type,slug='archived'))

ietf/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,7 @@ def skip_unreadable_post(record):
473473
SECR_MAX_UPLOAD_SIZE = 40960000
474474
SECR_PROCEEDINGS_DIR = '/a/www/www6s/proceedings/'
475475
SECR_STATIC_URL = '/secretariat/'
476+
SECR_PPT2PDF_COMMAND = ['/usr/bin/goffice','--headless','--convert-to','pdf','--outdir']
476477

477478
USE_ETAGS=True
478479

0 commit comments

Comments
 (0)