skillbox/server/books/schema/nodes/wagtail_image.py

45 lines
1.1 KiB
Python

import graphene
from graphene_django import DjangoObjectType
from graphene import relay
from wagtail.images.models import Image
from wagtail.images.views.serve import generate_image_url
def get_srcset(image: Image) -> str:
return (
f"{generate_image_url(image, 'width-160')} 160w, "
f"{generate_image_url(image, 'width-320')} 320w, "
f"{generate_image_url(image, 'width-800')} 800w, "
f"{generate_image_url(image, 'width-1600')} 1600w"
)
def get_src(image: Image) -> str:
return generate_image_url(image, f'width-{min(3840, image.width)}')
class WagtailImageNode(DjangoObjectType):
class Meta:
model = Image
fields = [
"title",
"width",
"height",
]
interfaces = (relay.Node,)
src = graphene.String()
alt = graphene.String()
srcset = graphene.String()
def resolve_src(self, info):
return get_src(self)
def resolve_alt(self, info):
return self.title
def resolve_srcset(self, info):
return get_srcset(self)