Skip to content

Commit 66e0385

Browse files
Added image api
1 parent 7d1cca4 commit 66e0385

File tree

4 files changed

+68
-1
lines changed

4 files changed

+68
-1
lines changed

nxtbn/admin_schema.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from nxtbn.cart.admin_query import AdminCartQuery
44
from nxtbn.core.admin_mutation import CoreMutation
55
from nxtbn.core.admin_queries import AdminCoreQuery
6+
from nxtbn.filemanager.admin_queries import ImageQuery
67
from nxtbn.order.admin_mutation import AdminOrderMutation
78
from nxtbn.payment.admin_queries import AdminPaymentQuery
89
from nxtbn.product.admin_mutations import ProductMutation
@@ -15,7 +16,7 @@
1516

1617

1718

18-
class Query(ProductQuery, AdminOrderQuery, AdminCoreQuery, WarehouseQuery, AdminCartQuery, UserAdminQuery, PurchaseQuery, AdminPaymentQuery):
19+
class Query(ProductQuery, AdminOrderQuery, AdminCoreQuery, WarehouseQuery, AdminCartQuery, UserAdminQuery, PurchaseQuery, AdminPaymentQuery, ImageQuery):
1920
pass
2021

2122
class Mutation(AdminUserMutation, ProductMutation, CoreMutation, AdminOrderMutation):

nxtbn/filemanager/admin_queries.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from django.conf import settings
2+
import graphene
3+
from graphql import GraphQLError
4+
from graphene_django.filter import DjangoFilterConnectionField
5+
from nxtbn.filemanager.models import Image
6+
from nxtbn.filemanager.admin_types import ImageType
7+
8+
9+
class ImageQuery(graphene.ObjectType):
10+
images = DjangoFilterConnectionField(ImageType)
11+
image = graphene.Field(ImageType, id=graphene.ID(required=True))
12+
13+
def resolve_images(self, info, **kwargs):
14+
return Image.objects.all().order_by('-created_at')
15+
16+
def resolve_image(self, info, id):
17+
try:
18+
return Image.objects.get(id=id)
19+
except Image.DoesNotExist:
20+
return None

nxtbn/filemanager/admin_types.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from django.conf import settings
2+
import graphene
3+
from graphene_django import DjangoObjectType
4+
from graphene import relay
5+
from nxtbn.filemanager.models import Image
6+
7+
8+
class ImageType(DjangoObjectType):
9+
db_id = graphene.Int(source='id')
10+
image = graphene.String()
11+
image_xs = graphene.String()
12+
13+
def resolve_image(self, info):
14+
return self.get_image_url(info.context)
15+
16+
def resolve_image_xs(self, info):
17+
return self.get_image_xs_url(info.context)
18+
19+
class Meta:
20+
model = Image
21+
fields = (
22+
'id',
23+
'name',
24+
'image',
25+
'image_xs',
26+
'created_at',
27+
'last_modified',
28+
)
29+
interfaces = (relay.Node, )
30+
filter_fields = {
31+
'name': ['exact', 'icontains'],
32+
}

nxtbn/filemanager/models.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,20 @@ class Image(AbstractBaseModel):
1212
image_xs = models.ImageField(null=True, blank=True)
1313
image_alt_text = models.CharField(max_length=255)
1414

15+
def get_image_url(self,request):
16+
if self.image:
17+
return request.build_absolute_uri(self.image.url)
18+
return None
19+
20+
def get_image_xs_url(self,request):
21+
if self.image_xs:
22+
return request.build_absolute_uri(self.image_xs.url)
23+
24+
if self.image:
25+
return request.build_absolute_uri(self.image.url)
26+
27+
return None
28+
1529

1630
class Document(AbstractBaseModel):
1731
created_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='document_created')

0 commit comments

Comments
 (0)