Create custom renditions from django url fields
Project description
django-url-renditions
django-url-renditions allows to define and render renditions from django url fields. This works also pretty well with django-s3direct fields.
It comes with a Graphene Query that enable renditions in your GraphQL schema.
Install
pip install django-url-renditions
Add url_renditions to your INSTALLED_APPS
Define your model
from django.db import models
from url_renditions.fields import FileUrlWithRenditions
# django-url-renditions comes with a simple image resizer method.
# Look at the implementation if you need something more specific
from url_renditions.resize_image import ResizeImage
class Track(models.Model):
original_artwork = models.URLField()
artwork = FileUrlWithRenditions(
source='original_artwork',
use_job_runner=True, # if we want to queue the job with django_rq
renditions={
'small': ResizeImage('80x80'),
'medium': ResizeImage('300x300'),
}
)
That way, when a Track model get created with an original_artwork, artwork will be automatically polulated with two renditions: small and medium.
To access them, use:
r = my_track.artwork.rendition_set.get(name='small')
print('url:', r.href, 'width:', r.width, 'height:', r.height)
Graphql with Graphene
Add url_renditions.graphql_schema.Query to your root query.
import graphene
import url_renditions.graphql_schema # noqa
class Query(
...
url_renditions.graphql_schema.Query,
graphene.ObjectType):
pass
schema = graphene.Schema(query=Query)
Then when you ask for
{
track(id: "VHJhY2s6OA==") {
artwork {
renditions {
medium {
href
width
height
}
}
}
}
}
You get
{
"data": {
"track": {
"artwork": {
"renditions": {
"medium": {
"href": "https://images.unsplash.com/photo-1474314170901-f351b68f544f",
"width": 300,
"height": 300
}
}
}
}
}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-url-renditions-0.9.tar.gz.
File metadata
- Download URL: django-url-renditions-0.9.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.23.3 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72f4e024946ac11d8c12664e03d738aa3bc5af4a4a85259ca0361000587b200a
|
|
| MD5 |
46b43756bcbbb728f3503278c0a56a85
|
|
| BLAKE2b-256 |
0656e27bc7728c957afad17574ae6bdc2a2106af433b024a94984e10e6c1150e
|