diff --git a/back_latienda/urls.py b/back_latienda/urls.py index 4e76212..d0251d5 100644 --- a/back_latienda/urls.py +++ b/back_latienda/urls.py @@ -36,6 +36,7 @@ urlpatterns = [ path('api/v1/load_coops/', core_views.load_coop_managers, name='coop-loader'), path('api/v1/load_products/', product_views.load_coop_products, name='product-loader'), path('api/v1/search_products/', product_views.product_search, name='product-search'), + path('api/v1/create_company_user/', core_views.create_company_user, name='create-company-user'), path('api/v1/my_user/', core_views.my_user, name='my-user'), path('api/v1/my_company/', company_views.my_company , name='my-company'), path('api/v1/my_products/', product_views.my_products, name='my-products'), diff --git a/core/views.py b/core/views.py index c496f57..ba56f15 100644 --- a/core/views.py +++ b/core/views.py @@ -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):