Use workbench for temp files, refactor _set_pdf_filename, and correct imports
This commit is contained in:
parent
696b0ec64b
commit
40554b3395
@ -13,17 +13,18 @@
|
|||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
import argparse
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import dateutil.parser
|
import dateutil.parser
|
||||||
from subprocess import PIPE, Popen
|
from subprocess import PIPE, Popen
|
||||||
|
|
||||||
from mediagoblin import mg_globals as mgg
|
from mediagoblin import mg_globals as mgg
|
||||||
from mediagoblin.processing import (create_pub_filepath,
|
from mediagoblin.processing import (
|
||||||
FilenameBuilder, BadMediaFail,
|
FilenameBuilder, BadMediaFail,
|
||||||
MediaProcessor, ProcessingManager,
|
MediaProcessor, ProcessingManager,
|
||||||
request_from_args, get_orig_filename,
|
request_from_args, get_orig_filename,
|
||||||
store_public, copy_original)
|
store_public, copy_original)
|
||||||
from mediagoblin.tools.translate import fake_ugettext_passthrough as _
|
from mediagoblin.tools.translate import fake_ugettext_passthrough as _
|
||||||
|
|
||||||
_log = logging.getLogger(__name__)
|
_log = logging.getLogger(__name__)
|
||||||
@ -252,8 +253,11 @@ class CommonPdfProcessor(MediaProcessor):
|
|||||||
def _set_pdf_filename(self):
|
def _set_pdf_filename(self):
|
||||||
if self.name_builder.ext == 'pdf':
|
if self.name_builder.ext == 'pdf':
|
||||||
self.pdf_filename = self.orig_filename
|
self.pdf_filename = self.orig_filename
|
||||||
|
elif self.entry.media_files.get('pdf'):
|
||||||
|
self.pdf_filename = self.workbench.local_file(
|
||||||
|
mgg.public_store, self.entry.media_files['pdf'])
|
||||||
else:
|
else:
|
||||||
self.pdf_filename = self.name_builder.fill('{basename}.pdf')
|
self.pdf_filename = self._generate_pdf()
|
||||||
|
|
||||||
def copy_original(self):
|
def copy_original(self):
|
||||||
copy_original(
|
copy_original(
|
||||||
@ -266,7 +270,9 @@ class CommonPdfProcessor(MediaProcessor):
|
|||||||
mgg.global_config['media:thumb']['max_height'])
|
mgg.global_config['media:thumb']['max_height'])
|
||||||
|
|
||||||
# Note: pdftocairo adds '.png', so don't include an ext
|
# Note: pdftocairo adds '.png', so don't include an ext
|
||||||
thumb_filename = self.name_builder.fill('{basename}.thumbnail')
|
thumb_filename = os.path.join(self.workbench.dir,
|
||||||
|
self.name_builder.fill(
|
||||||
|
'{basename}.thumbnail'))
|
||||||
|
|
||||||
executable = where('pdftocairo')
|
executable = where('pdftocairo')
|
||||||
args = [executable, '-scale-to', str(thumb_size),
|
args = [executable, '-scale-to', str(thumb_size),
|
||||||
@ -278,25 +284,27 @@ class CommonPdfProcessor(MediaProcessor):
|
|||||||
store_public(self.entry, 'thumb', thumb_filename,
|
store_public(self.entry, 'thumb', thumb_filename,
|
||||||
self.name_builder.fill('{basename}.thumbnail.png'))
|
self.name_builder.fill('{basename}.thumbnail.png'))
|
||||||
|
|
||||||
def generate_pdf(self):
|
def _generate_pdf(self):
|
||||||
"""
|
"""
|
||||||
Store the pdf. If the file is not a pdf, make it a pdf
|
Store the pdf. If the file is not a pdf, make it a pdf
|
||||||
"""
|
"""
|
||||||
if self.name_builder.ext != 'pdf':
|
unoconv = where('unoconv')
|
||||||
unoconv = where('unoconv')
|
Popen(executable=unoconv,
|
||||||
Popen(executable=unoconv,
|
args=[unoconv, '-v', '-f', 'pdf', self.orig_filename]).wait()
|
||||||
args=[unoconv, '-v', '-f', 'pdf', self.orig_filename]).wait()
|
|
||||||
|
|
||||||
if not os.path.exists(self.pdf_filename):
|
if not os.path.exists(self.pdf_filename):
|
||||||
_log.debug('unoconv failed to convert file to pdf')
|
_log.debug('unoconv failed to convert file to pdf')
|
||||||
raise BadMediaFail()
|
raise BadMediaFail()
|
||||||
|
|
||||||
store_public(self.entry, 'pdf', self.pdf_filename,
|
store_public(self.entry, 'pdf', self.pdf_filename,
|
||||||
self.name_builder.fill('{basename}.pdf'))
|
self.name_builder.fill('{basename}.pdf'))
|
||||||
|
|
||||||
|
return self.workbench.local_file(
|
||||||
|
mgg.public_store, self.entry.media_files['pdf'])
|
||||||
|
|
||||||
def extract_pdf_info(self):
|
def extract_pdf_info(self):
|
||||||
pdf_info_dict = pdf_info(self.pdf_filename)
|
pdf_info_dict = pdf_info(self.pdf_filename)
|
||||||
entry.media_data_init(**pdf_info_dict)
|
self.entry.media_data_init(**pdf_info_dict)
|
||||||
|
|
||||||
def generate_medium(self, size=None):
|
def generate_medium(self, size=None):
|
||||||
if not size:
|
if not size:
|
||||||
@ -304,7 +312,8 @@ class CommonPdfProcessor(MediaProcessor):
|
|||||||
mgg.global_config['media:medium']['max_height'])
|
mgg.global_config['media:medium']['max_height'])
|
||||||
|
|
||||||
# Note: pdftocairo adds '.png', so don't include an ext
|
# Note: pdftocairo adds '.png', so don't include an ext
|
||||||
filename = self.name_builder.fill('{basename}.medium')
|
filename = os.path.join(self.workbench.dir,
|
||||||
|
self.name_builder.fill('{basename}.medium'))
|
||||||
|
|
||||||
executable = where('pdftocairo')
|
executable = where('pdftocairo')
|
||||||
args = [executable, '-scale-to', str(size),
|
args = [executable, '-scale-to', str(size),
|
||||||
@ -316,6 +325,7 @@ class CommonPdfProcessor(MediaProcessor):
|
|||||||
store_public(self.entry, 'thumb', filename,
|
store_public(self.entry, 'thumb', filename,
|
||||||
self.name_builder.fill('{basename}.medium.png'))
|
self.name_builder.fill('{basename}.medium.png'))
|
||||||
|
|
||||||
|
|
||||||
class InitialProcessor(CommonPdfProcessor):
|
class InitialProcessor(CommonPdfProcessor):
|
||||||
"""
|
"""
|
||||||
Initial processing step for new pdfs
|
Initial processing step for new pdfs
|
||||||
@ -360,7 +370,6 @@ class InitialProcessor(CommonPdfProcessor):
|
|||||||
|
|
||||||
def process(self, size=None, thumb_size=None):
|
def process(self, size=None, thumb_size=None):
|
||||||
self.common_setup()
|
self.common_setup()
|
||||||
self.generate_pdf()
|
|
||||||
self.extract_pdf_info()
|
self.extract_pdf_info()
|
||||||
self.copy_original()
|
self.copy_original()
|
||||||
self.generate_medium(size=size)
|
self.generate_medium(size=size)
|
||||||
@ -368,7 +377,7 @@ class InitialProcessor(CommonPdfProcessor):
|
|||||||
self.delete_queue_file()
|
self.delete_queue_file()
|
||||||
|
|
||||||
|
|
||||||
class Resizer(CommonImageProcessor):
|
class Resizer(CommonPdfProcessor):
|
||||||
"""
|
"""
|
||||||
Resizing process steps for processed pdfs
|
Resizing process steps for processed pdfs
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user