From 0675c4890312fe560d82f26824cbceaef49f92d5 Mon Sep 17 00:00:00 2001 From: Diego Calvo Date: Tue, 9 Feb 2021 14:55:42 +0100 Subject: [PATCH] create coop user with geo --- core/views.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/views.py b/core/views.py index ba56f15..4fa03e9 100644 --- a/core/views.py +++ b/core/views.py @@ -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