264 lines
No EOL
8.6 KiB
Python
264 lines
No EOL
8.6 KiB
Python
from django.shortcuts import render
|
|
from django.http import JsonResponse
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django.db import IntegrityError
|
|
from django.forms.models import model_to_dict
|
|
from django.core import serializers
|
|
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
from rest_framework.decorators import api_view
|
|
import json
|
|
import requests
|
|
|
|
from .models import Well
|
|
from .serializers import WellSerializer
|
|
# Create your views here.
|
|
|
|
|
|
@api_view(['POST'])
|
|
def create_well(request):
|
|
try:
|
|
# return JsonResponse({
|
|
# "message": "Duplicate Record",
|
|
# "status": 409,
|
|
# },
|
|
# status = 409
|
|
# )
|
|
#if another formatting in request, try this:
|
|
'''
|
|
data = request.POST
|
|
new_well = data.dict() # change querydict to dict
|
|
'''
|
|
data = request.body.decode('utf-8')
|
|
serializer = WellSerializer(data=json.loads(data))
|
|
#serializer = WellSerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
serializer.save()
|
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
else:
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
except Exception as e:
|
|
print(e)
|
|
return Response({"error": "Internal Server Error"}, status=500)
|
|
# data = request.body.decode('utf-8')
|
|
# serializer = WellSerializer(data=json.loads(data))
|
|
# if serializer.is_valid():
|
|
# serializer.save()
|
|
# return JsonResponse(
|
|
# {
|
|
# "status": 200,
|
|
# "message": "OK",
|
|
# "created": serializer.data,
|
|
# },
|
|
# status = 200
|
|
# )
|
|
# #Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
# else:
|
|
# return JsonResponse(
|
|
# {
|
|
# "status": 400,
|
|
# "message": "Bad Request",
|
|
# },
|
|
# status = 400
|
|
# )
|
|
# new_well = json.loads(request.body.decode('utf-8'))
|
|
# created_well = Well.objects.create(**new_well)
|
|
# return JsonResponse({"data":[
|
|
# {
|
|
# "error": "OK",
|
|
# "created": new_well,
|
|
# "well_id": created_well.id
|
|
# },
|
|
# ]},
|
|
# status = 200
|
|
# )
|
|
|
|
@api_view(['GET'])
|
|
def send_well_by_well_id(request, obj_id):
|
|
try:
|
|
#well = Well.objects.filter(id=obj_id).values()[0]
|
|
#serialized_data = serializers.serialize('json', [well])
|
|
well = Well.objects.filter(id=obj_id).last()
|
|
if well is None:
|
|
return Response({"error": "Not Found"}, status=404)
|
|
serializer = WellSerializer(well)
|
|
return Response(serializer.data)
|
|
# return JsonResponse(
|
|
# {"well": serializer.data},
|
|
# status = 200
|
|
# )
|
|
except Exception as ex:
|
|
print(ex)
|
|
return Response({"error": "Internal Server Error"}, status=500)
|
|
|
|
@api_view(['GET'])
|
|
def send_wells(request):
|
|
try:
|
|
print("sending wells")
|
|
# to do: add owner
|
|
'''
|
|
raw_body = request.body
|
|
users = json.loads(raw_body.decode('utf-8'))["data"]
|
|
result = []
|
|
for well in wells:
|
|
for user in users:
|
|
if well["owner_id"] == user["id"]:
|
|
well_info = well.copy()
|
|
well_info.pop("owner_id", None)
|
|
well_info["user_info"] = user
|
|
result.append(well_info)
|
|
break
|
|
'''
|
|
wells = Well.objects.all()
|
|
serializer = WellSerializer(wells, many=True)
|
|
return Response(serializer.data)
|
|
return JsonResponse({"data": list(wells)},status=200)
|
|
except Exception as e:
|
|
print(e)
|
|
return Response({"error": "Bad Request"}, status=400)
|
|
|
|
@csrf_exempt
|
|
@api_view(['DELETE'])
|
|
def delete_well_by_well_id(request, obj_id):
|
|
try:
|
|
instance = Well.objects.get(id=obj_id, log_type=0)
|
|
instance.log_type = 1
|
|
instance.save()
|
|
return Response({"detail": f"Successfully updated log type for well {instance.license_code}"}, status=status.HTTP_200_OK)
|
|
except Well.DoesNotExist:
|
|
return Response({"error": "Not Found"}, status=status.HTTP_404_NOT_FOUND)
|
|
except Exception as e:
|
|
print(e)
|
|
return Response({"error": "Internal Server Error"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
|
|
# try:
|
|
# instance = Well.objects.get(id=obj_id, log_type=0)
|
|
# instance.log_type = 1
|
|
# instance.save()
|
|
# return JsonResponse({"data":[
|
|
# {
|
|
# "well": instance.license_code,
|
|
# "error": "OK",
|
|
# },
|
|
# ]},
|
|
# status = 200
|
|
# )
|
|
# except Exception as e:
|
|
# print(e)
|
|
# return JsonResponse({"data":[
|
|
# {"error": "Bad Request"}
|
|
# ]},
|
|
# status = 400
|
|
# )
|
|
|
|
@api_view(['PUT'])
|
|
def update_well_by_well_id(request, obj_id):
|
|
try:
|
|
instance = Well.objects.get(id=obj_id, log_type=0)
|
|
instance.log_type = 2
|
|
instance.save()
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
data["log_type"] = 0
|
|
serializer = WellSerializer(data=data)
|
|
if serializer.is_valid():
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
else:
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
except Well.DoesNotExist:
|
|
return Response({"error": "Not Found"}, status=status.HTTP_404_NOT_FOUND)
|
|
except Exception as e:
|
|
print(e)
|
|
return Response({"error": "Internal Server Error"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
# try:
|
|
# instance = Well.objects.order_by('-pk').get(pk=obj_id)
|
|
# instance.log_type = 2
|
|
# instance.save()
|
|
# new_well = json.loads(request.body.decode('utf-8'))
|
|
# created_well = Well.objects.create(**new_well)
|
|
|
|
# return JsonResponse({"data":[
|
|
# {
|
|
# "error": "OK",
|
|
# "created": new_well,
|
|
# "well_id": created_well.id
|
|
# },
|
|
# ]},
|
|
# status = 200
|
|
# )
|
|
|
|
# except Exception as e:
|
|
# if isinstance(e, IntegrityError):
|
|
# return JsonResponse({"data":[
|
|
# {
|
|
# "error": "Conflict",
|
|
# "message": "Duplicate Record",
|
|
# "status": 409,
|
|
# }
|
|
# ]},
|
|
# status = 409
|
|
# )
|
|
# print(e)
|
|
# return JsonResponse({"data":[
|
|
# {"error": "Bad Request",
|
|
# "status": 400
|
|
# },
|
|
# ]},
|
|
# status = 400
|
|
# )
|
|
@csrf_exempt
|
|
def edit_well_by_well_id(request, obj_id):
|
|
try:
|
|
instance = Well.objects.get(id=obj_id, log_type=0)
|
|
instance.log_type = 3
|
|
instance.save()
|
|
data = json.loads(request.body.decode('utf-8'))
|
|
data["log_type"] = 0
|
|
serializer = WellSerializer(data=data)
|
|
if serializer.is_valid():
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
else:
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
except Well.DoesNotExist:
|
|
return Response({"error": "Not Found"}, status=status.HTTP_404_NOT_FOUND)
|
|
except Exception as e:
|
|
print(e)
|
|
return Response({"error": "Internal Server Error"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
|
|
|
|
# try:
|
|
# instance = Well.objects.order_by('-pk').get(pk=obj_id)
|
|
# instance.log_type = 3
|
|
# instance.save()
|
|
# new_well = json.loads(request.body.decode('utf-8'))
|
|
# created_well = Well.objects.create(**new_well)
|
|
|
|
# return JsonResponse({"data":[
|
|
# {
|
|
# "error": "OK",
|
|
# "created": new_well,
|
|
# "well_id": created_well.id
|
|
# },
|
|
# ]},
|
|
# status = 200
|
|
# )
|
|
|
|
# except Exception as e:
|
|
# if isinstance(e, IntegrityError):
|
|
# return JsonResponse({"data":[
|
|
# {
|
|
# "error": "Conflict",
|
|
# "message": "Duplicate Record",
|
|
# "status": 409,
|
|
# }
|
|
# ]},
|
|
# status = 409
|
|
# )
|
|
# print(e)
|
|
# return JsonResponse({"data":[
|
|
# {"error": "Bad Request",
|
|
# "status": 400
|
|
# },
|
|
# ]},
|
|
# status = 400
|
|
# ) |