diff --git a/guardian/serializers.py b/guardian/serializers.py index f5f8588..14c4a6d 100644 --- a/guardian/serializers.py +++ b/guardian/serializers.py @@ -67,7 +67,7 @@ class CreateGuardianSerializer(serializers.ModelSerializer): family_name = serializers.CharField(max_length=100, required=False) dob = serializers.DateField(required=False) referral_code = serializers.CharField(max_length=100, required=False) - image = serializers.ImageField(required=False) + image = serializers.URLField(required=False) class Meta(object): """Meta info""" @@ -93,10 +93,15 @@ class CreateGuardianSerializer(serializers.ModelSerializer): user = User.objects.filter(username=self.context['user']).last() if user: """Save first and last name of guardian""" - if self.context.get('first_name') != '' and self.context.get('last_name') != '': - user.first_name = self.context.get('first_name', user.first_name) - user.last_name = self.context.get('last_name', user.last_name) - user.save() + if self.context.get('first_name') != '' and self.context.get('first_name') is not None: + user.first_name = self.context.get('first_name') + else: + user.first_name = user.first_name + if self.context.get('last_name') != '' and self.context.get('last_name') is not None: + user.last_name = self.context.get('last_name') + else: + user.last_name = user.last_name + user.save() """Create guardian data""" guardian, created = Guardian.objects.get_or_create(user=self.context['user']) if created: @@ -114,11 +119,7 @@ class CreateGuardianSerializer(serializers.ModelSerializer): guardian.passcode = validated_data.get('passcode', guardian.passcode) guardian.country_name = validated_data.get('country_name', guardian.country_name) guardian.referral_code_used = validated_data.get('referral_code_used', guardian.referral_code_used) - image = validated_data.pop('image', None) - if image: - filename = f"images/{image.name}" - image_url = upload_image_to_alibaba(image, filename) - guardian.image = image_url + guardian.image = validated_data.get('image', guardian.image) """Complete profile of the junior if below all data are filled""" complete_profile_field = all([guardian.phone, guardian.gender, guardian.country_name, guardian.dob, guardian.country_code, user.first_name, user.last_name, diff --git a/guardian/views.py b/guardian/views.py index 360f77d..4d9517f 100644 --- a/guardian/views.py +++ b/guardian/views.py @@ -51,10 +51,18 @@ class UpdateGuardianProfile(viewsets.ViewSet): def create(self, request, *args, **kwargs): """Create guardian profile""" + data = request.data + image = request.data.get('image') + image_url = '' + if image: + filename = f"images/{image.name}" + image_url = upload_image_to_alibaba(image, filename) + data = {"image":image_url} serializer = CreateGuardianSerializer(context={"user":request.user, - "first_name":request.data.get('first_name', ''), - "last_name": request.data.get('last_name',' ')}, - data=request.data) + "first_name":request.data.get('first_name'), + "last_name": request.data.get('last_name'), + "image":image_url}, + data=data) if serializer.is_valid(): """save serializer""" serializer.save() diff --git a/junior/serializers.py b/junior/serializers.py index 12e522f..28bbdc4 100644 --- a/junior/serializers.py +++ b/junior/serializers.py @@ -36,7 +36,7 @@ class CreateJuniorSerializer(serializers.ModelSerializer): dob = serializers.DateField(required=False) referral_code = serializers.CharField(max_length=100, required=False) guardian_code = ListCharField(required=False) - image = serializers.ImageField(required=False) + image = serializers.URLField(required=False) class Meta(object): """Meta info""" @@ -64,10 +64,15 @@ class CreateJuniorSerializer(serializers.ModelSerializer): user = User.objects.filter(username=self.context['user']).last() if user: """Save first and last name of junior""" - if self.context.get('first_name') != '' and self.context.get('last_name') != '': - user.first_name = self.context.get('first_name', user.first_name) - user.last_name = self.context.get('last_name', user.last_name) - user.save() + if self.context.get('first_name') != '' and self.context.get('first_name') is not None: + user.first_name = self.context.get('first_name') + else: + user.first_name = user.first_name + if self.context.get('last_name') != '' and self.context.get('last_name') is not None: + user.last_name = self.context.get('last_name') + else: + user.last_name = user.last_name + user.save() """Create junior data""" junior, created = Junior.objects.get_or_create(auth=self.context['user']) if created: @@ -89,10 +94,7 @@ class CreateJuniorSerializer(serializers.ModelSerializer): junior.phone = validated_data.get('phone', junior.phone) junior.country_code = validated_data.get('country_code', junior.country_code) junior.referral_code_used = validated_data.get('referral_code_used', junior.referral_code_used) - if image: - filename = f"images/{image.name}" - image_url = upload_image_to_alibaba(image, filename) - junior.image = image_url + junior.image = validated_data.get('image', junior.image) """Complete profile of the junior if below all data are filled""" complete_profile_field = all([junior.phone, junior.gender, junior.country_name, junior.image, junior.dob, junior.country_code, user.first_name, user.last_name, diff --git a/junior/views.py b/junior/views.py index 0658b2c..fa3b57c 100644 --- a/junior/views.py +++ b/junior/views.py @@ -7,6 +7,7 @@ from .serializers import CreateJuniorSerializer, JuniorDetailListSerializer from guardian.models import Guardian from base.messages import ERROR_CODE, SUCCESS_CODE from account.utils import custom_response, custom_error_response +from guardian.utils import upload_image_to_alibaba # Create your views here. class UpdateJuniorProfile(viewsets.ViewSet): """Update junior profile""" @@ -16,10 +17,18 @@ class UpdateJuniorProfile(viewsets.ViewSet): def create(self, request, *args, **kwargs): """Use CreateJuniorSerializer""" - serializer = CreateJuniorSerializer(context={"user":request.user, - "first_name":request.data.get('first_name', ''), - "last_name": request.data.get('last_name',' ')}, - data=request.data) + request_data = request.data + image = request.data.get('image') + image_url = '' + if image: + filename = f"images/{image.name}" + image_url = upload_image_to_alibaba(image, filename) + request_data = {"image": image_url} + serializer = CreateJuniorSerializer(context={"user":request.user, "image":image_url, + "first_name": request.data.get('first_name'), + "last_name": request.data.get('last_name') + }, + data=request_data) if serializer.is_valid(): """save serializer""" serializer.save()