- About Pinax
- Important Links
- Overview
- Documentation
- Change Log
- Contribute
- Code of Conduct
- Connect with Pinax
- License
Pinax is an open-source platform built on the Django Web Framework. It is an ecosystem of reusable Django apps, themes, and starter project templates. This collection can be found at http://pinaxproject.com.
Where you can find what you need:
- Releases: published to PyPI or tagged in app repos in the Pinax GitHub organization
- Global documentation: Pinax documentation website
- App specific documentation: app repos in the Pinax GitHub organization
- Support information: SUPPORT.md file in the Pinax default community health file repo
- Contributing information: CONTRIBUTING.md file in the Pinax default community health file repo
- Current and historical release docs: Pinax Wiki
pinax-images
is an app for managing collections of images associated with any content object.
django-appconf>=1.0.1
django-imagekit>=3.2.7
pilkit>=1.1.13
pillow>=3.3.0
pytz>=2016.6.1
Django / Python | 3.6 | 3.7 | 3.8 | 3.9 | 3.10 |
---|---|---|---|---|---|
2.2 | * | * | * | * | * |
3.2 | * | * | * | * | * |
To install pinax-images:
$ pip install pinax-images
Add pinax.images
to your INSTALLED_APPS
setting:
INSTALLED_APPS = [
# other apps
"pinax.images",
]
pinax-images
-specific settings can be found in the Settings section.
Add pinax.images.urls
to your project urlpatterns:
urlpatterns = [
# other urls
url(r"^ajax/images/", include("pinax.images.urls", namespace="pinax_images")),
]
Adding image collection functionality to your application!
First, add a OneToOneField
on your content object to ImageSet
::
from pinax.images.models import ImageSet
class YourModel():
# other fields
image_set = models.OneToOneField(ImageSet)
In your view for creating your content object, you should create a new ImageSet for each new content object:
class ObjectCreateView(CreateView):
def form_valid(self, form):
form.instance.image_set = ImageSet.objects.create(created_by=self.request.user)
return super(CloudSpottingCreateView, self).form_valid(form)
Finally, you'll want to include a snippet like this wherever you want the image panel to appear (if you are using the associated pinax-images-panel ReactJS frontend):
{% if image_set %}
{% url "pinax_images:imageset_upload" image_set.pk as upload_url %}
{% else %}
{% url "pinax_images:imageset_new_upload" as upload_url %}
{% endif %}
<div id="image-panel" data-images-url="{% if image_set %}{% url "pinax_images:imageset_detail" image_set.pk %}{% endif %}"
data-upload-url="{{ upload_url }}"
data-image-set-id="{{ image_set.pk }}">
</div>
The following settings allow you to specify the behavior of pinax-images
in
your project.
By default pinax-images
maintains four thumbnail specifications for thumbnail generation of uploaded images.
These specifications (shown below) are located in pinax/images/specs.py
.
PINAX_IMAGES_THUMBNAIL_SPEC = "pinax.images.specs.ImageThumbnail"
PINAX_IMAGES_LIST_THUMBNAIL_SPEC = "pinax.images.specs.ImageListThumbnail"
PINAX_IMAGES_SMALL_THUMBNAIL_SPEC = "pinax.images.specs.ImageSmallThumbnail"
PINAX_IMAGES_MEDIUM_THUMBNAIL_SPEC = "pinax.images.specs.ImageMediumThumbnail"
You can customize thumbnailing options by creating your own specification class inheriting from ImageSpec
:
from imagekit import ImageSpec
from pilkit.processors import ResizeToFit
class MyCustomImageThumbnail(ImageSpec):
processors = [ResizeToFit(800, 600)]
format = "JPEG"
options = {"quality": 90}
and overriding pinax-image specs in your application settings.py
::
PINAX_IMAGES_THUMBNAIL_SPEC = "{{my_app}}.specs.MyCustomImageThumbnail"
- Add Python 3.9 and 3.10 support along with Django 3.2
- Droppped Django 3.1
- Handled deprecation and some general modernizations
- Updated packaging
- Drop Django 1.11, 2.0, and 2.1, and Python 2,7, 3.4, and 3.5 support
- Add Django 2.2 and 3.0, and Python 3.6, 3.7, and 3.8 support
- Update packaging configs
- Direct users to community resources
- Use format_html() to escape html tags in admin preview
- Standardize documentation, badges
- Remove django-appconf from setup.py
install_requires
- Add third-party libs for isort-ing
- Add trove classifiers
- Add Django 2.0 compatibility testing
- Drop Django 1.8, 1.9, 1.10 and Python 3.3 support
- Convert CI and coverage to CircleCi and CodeCov
- Add PyPi-compatible long description
- Move documentation to README.md
- Move documentation to README.md
- Change
upload_to
path to have the image set PK
- Only how thumbnail if one exists
-
Revise access permissions for some views:
- ImageSet detail view now accessible by any authenticated user
- Image delete view now accessible only by image owner.
- Image "toggle primary" view now accessible only by image owner.
- Update version for Pinax 16.04 release
- Improve documentation
- Make DUA an optional requirement PR #14
- add Pillow to install requires
- initial release
Contributing information can be found in the Pinax community health file repo.
In order to foster a kind, inclusive, and harassment-free community, the Pinax Project has a Code of Conduct. We ask you to treat everyone as a smart human programmer that shares an interest in Python, Django, and Pinax with you.
For updates and news regarding the Pinax Project, please follow us on Twitter @pinaxproject and check out our Pinax Project blog.
Copyright (c) 2012-present James Tauber and contributors under the MIT license.