src/hdalab/management/commands/calculate_preview.py
author ymh <ymh.work@gmail.com>
Wed, 11 Apr 2018 12:19:47 +0200
branchdocumentation
changeset 693 09e00f38d177
parent 492 19220d52bce7
permissions -rw-r--r--
Add hdabo/hdalab documentations

# -*- coding: utf-8 -*-
'''
Commande permettant la création des miniatures renkan.

Par défaut, seul les renkan pour lesquel c'est nécessaire sont traités (ceux qui sont publié)
Les miniatures sont calculées immédiatement de façons synchrone.

**Usage**: ``django-admin calculate_preview [options]``

**Options spécifiques:**

    - *\-\-all*: Capture les miniatures pours tous les renkan publié. Remplace les miniatures existantes.

'''

import logging
from optparse import make_option

from django.conf import settings
from django.core.management.base import NoArgsCommand
from django.core.management.color import no_style

from hdabo.utils import show_progress
from hdalab.models.renkan import HdalabRenkan
from hdalab.services import renkan_capture_preview


logger = logging.getLogger(__name__)

class Command(NoArgsCommand):
    '''
    calculate renkan preview.
    '''
    options = ''
    help = """calculate renkan preview."""

    option_list = NoArgsCommand.option_list + (
        make_option('--all',
            action='store_true',
            dest='all',
            default=False,
            help='force all tags to be updated, not only those not yet processed'),
    )


    def handle_noargs(self, **options):

        self.style = no_style()

        self.all = options.get('all', False)

        queryset = HdalabRenkan.objects.filter(state=HdalabRenkan.PUBLISHED)

        if not self.all:
            queryset = queryset.filter(renkan__image = settings.DEFAULT_RENKAN_ICON)

        count = queryset.count()

        writer = None
        for i,hdalab_renkan in enumerate(queryset.select_related()):
            writer = show_progress(i+1, count, hdalab_renkan.renkan.title, 50, writer)
            if hdalab_renkan.renkan.image and hdalab_renkan.renkan.image != settings.DEFAULT_RENKAN_ICON:
                hdalab_renkan.renkan.image.delete(False)
                hdalab_renkan.renkan.image.delete_thumbnails()

            renkan_capture_preview(hdalab_renkan)