Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.http import JsonResponse
- from django.shortcuts import render
- from rest_framework import serializers
- from yunojuno.apps.core.models import City
- from yunojuno.apps.profiles.models import FreelancerProfile, Discipline
- from yunojuno.apps.profiles.registration.forms.freelancer import \
- FreelancerRegistrationForm
- from yunojuno.apps.users.models import User
- class FreelancerSerializer(serializers.Serializer):
- first_name = serializers.CharField()
- last_name = serializers.CharField()
- email = serializers.CharField()
- password = serializers.CharField()
- password_confirmation = serializers.CharField()
- city = serializers.ChoiceField(
- choices=[city.id for city in City.objects.all()]
- )
- role = serializers.ChoiceField(
- choices=[role.id for role in Discipline.objects.all()]
- )
- def validate(self, attrs):
- if attrs['password'] != attrs['password_confirmation']:
- raise serializers.ValidationError("Passwords don't match")
- return attrs
- def update(self, instance, validated_data):
- return instance
- def create(self, validated_data):
- user = User.objects.create_user(
- username=validated_data['email'],
- first_name=validated_data['first_name'],
- last_name=validated_data['last_name'],
- email=validated_data['email'],
- password=validated_data['password'],
- user_type=User.USER_TYPE_FREELANCER,
- )
- FreelancerProfile(
- user=user,
- role=Discipline.objects.get(id=validated_data['role']),
- city=City.objects.get(id=1),
- ).save()
- return user
- def freelancer_registration_view(request):
- form = FreelancerRegistrationForm(request=request)
- if request.is_ajax():
- data = request.POST.copy()
- del data['password_confirmation']
- freelancer_serializer = FreelancerSerializer(data=data)
- if freelancer_serializer.is_valid():
- user = freelancer_serializer.save()
- return JsonResponse(freelancer_serializer.data)
- return render(
- request,
- 'registration/freelancer_registration/freelancer_registration.html',
- {
- 'form': form,
- }
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement