# Create your views here.
import os
import time
import cx_Oracle
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from tablas.models import Tabla
from conexiones.models import Conexion
from tablas.serializers import *
class JSONResponse(HttpResponse):
    """
    An HttpResponse that renders it's content into JSON.
    """
    def __init__(self, data, **kwargs):
        content = JSONRenderer().render(data)
        kwargs['content_type'] = 'application/json'
        super(JSONResponse, self).__init__(content, **kwargs)

#---Metodo para Modelo
@csrf_exempt
def tabla_list(request):
    if request.method == 'GET':
        id_tabla = request.GET.get('id_tabla')
    if request.method == 'POST':
        id_tabla = request.POST.get('id_tabla')
    #--Contenedor para respuesta JSON
    contenedor=[]
    if id_tabla is None:
        actividades=sorted(Tabla.objects.all(), key=lambda a: a.nombre)
        serializer = TablaSerializer(actividades, many=True)
    else:
        actividades = sorted(Tabla.objects.get(id_tabla=id_tabla), key=lambda a: a.nombre)
        serializer = TablaSerializer(actividades)
    response={}
    total={}
    response['status']=0
    response['totalRows']=len(serializer.data)
    response['startRow']=0
    response['endRow']=len(serializer.data)
    response['data']=serializer.data
    total['response']=response
    return JSONResponse(total)

@csrf_exempt
def tabla_ingresa(request):
    if request.method == 'GET':
        nombre = request.GET.get('nombre')
        descripcion = request.GET.get('descripcion')
        if descripcion is None:
            descripcion=" "
        id_conexion = request.GET.get('id_conexion')
        conexion = Conexion.objects.get(id_conexion=id_conexion)
        a=Tabla(nombre=nombre,descripcion=descripcion,id_conexion=conexion) 
        a.save() 
        conexiones = Tabla.objects.get(id_tabla=a.id_tabla)
        serializer = TablaSerializer(conexiones)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        nombre = request.POST.get('nombre')
        descripcion = request.POST.get('descripcion')
        if descripcion is None:
            descripcion=" "
        id_conexion = request.POST.get('id_conexion')
        conexion = Conexion.objects.get(id_conexion=id_conexion)
        a=Tabla(nombre=nombre,descripcion=descripcion,id_conexion=conexion) 
        a.save() 
        conexiones = Tabla.objects.get(id_tabla=a.id_tabla)
        serializer = TablaSerializer(conexiones)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def tabla_actualiza(request):
    if request.method == 'GET':
        id_tabla = request.GET.get('id_tabla')
        nombre = request.GET.get('nombre')
        descripcion = request.GET.get('descripcion')
        if descripcion is None:
            descripcion=" "
        id_conexion = request.GET.get('id_conexion')
        conexion = Conexion.objects.get(id_conexion=id_conexion)
        conexiones = Tabla.objects.get(id_tabla=id_tabla)
        conexiones.nombre=nombre
        conexiones.descripcion=descripcion
        conexiones.id_conexion=conexion
        conexiones.save()
        serializer = TablaSerializer(conexiones)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)
    if request.method == 'POST':
        id_tabla = request.POST.get('id_tabla')
        nombre = request.POST.get('nombre')
        descripcion = request.POST.get('descripcion')
        if descripcion is None:
            descripcion=" "
        id_conexion = request.POST.get('id_conexion')
        conexion = Conexion.objects.get(id_conexion=id_conexion)
        conexiones = Tabla.objects.get(id_tabla=id_tabla)
        conexiones.nombre=nombre
        conexiones.descripcion=descripcion
        conexiones.id_conexion=conexion
        conexiones.save()
        serializer = TablaSerializer(conexiones)
        response={}
        total={}
        response['status']=0
        response['totalRows']=1
        response['startRow']=0
        response['endRow']=0
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def tabla_elimina(request):
    if request.method == 'GET':
        id_conexion = request.GET.get('id_tabla')
        tabla = Tabla.objects.get(id_tabla=id_conexion)
        tabla.delete()
        borro={}
        devuelve={}
        borro['id_tabla']=id_conexion
        devuelve['response']=borro
        return JSONResponse(devuelve)
    if request.method == 'POST':
        id_conexion = request.POST.get('id_tabla')
        tabla = Tabla.objects.get(id_tabla=id_conexion)
        tabla.delete()
        borro={}
        devuelve={}
        borro['id_tabla']=id_conexion
        devuelve['response']=borro
        return JSONResponse(devuelve)

