Metadata-Version: 2.1
Name: AX3-model-extras
Version: 1.0.3
Summary: Extras for AX3 models
Home-page: https://github.com/Axiacore/ax3-model-extras
Author: Axiacore
Author-email: info@axiacore.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
Requires-Dist: python-resize-image

# AX3 Model Extras

## Validate image size

If you want to validate the dimension and file size for images:

```
from ax3_model_extras.validators import FileSizeValidator, ImageDimensionValidator


class Post(models.Model):
    title = models.CharField()

    slug = models.SlugField()

    image = models.ImageField(
        validators=[ImageDimensionValidator([1920, 800]), FileSizeValidator(350)],
        help_text='JPG. 1920x800px. 350kb max.',
    )
```

If you want to validate one dimension, you have to send the other dimension with 0

```
from ax3_model_extras.validators import FileSizeValidator, ImageDimensionValidator


class Post(models.Model):
    title = models.CharField()

    slug = models.SlugField()

    image = models.ImageField(
        validators=[ImageDimensionValidator([1920, 0]), FileSizeValidator(350)],
        help_text='JPG. width=1920px. 350kb max.',
    )
```



## Improve file storage

If you want to improve the local file storage or use S3 upload:

```
from ax3_model_extras.storages import get_storage, get_upload_path


class Post(models.Model):
    title = models.CharField()

    slug = models.SlugField()

    image = models.ImageField(
        upload_to=get_upload_path,
        storage=get_storage(),
    )
```


## Optimize images before upload them.

Use as:

```
from ax3_model_extras.fields import OptimizedImageField


class Post(models.Model):
    title = models.CharField()

    slug = models.SlugField()

    image = OptimizedImageField()

```


If want to set the size of the image using the 'cover' method do:

```
image = OptimizedImageField(
    optimized_image_output_size=(1920, 800),
)
```


If want to set the size of the image using the 'thumbnail' method do:

```
image = OptimizedImageField(
    optimized_image_output_size=(1920, 800),
    optimized_image_resize_method='thumbnail',
)
```

Resize is done using https://pypi.org/project/python-resize-image/

Made by Axiacore.


