create coop user endpoint

This commit is contained in:
Diego Calvo
2021-02-09 10:29:45 +01:00
parent 8223032ef7
commit 02037d5b43
2 changed files with 44 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ from django.contrib.auth import get_user_model
from django.core import serializers
from django.utils.http import urlsafe_base64_decode
from django.utils.encoding import force_text
from django.db import IntegrityError
from rest_framework import status
from rest_framework import viewsets
@@ -104,6 +105,48 @@ class UpdateUserView(UpdateAPIView):
serializer_class = core_serializers.UpdateUserSerializer
@api_view(['POST',])
@permission_classes([CustomUserPermissions,])
def create_company_user(request):
"""
Create non-validated company and manager user associated
"""
user_data = {
'email': request.data['user']['email'],
'password': request.data['user']['password']
}
company_data = {
'cif': request.data['company']['cif'],
'company_name': request.data['company']['company_name'],
'short_name': request.data['company']['short_name'],
'web_link': request.data['company']['web_link'],
'shop': request.data['company']['shop'],
'city': request.data['company']['city']
}
try:
user = models.CustomUser.objects.create(email=user_data['email'])
except IntegrityError as e:
return Response({"errors": {"details": str(e)}}, status=status.HTTP_409_CONFLICT)
try:
company = Company.objects.create(**company_data)
except Exception as e:
user.delete()
return Response({"errors": {"details": str(e)}})
user.set_password(user_data['password'])
user.company = company
user.role = 'COOP_MANAGER'
user.save()
company.creator = user
company.save()
serializer = core_serializers.CustomUserSerializer(user)
return Response(data=serializer.data,status=status.HTTP_201_CREATED)
@api_view(['GET',])
@permission_classes([IsAuthenticated,])
def my_user(request):