コード例 #1
0
ファイル: models.py プロジェクト: marthaurion/blog_django
def warm_Media_images(sender, instance, **kwargs):
    media_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='scaled_image',
        image_attr='full_image'
    )
    num_created, failed_to_create = media_img_warmer.warm()
コード例 #2
0
def warm_SightingsMedia_images(sender, instance, **kwargs):
    """Ensures SightingsMedia thumbnails are created post-save"""
    sighting_image_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='sighting_image',
        image_attr='sighting_image')
    num_created, failed_to_create = sighting_image_warmer.warm()
コード例 #3
0
ファイル: models.py プロジェクト: edliju1997/girox
def warm_Advertiser_banner_images(sender, instance, **kwargs):
    """Ensures Advertiser image files are created post-save"""
    advertiser_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='advertiser',
        image_attr='banner')
    num_created, failed_to_create = advertiser_img_warmer.warm()
コード例 #4
0
ファイル: models.py プロジェクト: pyeye/maddog-back
def warm_set_photo_images(sender, instance, **kwargs):
    set_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='set_photo',
        image_attr='photo'
    )
    num_created, failed_to_create = set_img_warmer.warm()
コード例 #5
0
def warm_BirdExtended_profile_pictures(sender, instance, **kwargs):
    """Ensures BirdExtended thumbnails are created post-save"""
    profile_picture_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='profile_picture',
        image_attr='profile_picture')
    num_created, failed_to_create = profile_picture_warmer.warm()
コード例 #6
0
def warm_photo_images(sender, instance, **kwargs):

    photo_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='gallery_photo',
        image_attr='image')
    photo_img_warmer.warm()
コード例 #7
0
 def warm_products(self):
     self.stdout.write('Products thumbnails generation:')
     warmer = VersatileImageFieldWarmer(
         instance_or_queryset=ProductImage.objects.all(),
         rendition_key_set='products', image_attr='image', verbose=True)
     num_created, failed_to_create = warmer.warm()
     self.log_failed_images(failed_to_create)
コード例 #8
0
ファイル: models.py プロジェクト: pyeye/maddog-back
def warm_album_image_images(sender, instance, **kwargs):
    album_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='album_image',
        image_attr='main_image'
    )
    num_created, failed_to_create = album_img_warmer.warm()
コード例 #9
0
ファイル: models.py プロジェクト: pyeye/bb-back
def warm_event_poster_images(sender, instance, **kwargs):
    event_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='event_poster',
        image_attr='poster'
    )
    num_created, failed_to_create = event_img_warmer.warm()
コード例 #10
0
    def test_image_warmer(self):
        """Ensures VersatileImageFieldWarmer works as advertised."""
        jpg_warmer = VersatileImageFieldWarmer(
            instance_or_queryset=self.jpg,
            rendition_key_set='test_set',
            image_attr='image'
        )
        num_created, failed_to_create = jpg_warmer.warm()
        self.assertEqual(num_created, 5)
        all_imgs_warmer = VersatileImageFieldWarmer(
            instance_or_queryset=VersatileImageTestModel.objects.exclude(
                img_type='delete_test'
            ),
            rendition_key_set=(
                ('test_thumb', 'thumbnail__100x100'),
                ('test_crop', 'crop__100x100'),
                ('test_invert', 'filters__invert__url'),
            ),
            image_attr='image',
            verbose=True
        )
        num_created, failed_to_create = all_imgs_warmer.warm()

        with self.assertRaises(ValueError):
            invalid_warmer = VersatileImageFieldWarmer(
                instance_or_queryset=['invalid'],
                rendition_key_set=(
                    ('test_thumb', 'thumbnail__10x10'),
                ),
                image_attr='image'
            )
            del invalid_warmer
コード例 #11
0
ファイル: models.py プロジェクト: pyeye/bb-back
def warm_artist_images(sender, instance, **kwargs):
    artist_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='artist_img',
        image_attr='img'
    )
    num_created, failed_to_create = artist_img_warmer.warm()
コード例 #12
0
def warm_gallery_image_images(sender, instance, **kwargs):
    sale_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='sales_image',
        image_attr='image'
    )
    num_created, failed_to_create = sale_img_warmer.warm()
コード例 #13
0
ファイル: models.py プロジェクト: jaywink/socialhome
 def init_pictures_on_disk(self):
     """Create image versions on disk."""
     picture_warmer = VersatileImageFieldWarmer(
         instance_or_queryset=self,
         rendition_key_set="profile_picture",
         image_attr="picture",
     )
     picture_warmer.warm()
コード例 #14
0
ファイル: models.py プロジェクト: sbignell/funkwhale
def warm_user_avatar(sender, instance, **kwargs):
    if not instance.avatar:
        return
    user_avatar_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set="square",
        image_attr="avatar")
    num_created, failed_to_create = user_avatar_warmer.warm()
コード例 #15
0
 def warm_products(self):
     self.stdout.write('Products thumbanails generation:')
     warmer = VersatileImageFieldWarmer(
         # instance_or_queryset=ProductImage.objects.all(),
         instance_or_queryset=ProductImage.objects.filter(Q(image__contains='ladystork') | Q(image__contains='natacha')),
         rendition_key_set='products', image_attr='image', verbose=True)
     num_created, failed_to_create = warmer.warm()
     self.log_failed_images(failed_to_create)
コード例 #16
0
ファイル: models.py プロジェクト: marthaurion/blog_django
def warm_Post_first_image(sender, instance, **kwargs):
    first = instance.get_first_image()
    if first:
        post_img_warmer = VersatileImageFieldWarmer(
            instance_or_queryset=first,
            rendition_key_set='first_image',
            image_attr='full_image')
        num_created, failed_to_create = post_img_warmer.warm()
コード例 #17
0
def warm_album_covers(sender, instance, **kwargs):
    if not instance.cover:
        return
    album_covers_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set="square",
        image_attr="cover")
    num_created, failed_to_create = album_covers_warmer.warm()
コード例 #18
0
ファイル: models.py プロジェクト: imheyday/socialhome
 def init_pictures_on_disk(self):
     """Create image versions on disk."""
     picture_warmer = VersatileImageFieldWarmer(
         instance_or_queryset=self,
         rendition_key_set="profile_picture",
         image_attr="picture",
     )
     picture_warmer.warm()
コード例 #19
0
ファイル: models.py プロジェクト: bhawana31/mysite
def warm_photo_images(sender, instance, **kwargs):

    photo_img_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='gallery_photo',
        image_attr='image'
    )
    photo_img_warmer.warm()
def warm_model_background_images(model: models.Model):
    warmer = VersatileImageFieldWarmer(
        instance_or_queryset=model.objects.all(),
        rendition_key_set='background_images',
        image_attr='background_image',
        verbose=True)
    num_created, failed_to_create = warmer.warm()
    log_failed_images(failed_to_create)
def warm_model_background_images(model: models.Model):
    warmer = VersatileImageFieldWarmer(
        instance_or_queryset=model.objects.all(),
        rendition_key_set='background_images',
        image_attr='background_image',
        verbose=True)
    num_created, failed_to_create = warmer.warm()
    log_failed_images(failed_to_create)
コード例 #22
0
def warm_attachment_thumbnails(sender, instance, **kwargs):
    if not instance.file or not settings.CREATE_IMAGE_THUMBNAILS:
        return
    warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set="attachment_square",
        image_attr="file",
    )
    num_created, failed_to_create = warmer.warm()
コード例 #23
0
ファイル: models.py プロジェクト: bdrumheller/api_v2
def warm_images(sender, instance, **kwargs):
    """Create all image size on POST"""
    if instance.image:
        image_warmer = VersatileImageFieldWarmer(
            instance_or_queryset=instance,
            rendition_key_set='image_sizes',
            image_attr='image'
        )
        image_warmer.warm()
コード例 #24
0
ファイル: models.py プロジェクト: marthaurion/blog_django
def warm_Post_first_image(sender, instance, **kwargs):
    first = instance.get_first_image()
    if first:
        post_img_warmer = VersatileImageFieldWarmer(
            instance_or_queryset=first,
            rendition_key_set='first_image',
            image_attr='full_image'
        )
        num_created, failed_to_create = post_img_warmer.warm()
コード例 #25
0
 def warm_skills(self):
     self.stdout.write('Skills thumbnails generation:')
     warmer = VersatileImageFieldWarmer(
         instance_or_queryset=SkillImage.objects.all(),
         rendition_key_set='skills',
         image_attr='image',
         verbose=True)
     num_created, failed_to_create = warmer.warm()
     self.log_failed_images(failed_to_create)
コード例 #26
0
 def warm_brand_logos(self):
     self.stdout.write("Brand logo thumbnails generation:")
     warmer = VersatileImageFieldWarmer(
         instance_or_queryset=Brand.objects.exclude(image=""),
         rendition_key_set="brands",
         image_attr="image",
         verbose=True,
     )
     _, failed_to_create = warmer.warm()
     self.log_failed_images(failed_to_create)
コード例 #27
0
 def warm_products(self):
     self.stdout.write("Products thumbnails generation:")
     warmer = VersatileImageFieldWarmer(
         instance_or_queryset=ProductMedia.objects.all(),
         rendition_key_set="products",
         image_attr="image",
         verbose=True,
     )
     num_created, failed_to_create = warmer.warm()
     self.log_failed_images(failed_to_create)
コード例 #28
0
 def warm_benefits_images(self):
     self.stdout.write("Benefit image thumbnails generation:")
     warmer = VersatileImageFieldWarmer(
         instance_or_queryset=Benefit.objects.all(),
         rendition_key_set="benefits",
         image_attr="image",
         verbose=True,
     )
     _, failed_to_create = warmer.warm()
     self.log_failed_images(failed_to_create)
コード例 #29
0
def warm_page_images(sender, instance, **kwargs):
    """
    Pre- warm post header
    """
    page_header_image_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='header',
        image_attr='page_header'
    )
    page_header_image_warmer.warm()
コード例 #30
0
ファイル: models.py プロジェクト: nickbel7/tedxntua2020
def warm_partner_images(sender, instance, **kwargs):
    '''Ensures images are created post-save.
    Image sizes are stored in base.VERSATILEIMAGEFIELD_RENDITION_KEY_SETS.
    Using a thumbnail__AxA rendition key, the image fits in a AxA rectangle by
    maintaining the aspect ratio.

    Documentation link:
    https://django-versatileimagefield.readthedocs.io/en/latest/overview.html#create-images-wherever-you-need-them
    '''

    img_warmer = VersatileImageFieldWarmer(instance_or_queryset=instance,
                                           rendition_key_set='Sizes',
                                           image_attr='image',
                                           verbose=True)
    num_created, failed_to_create = img_warmer.warm()
コード例 #31
0
def main(command, **kwargs):
    for model, attribute, key_set in MODELS:
        qs = model.objects.exclude(**{"{}__isnull".format(attribute): True})
        qs = qs.exclude(**{attribute: ""})
        warmer = VersatileImageFieldWarmer(
            instance_or_queryset=qs,
            rendition_key_set=key_set,
            image_attr=attribute,
            verbose=True,
        )
        command.stdout.write("Creating images for {} / {}".format(
            model.__name__, attribute))
        num_created, failed_to_create = warmer.warm()
        command.stdout.write("  {} created, {} in error".format(
            num_created, len(failed_to_create)))
コード例 #32
0
def create_thumbnails(pk, model, size_set, image_attr=None):
    instance = model.objects.get(pk=pk)
    if not image_attr:
        image_attr = "image"
    image_instance = getattr(instance, image_attr)
    if image_instance.name == "":
        # There is no file, skip processing
        return
    warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance, rendition_key_set=size_set, image_attr=image_attr
    )
    logger.info("Creating thumbnails for  %s", pk)
    num_created, failed_to_create = warmer.warm()
    if num_created:
        logger.info("Created %d thumbnails", num_created)
    if failed_to_create:
        logger.error("Failed to generate thumbnails", extra={"paths": failed_to_create})
コード例 #33
0
ファイル: __init__.py プロジェクト: mirumee/saleor
def create_thumbnails(pk, model, size_set, image_attr=None):
    instance = model.objects.get(pk=pk)
    if not image_attr:
        image_attr = "image"
    image_instance = getattr(instance, image_attr)
    if image_instance.name == "":
        # There is no file, skip processing
        return
    warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance, rendition_key_set=size_set, image_attr=image_attr
    )
    logger.info("Creating thumbnails for  %s", pk)
    num_created, failed_to_create = warmer.warm()
    if num_created:
        logger.info("Created %d thumbnails", num_created)
    if failed_to_create:
        logger.error("Failed to generate thumbnails", extra={"paths": failed_to_create})
コード例 #34
0
    def test_image_warmer(self):
        """Ensure VersatileImageFieldWarmer works as advertised."""
        jpg_warmer = VersatileImageFieldWarmer(instance_or_queryset=self.jpg,
                                               rendition_key_set='test_set',
                                               image_attr='image')
        num_created, failed_to_create = jpg_warmer.warm()
        self.assertEqual(num_created, 5)
        all_imgs_warmer = VersatileImageFieldWarmer(
            instance_or_queryset=VersatileImageTestModel.objects.exclude(
                img_type='delete_test'),
            rendition_key_set=(
                ('test_thumb', 'thumbnail__100x100'),
                ('test_crop', 'crop__100x100'),
                ('test_invert', 'filters__invert__url'),
            ),
            image_attr='image',
            verbose=True)
        num_created, failed_to_create = all_imgs_warmer.warm()

        with self.assertRaises(ValueError):
            invalid_warmer = VersatileImageFieldWarmer(
                instance_or_queryset=['invalid'],
                rendition_key_set=(('test_thumb', 'thumbnail__10x10'), ),
                image_attr='image')
            del invalid_warmer
コード例 #35
0
ファイル: media.py プロジェクト: mayhem/funkwhale
def generate_thumbnails(delete):
    """
    Generate thumbnails for all images (avatars, covers, etc.).

    This can take a long time and generate a lot of I/O depending of the size
    of your library.
    """
    click.echo("Deleting existing thumbnails…")
    if delete:
        try:
            # FileSystemStorage doesn't support deleting a non-empty directory
            # so we reimplemented a method to do so
            default_storage.force_delete("__sized__")
        except AttributeError:
            # backends doesn't support directory deletion
            pass
    MODELS = [
        (Attachment, "file", "attachment_square"),
    ]
    for model, attribute, key_set in MODELS:
        click.echo("Generating thumbnails for {}.{}…".format(
            model._meta.label, attribute))
        qs = model.objects.exclude(**{"{}__isnull".format(attribute): True})
        qs = qs.exclude(**{attribute: ""})
        cache_key = "*{}{}*".format(
            settings.MEDIA_URL, vif_settings.VERSATILEIMAGEFIELD_SIZED_DIRNAME)
        entries = cache.keys(cache_key)
        if entries:
            click.echo("  Clearing {} cache entries: {}…".format(
                len(entries), cache_key))
            for keys in common_utils.batch(iter(entries)):
                cache.delete_many(keys)
        warmer = VersatileImageFieldWarmer(
            instance_or_queryset=qs,
            rendition_key_set=key_set,
            image_attr=attribute,
            verbose=True,
        )
        click.echo("  Creating images")
        num_created, failed_to_create = warmer.warm()
        click.echo("  {} created, {} in error".format(num_created,
                                                      len(failed_to_create)))
コード例 #36
0
    def handle(self, *args, **options):
        self.stdout.write("Creating and/or verifying profile photos...")
        num_created, failed_to_create = VersatileImageFieldWarmer(
            instance_or_queryset=Member.objects.all(),
            rendition_key_set='memberphoto',
            image_attr='photo',
            verbose=True).warm()

        if len(failed_to_create):
            image_list = "\n".join("- " + str(n) for n in failed_to_create)
            self.stderr.write("\nFailed to create {} images:\n".format(
                len(failed_to_create)) + image_list)
            sys.exit(1)
コード例 #37
0
    def save(self, *args, **kwargs):
        """
        This saves the Image, tries to prewarm VersatileImageField and deletes
        itself again if it fails. Ideally this would be done in clean(), but
        VersatileImageField cannot prewarm before it is saved and does not have
        a clean that checks if the warming is bound to succeed.

        """
        super().save(*args, **kwargs)
        image_warmer = VersatileImageFieldWarmer(instance_or_queryset=self,
                                                 rendition_key_set="gallery",
                                                 image_attr="file")

        num_created, failed_to_create = image_warmer.warm()
        if failed_to_create:

            self.delete()  # Hey! Look at me!

            logger.warning(
                "Prewarming during save() of %s failed. Deleting again." %
                self)
            raise ValidationError("Corrupt image. Deleting")
コード例 #38
0
def warm_post_images(sender, instance, **kwargs):
    """
    Pre-warm post header
    """
    post_header_image_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='header',
        image_attr='post_header'
    )
    post_header_image_warmer.warm()

    """
    Pre-warm post featured image
    """
    post_featured_image_warmer = VersatileImageFieldWarmer(
        instance_or_queryset=instance,
        rendition_key_set='featured',
        image_attr='post_featured_image'
    )
    post_featured_image_warmer.warm()
コード例 #39
0
def warm_set_photo_images(sender, instance, **kwargs):
    set_img_warmer = VersatileImageFieldWarmer(instance_or_queryset=instance,
                                               rendition_key_set='set_photo',
                                               image_attr='photo')
    num_created, failed_to_create = set_img_warmer.warm()
コード例 #40
0
ファイル: models.py プロジェクト: edliju1997/girox
def warm_post_cover_photo_images(sender, instance, **kwargs):
    """Ensures Post cover photo files are created post-save"""
    post_img_warmer = VersatileImageFieldWarmer(instance_or_queryset=instance,
                                                rendition_key_set='blog',
                                                image_attr='cover_photo')
    num_created, failed_to_create = post_img_warmer.warm()