diff options
Diffstat (limited to 'python-django-thumbnails.spec')
-rw-r--r-- | python-django-thumbnails.spec | 875 |
1 files changed, 875 insertions, 0 deletions
diff --git a/python-django-thumbnails.spec b/python-django-thumbnails.spec new file mode 100644 index 0000000..b3537f4 --- /dev/null +++ b/python-django-thumbnails.spec @@ -0,0 +1,875 @@ +%global _empty_manifest_terminate_build 0 +Name: python-django-thumbnails +Version: 0.7.0 +Release: 1 +Summary: A simple Django app to manage image/photo thumbnails. Supports remote/cloud storage systems like Amazon S3. +License: MIT +URL: https://github.com/ui/django-thumbnails +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/4a/3c/4e49626ba35a3d19e2df98aac96c84f098406888cae3c40259831463afed/django-thumbnails-0.7.0.tar.gz +BuildArch: noarch + +Requires: python3-django +Requires: python3-da-vinci +Requires: python3-shortuuid +Requires: python3-pillow +Requires: python3-redis + +%description +[](https://travis-ci.org/ui/django-thumbnails) + +Design: + +- Uses Django Storage API +- Uses flexible meta data store. Uses Redis as metadata store. +- Supports creating thumbnails in different formats, for example from + JPG to WEBP to reduce file size + +Supported image formats: + +- JPG/JPEG +- GIF +- PNG +- WEBP + +## Installation + +- Add thumbnails to INSTALLED_APPS in settings.py. +- Run python manage.py migrate to create database metadata backend. + +## Usage + +settings.py: + +```python +THUMBNAILS = { + 'METADATA': { + 'BACKEND': 'thumbnails.backends.metadata.DatabaseBackend', + }, + 'STORAGE': { + 'BACKEND': 'django.core.files.storage.FileSystemStorage', + # You can also use Amazon S3 or any other Django storage backends + } + 'SIZES': { + 'small': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 10, 'height': 10}, + {'PATH': 'thumbnails.processors.crop', 'width': 80, 'height': 80} + ], + 'POST_PROCESSORS': [ + { + 'PATH': 'thumbnails.post_processors.optimize', + 'png_command': 'optipng -force -o7 "%(filename)s"', + 'jpg_command': 'jpegoptim -f --strip-all "%(filename)s"', + }, + ], + }, + 'large': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20}, + {'PATH': 'thumbnails.processors.flip', 'direction': 'horizontal'} + ], + }, + 'watermarked': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20}, + # Only supports PNG. File must be of the same size with thumbnail (20 x 20 in this case) + {'PATH': 'thumbnails.processors.add_watermark', 'watermark_path': 'watermark.png'} + ], + } + } +} +``` + +If you prefer to use Redis as your metadata storage backend (for performance reasons): + +```python +THUMBNAILS = { + 'METADATA': { + 'PREFIX': 'thumbs', + 'BACKEND': 'thumbnails.backends.metadata.RedisBackend', + 'db': 2, + 'port': 6379, + 'host': 'localhost', + }, +} +``` + +## Image Processors + +`django-thumbnails` comes with a few builtin image processors: + +```python + # To use the following processors, put the arguments of processors in SIZES definition + thumbnails.processors.resize(width, height, method) ## `method` can be `stretch`, `fit` or `fill` + thumbnails.processors.rotate(degrees) + thumbnails.processors.flip(direction) + thumbnails.processors.crop(width, height, center) + thumbnails.processors.add_watermark(watermark_path) +``` + +Processors are applied sequentially in the same order of definition. + + +## Storage Backend + +New in version 0.5.0 is per field, customizable storage backend. If you want specific fields to use +a different storage backend, you can specify it directly when declaring the field. e.g: + +```python +class Food(models.Model): + image = ImageField(storage=FileSystemStorage(), upload_to='food') +``` + +Storage that is specified on field will be used instead of storage that is specified in the settings. + + +In python: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField() + + +food = Food.objects.latest('id') +food.image.thumbnails.all() +food.image.thumbnails.small # Generates "small" sized thumbnail +food.image.thumbnails.large # Generates "large" sized thumbnail +food.image.thumbnails.small.url # Returns "small" sized thumbnail URL +``` + +And here's how you'd use it in Django's template: + +```python +{{ food.image.thumbnails.small.url }} # Returns "small" sized thumbnail URL +``` + +Use resize_source_to to resize your image while saving it: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField(resize_source_to="medium") +``` + +Assuming medium is the size that you define in the settings. By passing +medium your saved image will be resized into medium's size + +Use pregenerated_sizes to save your thumbnails into storage backend +while saving it: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField(pregenerated_sizes=["small", "large", "medium") +``` + +When deleting an image, you can opt to retain thumbnails by doing this: +``` python +banner.image.delete(with_thumbnails=False) +``` + + +## Performance + +If you need to fetch multiple thumbnails at once, use the provided `fetch_thumbnails` function +for better performance. `fetch_thumbnails` uses Redis pipeline to retrieve +thumbnail metadata in one go, avoiding multiple round trips to Redis. + +```python +from thumbnails.field import fetch_thumbnails + +food_a = Food.objects.get(id=1) +food_b = Food.objects.get(id=2) + +fetch_thumbnails([food_a.image, food_b.image], ['small', 'large']) +``` + +This way, when we get thumbnails like thumbnail1.size_small or even +thumbnail1.all() we won't query to redis anymore. This feature is +currently only available for Redis metadata Backend. + +## Management Commands + +If you changed your size definition and want to regenerate the +thumbnails, use: + + python manage.py delete_thumbnails --model=app.Model --size=thumbnail_size_to_delete + +## Running Tests + +To run tests: + + `which django-admin.py` test thumbnails --settings=thumbnails.tests.settings --pythonpath=. + +## Changelog + +### Version 0.7.0 (2022-01-03) + +* Compatibility with django 4.0. Thanks @yosephbernandus! +* Improved setup.py. Thanks @Le09! + +### Version 0.6.0 (2021-05-28) + +* Added support for watermarking thumbnails. Thanks @marsha97! + +### Version 0.5.0 (2021-05-1) + +* You can now pass in `storage` kwarg into `ImageField` so you can specify different storage backends for different fields. Thanks @marsha97! +* Calling `image.delete(with_thumbnails=True)` will delete original image along with all thumbnails. Thanks @marsha97! + +### Version 0.4.0 (2021-01-08) + +- Support for Django >= 3.0. Thanks @christianciu! +- Added `pregenerated_sizes` to ImageField to allow thumbnails to be + pregenerated on upload. Thanks @marsha97! +- Thumbnails can be generated in different formats (e.g: JPG source + image to WEBP thumbnail). Thanks @yosephbernandus! + +### Version 0.3.2 + +- Fixed another bug in `fetch_thumbnails()` bug. Thanks @marsha97! + +### Version 0.3.1 + +- Fixed `fetch_thumbnails()` bug. Thanks @marsha97! + +### Version 0.3.0 + +- Added `fetch_thumbnails()` command to fetch multiple thumbnail + metadata from Redis. Thanks @marsha97! + +### Version 0.2.2 + +- Fixed `RedisBackend.get_thumbnail()` bug that may cause excessive + trips to Redis. Thanks @marsha97! + +### Version 0.2.1 + +- Add support for Django 1.11, 2.0 and 2.1 + +### Version 0.2.0 + +- Improves performance on fields that have a large number of + thumbnails +- Add support for Django 1.8, 1.9 and 1.10 + +### Version 0.1.3 + +- Fixes deprecation warning in Django 1.8 + +### Version 0.1.2 + +- Fixes deprecation warning in Django 1.8 + +### Version 0.1.1 + +- Use + [shortuuid](https://github.com/stochastic-technologies/shortuuid) + instead of uuid4() to be more space efficient + +### Version 0.1.0 + +- First public release + +As of February 2015, this library is suitable for production use and has +been used for more than a year in [Stamps](http://stamps.co.id), an +Indonesian based CRM/loyalty system. + + + + +%package -n python3-django-thumbnails +Summary: A simple Django app to manage image/photo thumbnails. Supports remote/cloud storage systems like Amazon S3. +Provides: python-django-thumbnails +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-django-thumbnails +[](https://travis-ci.org/ui/django-thumbnails) + +Design: + +- Uses Django Storage API +- Uses flexible meta data store. Uses Redis as metadata store. +- Supports creating thumbnails in different formats, for example from + JPG to WEBP to reduce file size + +Supported image formats: + +- JPG/JPEG +- GIF +- PNG +- WEBP + +## Installation + +- Add thumbnails to INSTALLED_APPS in settings.py. +- Run python manage.py migrate to create database metadata backend. + +## Usage + +settings.py: + +```python +THUMBNAILS = { + 'METADATA': { + 'BACKEND': 'thumbnails.backends.metadata.DatabaseBackend', + }, + 'STORAGE': { + 'BACKEND': 'django.core.files.storage.FileSystemStorage', + # You can also use Amazon S3 or any other Django storage backends + } + 'SIZES': { + 'small': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 10, 'height': 10}, + {'PATH': 'thumbnails.processors.crop', 'width': 80, 'height': 80} + ], + 'POST_PROCESSORS': [ + { + 'PATH': 'thumbnails.post_processors.optimize', + 'png_command': 'optipng -force -o7 "%(filename)s"', + 'jpg_command': 'jpegoptim -f --strip-all "%(filename)s"', + }, + ], + }, + 'large': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20}, + {'PATH': 'thumbnails.processors.flip', 'direction': 'horizontal'} + ], + }, + 'watermarked': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20}, + # Only supports PNG. File must be of the same size with thumbnail (20 x 20 in this case) + {'PATH': 'thumbnails.processors.add_watermark', 'watermark_path': 'watermark.png'} + ], + } + } +} +``` + +If you prefer to use Redis as your metadata storage backend (for performance reasons): + +```python +THUMBNAILS = { + 'METADATA': { + 'PREFIX': 'thumbs', + 'BACKEND': 'thumbnails.backends.metadata.RedisBackend', + 'db': 2, + 'port': 6379, + 'host': 'localhost', + }, +} +``` + +## Image Processors + +`django-thumbnails` comes with a few builtin image processors: + +```python + # To use the following processors, put the arguments of processors in SIZES definition + thumbnails.processors.resize(width, height, method) ## `method` can be `stretch`, `fit` or `fill` + thumbnails.processors.rotate(degrees) + thumbnails.processors.flip(direction) + thumbnails.processors.crop(width, height, center) + thumbnails.processors.add_watermark(watermark_path) +``` + +Processors are applied sequentially in the same order of definition. + + +## Storage Backend + +New in version 0.5.0 is per field, customizable storage backend. If you want specific fields to use +a different storage backend, you can specify it directly when declaring the field. e.g: + +```python +class Food(models.Model): + image = ImageField(storage=FileSystemStorage(), upload_to='food') +``` + +Storage that is specified on field will be used instead of storage that is specified in the settings. + + +In python: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField() + + +food = Food.objects.latest('id') +food.image.thumbnails.all() +food.image.thumbnails.small # Generates "small" sized thumbnail +food.image.thumbnails.large # Generates "large" sized thumbnail +food.image.thumbnails.small.url # Returns "small" sized thumbnail URL +``` + +And here's how you'd use it in Django's template: + +```python +{{ food.image.thumbnails.small.url }} # Returns "small" sized thumbnail URL +``` + +Use resize_source_to to resize your image while saving it: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField(resize_source_to="medium") +``` + +Assuming medium is the size that you define in the settings. By passing +medium your saved image will be resized into medium's size + +Use pregenerated_sizes to save your thumbnails into storage backend +while saving it: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField(pregenerated_sizes=["small", "large", "medium") +``` + +When deleting an image, you can opt to retain thumbnails by doing this: +``` python +banner.image.delete(with_thumbnails=False) +``` + + +## Performance + +If you need to fetch multiple thumbnails at once, use the provided `fetch_thumbnails` function +for better performance. `fetch_thumbnails` uses Redis pipeline to retrieve +thumbnail metadata in one go, avoiding multiple round trips to Redis. + +```python +from thumbnails.field import fetch_thumbnails + +food_a = Food.objects.get(id=1) +food_b = Food.objects.get(id=2) + +fetch_thumbnails([food_a.image, food_b.image], ['small', 'large']) +``` + +This way, when we get thumbnails like thumbnail1.size_small or even +thumbnail1.all() we won't query to redis anymore. This feature is +currently only available for Redis metadata Backend. + +## Management Commands + +If you changed your size definition and want to regenerate the +thumbnails, use: + + python manage.py delete_thumbnails --model=app.Model --size=thumbnail_size_to_delete + +## Running Tests + +To run tests: + + `which django-admin.py` test thumbnails --settings=thumbnails.tests.settings --pythonpath=. + +## Changelog + +### Version 0.7.0 (2022-01-03) + +* Compatibility with django 4.0. Thanks @yosephbernandus! +* Improved setup.py. Thanks @Le09! + +### Version 0.6.0 (2021-05-28) + +* Added support for watermarking thumbnails. Thanks @marsha97! + +### Version 0.5.0 (2021-05-1) + +* You can now pass in `storage` kwarg into `ImageField` so you can specify different storage backends for different fields. Thanks @marsha97! +* Calling `image.delete(with_thumbnails=True)` will delete original image along with all thumbnails. Thanks @marsha97! + +### Version 0.4.0 (2021-01-08) + +- Support for Django >= 3.0. Thanks @christianciu! +- Added `pregenerated_sizes` to ImageField to allow thumbnails to be + pregenerated on upload. Thanks @marsha97! +- Thumbnails can be generated in different formats (e.g: JPG source + image to WEBP thumbnail). Thanks @yosephbernandus! + +### Version 0.3.2 + +- Fixed another bug in `fetch_thumbnails()` bug. Thanks @marsha97! + +### Version 0.3.1 + +- Fixed `fetch_thumbnails()` bug. Thanks @marsha97! + +### Version 0.3.0 + +- Added `fetch_thumbnails()` command to fetch multiple thumbnail + metadata from Redis. Thanks @marsha97! + +### Version 0.2.2 + +- Fixed `RedisBackend.get_thumbnail()` bug that may cause excessive + trips to Redis. Thanks @marsha97! + +### Version 0.2.1 + +- Add support for Django 1.11, 2.0 and 2.1 + +### Version 0.2.0 + +- Improves performance on fields that have a large number of + thumbnails +- Add support for Django 1.8, 1.9 and 1.10 + +### Version 0.1.3 + +- Fixes deprecation warning in Django 1.8 + +### Version 0.1.2 + +- Fixes deprecation warning in Django 1.8 + +### Version 0.1.1 + +- Use + [shortuuid](https://github.com/stochastic-technologies/shortuuid) + instead of uuid4() to be more space efficient + +### Version 0.1.0 + +- First public release + +As of February 2015, this library is suitable for production use and has +been used for more than a year in [Stamps](http://stamps.co.id), an +Indonesian based CRM/loyalty system. + + + + +%package help +Summary: Development documents and examples for django-thumbnails +Provides: python3-django-thumbnails-doc +%description help +[](https://travis-ci.org/ui/django-thumbnails) + +Design: + +- Uses Django Storage API +- Uses flexible meta data store. Uses Redis as metadata store. +- Supports creating thumbnails in different formats, for example from + JPG to WEBP to reduce file size + +Supported image formats: + +- JPG/JPEG +- GIF +- PNG +- WEBP + +## Installation + +- Add thumbnails to INSTALLED_APPS in settings.py. +- Run python manage.py migrate to create database metadata backend. + +## Usage + +settings.py: + +```python +THUMBNAILS = { + 'METADATA': { + 'BACKEND': 'thumbnails.backends.metadata.DatabaseBackend', + }, + 'STORAGE': { + 'BACKEND': 'django.core.files.storage.FileSystemStorage', + # You can also use Amazon S3 or any other Django storage backends + } + 'SIZES': { + 'small': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 10, 'height': 10}, + {'PATH': 'thumbnails.processors.crop', 'width': 80, 'height': 80} + ], + 'POST_PROCESSORS': [ + { + 'PATH': 'thumbnails.post_processors.optimize', + 'png_command': 'optipng -force -o7 "%(filename)s"', + 'jpg_command': 'jpegoptim -f --strip-all "%(filename)s"', + }, + ], + }, + 'large': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20}, + {'PATH': 'thumbnails.processors.flip', 'direction': 'horizontal'} + ], + }, + 'watermarked': { + 'PROCESSORS': [ + {'PATH': 'thumbnails.processors.resize', 'width': 20, 'height': 20}, + # Only supports PNG. File must be of the same size with thumbnail (20 x 20 in this case) + {'PATH': 'thumbnails.processors.add_watermark', 'watermark_path': 'watermark.png'} + ], + } + } +} +``` + +If you prefer to use Redis as your metadata storage backend (for performance reasons): + +```python +THUMBNAILS = { + 'METADATA': { + 'PREFIX': 'thumbs', + 'BACKEND': 'thumbnails.backends.metadata.RedisBackend', + 'db': 2, + 'port': 6379, + 'host': 'localhost', + }, +} +``` + +## Image Processors + +`django-thumbnails` comes with a few builtin image processors: + +```python + # To use the following processors, put the arguments of processors in SIZES definition + thumbnails.processors.resize(width, height, method) ## `method` can be `stretch`, `fit` or `fill` + thumbnails.processors.rotate(degrees) + thumbnails.processors.flip(direction) + thumbnails.processors.crop(width, height, center) + thumbnails.processors.add_watermark(watermark_path) +``` + +Processors are applied sequentially in the same order of definition. + + +## Storage Backend + +New in version 0.5.0 is per field, customizable storage backend. If you want specific fields to use +a different storage backend, you can specify it directly when declaring the field. e.g: + +```python +class Food(models.Model): + image = ImageField(storage=FileSystemStorage(), upload_to='food') +``` + +Storage that is specified on field will be used instead of storage that is specified in the settings. + + +In python: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField() + + +food = Food.objects.latest('id') +food.image.thumbnails.all() +food.image.thumbnails.small # Generates "small" sized thumbnail +food.image.thumbnails.large # Generates "large" sized thumbnail +food.image.thumbnails.small.url # Returns "small" sized thumbnail URL +``` + +And here's how you'd use it in Django's template: + +```python +{{ food.image.thumbnails.small.url }} # Returns "small" sized thumbnail URL +``` + +Use resize_source_to to resize your image while saving it: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField(resize_source_to="medium") +``` + +Assuming medium is the size that you define in the settings. By passing +medium your saved image will be resized into medium's size + +Use pregenerated_sizes to save your thumbnails into storage backend +while saving it: + +```python +from thumbnails.fields import ImageField + +class Food(models.Model): + image = ImageField(pregenerated_sizes=["small", "large", "medium") +``` + +When deleting an image, you can opt to retain thumbnails by doing this: +``` python +banner.image.delete(with_thumbnails=False) +``` + + +## Performance + +If you need to fetch multiple thumbnails at once, use the provided `fetch_thumbnails` function +for better performance. `fetch_thumbnails` uses Redis pipeline to retrieve +thumbnail metadata in one go, avoiding multiple round trips to Redis. + +```python +from thumbnails.field import fetch_thumbnails + +food_a = Food.objects.get(id=1) +food_b = Food.objects.get(id=2) + +fetch_thumbnails([food_a.image, food_b.image], ['small', 'large']) +``` + +This way, when we get thumbnails like thumbnail1.size_small or even +thumbnail1.all() we won't query to redis anymore. This feature is +currently only available for Redis metadata Backend. + +## Management Commands + +If you changed your size definition and want to regenerate the +thumbnails, use: + + python manage.py delete_thumbnails --model=app.Model --size=thumbnail_size_to_delete + +## Running Tests + +To run tests: + + `which django-admin.py` test thumbnails --settings=thumbnails.tests.settings --pythonpath=. + +## Changelog + +### Version 0.7.0 (2022-01-03) + +* Compatibility with django 4.0. Thanks @yosephbernandus! +* Improved setup.py. Thanks @Le09! + +### Version 0.6.0 (2021-05-28) + +* Added support for watermarking thumbnails. Thanks @marsha97! + +### Version 0.5.0 (2021-05-1) + +* You can now pass in `storage` kwarg into `ImageField` so you can specify different storage backends for different fields. Thanks @marsha97! +* Calling `image.delete(with_thumbnails=True)` will delete original image along with all thumbnails. Thanks @marsha97! + +### Version 0.4.0 (2021-01-08) + +- Support for Django >= 3.0. Thanks @christianciu! +- Added `pregenerated_sizes` to ImageField to allow thumbnails to be + pregenerated on upload. Thanks @marsha97! +- Thumbnails can be generated in different formats (e.g: JPG source + image to WEBP thumbnail). Thanks @yosephbernandus! + +### Version 0.3.2 + +- Fixed another bug in `fetch_thumbnails()` bug. Thanks @marsha97! + +### Version 0.3.1 + +- Fixed `fetch_thumbnails()` bug. Thanks @marsha97! + +### Version 0.3.0 + +- Added `fetch_thumbnails()` command to fetch multiple thumbnail + metadata from Redis. Thanks @marsha97! + +### Version 0.2.2 + +- Fixed `RedisBackend.get_thumbnail()` bug that may cause excessive + trips to Redis. Thanks @marsha97! + +### Version 0.2.1 + +- Add support for Django 1.11, 2.0 and 2.1 + +### Version 0.2.0 + +- Improves performance on fields that have a large number of + thumbnails +- Add support for Django 1.8, 1.9 and 1.10 + +### Version 0.1.3 + +- Fixes deprecation warning in Django 1.8 + +### Version 0.1.2 + +- Fixes deprecation warning in Django 1.8 + +### Version 0.1.1 + +- Use + [shortuuid](https://github.com/stochastic-technologies/shortuuid) + instead of uuid4() to be more space efficient + +### Version 0.1.0 + +- First public release + +As of February 2015, this library is suitable for production use and has +been used for more than a year in [Stamps](http://stamps.co.id), an +Indonesian based CRM/loyalty system. + + + + +%prep +%autosetup -n django-thumbnails-0.7.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-django-thumbnails -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.0-1 +- Package Spec generated |