create coop user with geo

This commit is contained in:
Diego Calvo
2021-02-09 14:55:42 +01:00
parent 02037d5b43
commit 0675c48903

View File

@@ -11,6 +11,7 @@ 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 django.contrib.gis.geos import Point
from rest_framework import status
from rest_framework import viewsets
@@ -20,6 +21,7 @@ from rest_framework.generics import UpdateAPIView
from rest_framework.decorators import api_view, permission_classes
from companies.models import Company
from geo.models import City
from . import models
from . import serializers as core_serializers
@@ -121,7 +123,9 @@ def create_company_user(request):
'short_name': request.data['company']['short_name'],
'web_link': request.data['company']['web_link'],
'shop': request.data['company']['shop'],
'city': request.data['company']['city']
'city': request.data['company']['city'],
'geo': request.data['company']['geo'],
'address': request.data['company']['address']
}
try:
user = models.CustomUser.objects.create(email=user_data['email'])
@@ -129,10 +133,16 @@ def create_company_user(request):
return Response({"errors": {"details": str(e)}}, status=status.HTTP_409_CONFLICT)
try:
company = Company.objects.create(**company_data)
city = company_data.pop('city')
city = City.objects.get(name=city)
geo = company_data.pop('geo')
geo = Point(geo['lng'], geo['lat'])
company = Company.objects.create(**company_data, city=city, geo=geo)
except Exception as e:
user.delete()
return Response({"errors": {"details": str(e)}})
return Response({"errors": {"details": str(e)}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
user.set_password(user_data['password'])
user.company = company