Advertisement
MaximCherchuk

Serializers

Aug 13th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.29 KB | None | 0 0
  1. from django.http import JsonResponse
  2. from django.shortcuts import render
  3.  
  4. from rest_framework import serializers
  5.  
  6. from yunojuno.apps.core.models import City
  7. from yunojuno.apps.profiles.models import FreelancerProfile, Discipline
  8. from yunojuno.apps.profiles.registration.forms.freelancer import \
  9.     FreelancerRegistrationForm
  10. from yunojuno.apps.users.models import User
  11.  
  12.  
  13. class FreelancerSerializer(serializers.Serializer):
  14.  
  15.     first_name = serializers.CharField()
  16.     last_name = serializers.CharField()
  17.     email = serializers.CharField()
  18.     password = serializers.CharField()
  19.     password_confirmation = serializers.CharField()
  20.  
  21.     city = serializers.ChoiceField(
  22.         choices=[city.id for city in City.objects.all()]
  23.     )
  24.     role = serializers.ChoiceField(
  25.         choices=[role.id for role in Discipline.objects.all()]
  26.     )
  27.  
  28.     def validate(self, attrs):
  29.         if attrs['password'] != attrs['password_confirmation']:
  30.             raise serializers.ValidationError("Passwords don't match")
  31.         return attrs
  32.  
  33.     def update(self, instance, validated_data):
  34.         return instance
  35.  
  36.     def create(self, validated_data):
  37.  
  38.         user = User.objects.create_user(
  39.             username=validated_data['email'],
  40.             first_name=validated_data['first_name'],
  41.             last_name=validated_data['last_name'],
  42.             email=validated_data['email'],
  43.             password=validated_data['password'],
  44.             user_type=User.USER_TYPE_FREELANCER,
  45.         )
  46.  
  47.         FreelancerProfile(
  48.             user=user,
  49.             role=Discipline.objects.get(id=validated_data['role']),
  50.             city=City.objects.get(id=1),
  51.         ).save()
  52.  
  53.         return user
  54.  
  55.  
  56. def freelancer_registration_view(request):
  57.     form = FreelancerRegistrationForm(request=request)
  58.  
  59.     if request.is_ajax():
  60.         data = request.POST.copy()
  61.         del data['password_confirmation']
  62.         freelancer_serializer = FreelancerSerializer(data=data)
  63.         if freelancer_serializer.is_valid():
  64.             user = freelancer_serializer.save()
  65.             return JsonResponse(freelancer_serializer.data)
  66.  
  67.     return render(
  68.         request,
  69.         'registration/freelancer_registration/freelancer_registration.html',
  70.         {
  71.             'form': form,
  72.         }
  73.     )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement