pp upload: image verification using serializers
This commit is contained in:
parent
68df50cbeb
commit
b66088fe69
@ -85,7 +85,7 @@ export default class extends AbstractAuthentificateView
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let form_data = new FormData();
|
let form_data = new FormData();
|
||||||
form_data.append("file", avatar.files[0]);
|
form_data.append("avatar", avatar.files[0]);
|
||||||
await client.me.change_avatar(form_data);
|
await client.me.change_avatar(form_data);
|
||||||
this.display_avatar();
|
this.display_avatar();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from .models import ProfileModel
|
from .models import ProfileModel
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
class ProfileSerializer(serializers.ModelSerializer):
|
class ProfileSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
@ -9,3 +10,11 @@ class ProfileSerializer(serializers.ModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = ProfileModel
|
model = ProfileModel
|
||||||
fields = ["username", "avatar", "user_id"]
|
fields = ["username", "avatar", "user_id"]
|
||||||
|
|
||||||
|
def validate_avatar(self, value):
|
||||||
|
'''
|
||||||
|
Check that the image is not too large
|
||||||
|
'''
|
||||||
|
if value.size > settings.PROFILE_PICTURE_MAX_SIZE:
|
||||||
|
raise serializers.ValidationError('Image is too large.');
|
||||||
|
return value;
|
||||||
|
@ -8,8 +8,6 @@ from rest_framework.authentication import SessionAuthentication
|
|||||||
from django.http import HttpRequest
|
from django.http import HttpRequest
|
||||||
from django.db.models import QuerySet
|
from django.db.models import QuerySet
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.files.uploadedfile import InMemoryUploadedFile
|
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
from .serializers import ProfileSerializer
|
from .serializers import ProfileSerializer
|
||||||
from .models import ProfileModel
|
from .models import ProfileModel
|
||||||
@ -56,9 +54,11 @@ class MyProfileViewSet(viewsets.ModelViewSet):
|
|||||||
return obj
|
return obj
|
||||||
|
|
||||||
def perform_update(self, serializer, pk=None):
|
def perform_update(self, serializer, pk=None):
|
||||||
profile: ProfileModel = self.get_object()
|
serializer.is_valid(raise_exception=True);
|
||||||
avatar : InMemoryUploadedFile = self.request.data.get("file", None)
|
profile: ProfileModel = self.get_object();
|
||||||
if (avatar is not None and avatar.size <= settings.PROFILE_PICTURE_MAX_SIZE):
|
avatar = serializer.validated_data.get('avatar');
|
||||||
|
|
||||||
|
if (avatar is not None):
|
||||||
if (profile.avatar.name != "./profiles/static/avatars/default.avif"):
|
if (profile.avatar.name != "./profiles/static/avatars/default.avif"):
|
||||||
profile.avatar.storage.delete(profile.avatar.name)
|
profile.avatar.storage.delete(profile.avatar.name)
|
||||||
profile.avatar = avatar
|
profile.avatar = avatar
|
||||||
|
Loading…
Reference in New Issue
Block a user