mirror of
https://github.com/pinry/pinry.git
synced 2025-11-13 16:45:41 +01:00
Feature: Use new image-creation api instead of the old
This commit is contained in:
@@ -32,6 +32,7 @@ class ImageSerializer(serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Image
|
model = Image
|
||||||
fields = (
|
fields = (
|
||||||
|
"id",
|
||||||
"image",
|
"image",
|
||||||
"width",
|
"width",
|
||||||
"height",
|
"height",
|
||||||
@@ -42,9 +43,9 @@ class ImageSerializer(serializers.ModelSerializer):
|
|||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
"width": {"read_only": True},
|
"width": {"read_only": True},
|
||||||
"height": {"read_only": True},
|
"height": {"read_only": True},
|
||||||
|
"image": {"read_only": True},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
standard = ThumbnailSerializer(read_only=True)
|
standard = ThumbnailSerializer(read_only=True)
|
||||||
thumbnail = ThumbnailSerializer(read_only=True)
|
thumbnail = ThumbnailSerializer(read_only=True)
|
||||||
square = ThumbnailSerializer(read_only=True)
|
square = ThumbnailSerializer(read_only=True)
|
||||||
@@ -74,9 +75,12 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
"description",
|
"description",
|
||||||
"referer",
|
"referer",
|
||||||
"image",
|
"image",
|
||||||
|
"image_by_id",
|
||||||
"tags",
|
"tags",
|
||||||
)
|
)
|
||||||
|
extra_kwargs = {
|
||||||
|
"submitter": {"read_only": True},
|
||||||
|
}
|
||||||
|
|
||||||
tags = serializers.SlugRelatedField(
|
tags = serializers.SlugRelatedField(
|
||||||
many=True,
|
many=True,
|
||||||
@@ -84,19 +88,22 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
queryset=Tag.objects.all(),
|
queryset=Tag.objects.all(),
|
||||||
slug_field="name",
|
slug_field="name",
|
||||||
)
|
)
|
||||||
image = ImageSerializer(required=False)
|
image = ImageSerializer(required=False, read_only=True)
|
||||||
|
image_by_id = serializers.PrimaryKeyRelatedField(
|
||||||
|
queryset=Image.objects.all(),
|
||||||
|
write_only=True,
|
||||||
|
)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
image_file = validated_data.pop('image')
|
submitter = self.context['request'].user
|
||||||
if validated_data['url']:
|
image = validated_data.pop("image_by_id")
|
||||||
|
if 'url' in validated_data and validated_data['url']:
|
||||||
image = Image.objects.create_for_url(
|
image = Image.objects.create_for_url(
|
||||||
validated_data['url'],
|
validated_data['url'],
|
||||||
validated_data['referer'],
|
validated_data['referer'],
|
||||||
)
|
)
|
||||||
else:
|
|
||||||
image = Image.objects.create(image=image_file['image'])
|
|
||||||
pin = Pin.objects.create(image=image, **validated_data)
|
|
||||||
tags = validated_data.pop('tag_list')
|
tags = validated_data.pop('tag_list')
|
||||||
|
pin = Pin.objects.create(submitter=submitter, image=image, **validated_data)
|
||||||
if tags:
|
if tags:
|
||||||
pin.tags.set(*tags)
|
pin.tags.set(*tags)
|
||||||
return pin
|
return pin
|
||||||
@@ -105,8 +112,5 @@ class PinSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
tags = validated_data.pop('tag_list')
|
tags = validated_data.pop('tag_list')
|
||||||
if tags:
|
if tags:
|
||||||
instance.tags.set(*tags)
|
instance.tags.set(*tags)
|
||||||
image_file = validated_data.pop('image', None)
|
validated_data.pop('image_id')
|
||||||
if image_file:
|
|
||||||
image = Image.objects.create(image=image_file['image'])
|
|
||||||
instance.image = image
|
|
||||||
return super(PinSerializer, self).update(instance, validated_data)
|
return super(PinSerializer, self).update(instance, validated_data)
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ class Image(BaseImage):
|
|||||||
|
|
||||||
class Pin(models.Model):
|
class Pin(models.Model):
|
||||||
submitter = models.ForeignKey(User)
|
submitter = models.ForeignKey(User)
|
||||||
url = models.URLField(null=True)
|
url = models.URLField(null=True, blank=True)
|
||||||
origin = models.URLField(null=True)
|
origin = models.URLField(null=True, blank=True)
|
||||||
referer = models.URLField(null=True)
|
referer = models.URLField(null=True, blank=True)
|
||||||
description = models.TextField(blank=True, null=True)
|
description = models.TextField(blank=True, null=True)
|
||||||
image = models.ForeignKey(Image, related_name='pin')
|
image = models.ForeignKey(Image, related_name='pin')
|
||||||
published = models.DateTimeField(auto_now_add=True)
|
published = models.DateTimeField(auto_now_add=True)
|
||||||
|
|||||||
@@ -16,6 +16,9 @@ class ImageViewSet(mixins.CreateModelMixin, GenericViewSet):
|
|||||||
queryset = Image.objects.all()
|
queryset = Image.objects.all()
|
||||||
serializer_class = api.ImageSerializer
|
serializer_class = api.ImageSerializer
|
||||||
|
|
||||||
|
def create(self, request, *args, **kwargs):
|
||||||
|
super(ImageViewSet, self).create(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class PinViewSet(viewsets.ModelViewSet):
|
class PinViewSet(viewsets.ModelViewSet):
|
||||||
queryset = Pin.objects.all()
|
queryset = Pin.objects.all()
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
|
|
||||||
$(window).load(function() {
|
$(window).load(function() {
|
||||||
|
var api_base = "/api/v2/";
|
||||||
|
|
||||||
var uploadedImage = false;
|
var uploadedImage = false;
|
||||||
var editedPin = null;
|
var editedPin = null;
|
||||||
|
|
||||||
@@ -99,8 +101,8 @@ $(window).load(function() {
|
|||||||
}
|
}
|
||||||
// Drag and drop upload
|
// Drag and drop upload
|
||||||
$('#pin-form-image-upload').dropzone({
|
$('#pin-form-image-upload').dropzone({
|
||||||
url: '/pins/create-image/',
|
url: api_base + "images/",
|
||||||
paramName: 'qqfile',
|
paramName: 'image',
|
||||||
parallelUploads: 1,
|
parallelUploads: 1,
|
||||||
uploadMultiple: false,
|
uploadMultiple: false,
|
||||||
maxFiles: 1,
|
maxFiles: 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user