Exemple #1
0
def create_print_issue_pdf():
    """Create or update pdf for the current issue"""

    issue = current_issue()
    editions = [('', PAGES_GLOB), ('_mag', MAG_PAGES_GLOB)]
    results = []
    for suffix, globpattern in editions:

        pdf_name = OUTPUT_PDF_NAME.format(issue=issue, suffix=suffix)
        issue_name = '{issue.number}/{issue.date.year}{suffix}'.format(
            suffix=suffix, issue=issue)
        logger.info('Creating pdf: {}'.format(issue_name))
        tmp_bundle_file = tempfile.NamedTemporaryFile(suffix='.pdf')
        try:
            create_web_bundle(filename=tmp_bundle_file.name,
                              globpattern=globpattern)
        except RuntimeWarning as warning:
            logger.info(str(warning))
            continue
        try:
            # pdf_lookfor = pdf_name.split('.')[0]
            # print(pdf_name, pdf_lookfor)
            print_issue = PrintIssue.objects.get(pdf__endswith=pdf_name)
        except PrintIssue.DoesNotExist:
            print_issue = PrintIssue()
        with open(tmp_bundle_file.name, 'rb') as src:
            pdf_content = ContentFile(src.read())
        print_issue.pdf.save(pdf_name, pdf_content, save=False)
        # print_issue.issue_name = issue_name
        print_issue.save()
        logger.info('New bundle file: {}'.format(pdf_name))
        results.append(pdf_name)
    return results
Exemple #2
0
    def handle(self, *args, **options):
        """ Finds pdf files on disks and creates PrintIssue objects. """

        for code, suffix in (1, ''), (2, '_mag'):
            year, number = current_issue()
            filename = FILENAME_PATTERN.format(
                year=year,
                number=number,
                suffix=suffix,
            )
            files = self.get_staging_pdf_files(code)

            if len(files) == 0:
                msg = 'no files found, {}'.format(code)
                logger.debug(msg)
                continue

            if len(files) % 4:
                msg = 'Incorrect number of pages ({}), {}'.format(
                    len(files), code)
                logger.debug(msg)
                continue

            pdf_path = os.path.join(PDF_FOLDER, filename)

            args = [PDF_MERGE, pdf_path] + files
            msg = '\n'.join(args)
            logger.debug(msg)
            subprocess.call(args)

            issue, new = PrintIssue.objects.get_or_create(pdf='pdf/' +
                                                          filename)
            if new:
                name = '{number}/{year}{suffix}'.format(**locals())
                issue.issue_name = name
Exemple #3
0
def create_print_issue_pdf():
    """Create or update pdf for the current issue"""

    issue = current_issue()
    editions = [('', PAGES_GLOB), ('_mag', MAG_PAGES_GLOB)]
    results = []
    for suffix, globpattern in editions:

        pdf_name = OUTPUT_PDF_NAME.format(issue=issue, suffix=suffix)
        issue_name = '{issue.number}/{issue.date.year}{suffix}'.format(
            suffix=suffix, issue=issue)
        logger.info('Creating pdf: {}'.format(issue_name))
        tmp_bundle_file = tempfile.NamedTemporaryFile(suffix='.pdf')
        try:
            create_web_bundle(
                filename=tmp_bundle_file.name, globpattern=globpattern)
        except RuntimeWarning as warning:
            logger.info(str(warning))
            continue
        try:
            # pdf_lookfor = pdf_name.split('.')[0]
            # print(pdf_name, pdf_lookfor)
            print_issue = PrintIssue.objects.get(pdf__endswith=pdf_name)
        except PrintIssue.DoesNotExist:
            print_issue = PrintIssue()
        with open(tmp_bundle_file.name, 'rb') as src:
            pdf_content = ContentFile(src.read())
        print_issue.pdf.save(pdf_name, pdf_content, save=False)
        # print_issue.issue_name = issue_name
        print_issue.save()
        logger.info('New bundle file: {}'.format(pdf_name))
        results.append(pdf_name)
    return results
Exemple #4
0
 def handle(self, *args, **options):
     # print(options)
     # if int(options['verbosity']) > 1:
     #     logger = logging.getLogger('console')
     # else:
     logger = logging.getLogger(__name__)
     bundle_pdf(current_issue(), logger)
 def handle(self, *args, **options):
     # print(options)
     # if int(options['verbosity']) > 1:
     #     logger = logging.getLogger('console')
     # else:
     logger = logging.getLogger(__name__)
     bundle_pdf(current_issue(), logger)
Exemple #6
0
    def handle(self, *args, **options):

        """ Finds pdf files on disks and creates PrintIssue objects. """

        for code, suffix in (1, ''), (2, '_mag'):
            year, number = current_issue()
            filename = FILENAME_PATTERN.format(
                year=year,
                number=number,
                suffix=suffix,
            )
            files = self.get_staging_pdf_files(code)

            if len(files) == 0:
                msg = 'no files found, {}'.format(code)
                logger.debug(msg)
                continue

            if len(files) % 4:
                msg = 'Incorrect number of pages ({}), {}'.format(
                    len(files),
                    code)
                logger.debug(msg)
                continue

            pdf_path = os.path.join(PDF_FOLDER, filename)

            args = [PDF_MERGE, pdf_path] + files
            msg = '\n'.join(args)
            logger.debug(msg)
            subprocess.call(args)

            issue, new = PrintIssue.objects.get_or_create(pdf='pdf/' + filename)
            if new:
                name = '{number}/{year}{suffix}'.format(**locals())
                issue.issue_name = name
Exemple #7
0
 def upload_folder(cls):
     issue = current_issue()
     return os.path.join(str(issue.date.year), str(issue.number))
Exemple #8
0
 def upload_folder(cls):
     issue = current_issue().issue_tuple()
     return os.path.join(str(issue.date.year), str(issue.number))
Exemple #9
0
def image_upload_folder():
    year, issue = current_issue()
    return '{}/{}/'.format(year, issue)
Exemple #10
0
def image_upload_folder():
    year, issue = current_issue()
    return '{}/{}/'.format(year, issue)