pp upload: image verification using serializers
This commit is contained in:
parent
36aee6c881
commit
b6ebd9d326
@ -85,7 +85,7 @@ export default class extends AbstractAuthentificateView
|
||||
return;
|
||||
}
|
||||
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);
|
||||
this.display_avatar();
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
from rest_framework import serializers
|
||||
from .models import ProfileModel
|
||||
from django.conf import settings
|
||||
|
||||
class ProfileSerializer(serializers.ModelSerializer):
|
||||
|
||||
@ -9,3 +10,11 @@ class ProfileSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = ProfileModel
|
||||
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.db.models import QuerySet
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile
|
||||
from django.conf import settings
|
||||
|
||||
from .serializers import ProfileSerializer
|
||||
from .models import ProfileModel
|
||||
@ -56,9 +54,11 @@ class MyProfileViewSet(viewsets.ModelViewSet):
|
||||
return obj
|
||||
|
||||
def perform_update(self, serializer, pk=None):
|
||||
profile: ProfileModel = self.get_object()
|
||||
avatar : InMemoryUploadedFile = self.request.data.get("file", None)
|
||||
if (avatar is not None and avatar.size <= settings.PROFILE_PICTURE_MAX_SIZE):
|
||||
serializer.is_valid(raise_exception=True);
|
||||
profile: ProfileModel = self.get_object();
|
||||
avatar = serializer.validated_data.get('avatar');
|
||||
|
||||
if (avatar is not None):
|
||||
if (profile.avatar.name != "./profiles/static/avatars/default.avif"):
|
||||
profile.avatar.storage.delete(profile.avatar.name)
|
||||
profile.avatar = avatar
|
||||
|
Loading…
Reference in New Issue
Block a user