# 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 grupos.models import Grupo
from tablas.models import Tabla
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 campotabla_data(request):
	if request.method == 'GET':
		id_grupo = request.GET.get('id_grupo')
		grupo = Grupo.objects.get(id_grupo=id_grupo)
		tabla = grupo.id_tabla
		conexion = tabla.id_conexion
		moduloconexionstring=conexion.username+"/"+conexion.password+"@"+conexion.host+":"+str(conexion.puerto)+"/"+conexion.esquema
		moduloconexion = cx_Oracle.connect(moduloconexionstring)
		cursormoduloconexion = moduloconexion.cursor()
		consulta_datos="SELECT "+grupo.campo+","+grupo.descripcion+" FROM "+tabla.nombre 
		try:
			cursormoduloconexion.execute(consulta_datos)
			response={}
			rta={}
			contenedor=[]
			contador=0
			for dato in cursormoduloconexion.fetchall():
				pruebacon={}
				pruebacon["valor"]=dato[0]
				pruebacon["campo_descripcion"]=dato[1]
				contenedor.append(pruebacon)
				contador=contador+1
			response['status']=0
			response['totalRows']=contador
			response['startRow']=0
			response['endRow']=contador-1
			response['data']=contenedor
			rta['response']=response
		except Exception, e:
			response={}
			rta={}
			contenedor=[]
			pruebacon={}
			response['status']= 3
			response['totalRows']=0
			response['startRow']=0
			response['endRow']=0
			pruebacon['mensaje']="No existen datos o el campo en la tabnla seleccionada"
			contenedor.append(pruebacon)
			response['data']=contenedor
			rta['response']=response
		return JSONResponse(rta)
	if request.method == 'POST':
		id_grupo = request.POST.get('id_grupo')
		grupo = Grupo.objects.get(id_grupo=id_grupo)
		tabla = grupo.id_tabla
		conexion = tabla.id_conexion
		moduloconexionstring=conexion.username+"/"+conexion.password+"@"+conexion.host+":"+str(conexion.puerto)+"/"+conexion.esquema
		moduloconexion = cx_Oracle.connect(moduloconexionstring)
		cursormoduloconexion = moduloconexion.cursor()
		consulta_datos="SELECT "+grupo.campo+","+grupo.descripcion+" FROM "+tabla.nombre 
		try:
			cursormoduloconexion.execute(consulta_datos)
			response={}
			rta={}
			contenedor=[]
			contador=0
			for dato in cursormoduloconexion.fetchall():
				pruebacon={}
				pruebacon["valor"]=dato[0]
				pruebacon["campo_descripcion"]=dato[1]
				contenedor.append(pruebacon)
				contador=contador+1
			response['status']=0
			response['totalRows']=contador
			response['startRow']=0
			response['endRow']=contador-1
			response['data']=contenedor
			rta['response']=response
		except Exception, e:
			response={}
			rta={}
			contenedor=[]
			pruebacon={}
			response['status']= 3
			response['totalRows']=0
			response['startRow']=0
			response['endRow']=0
			pruebacon['mensaje']="No existen datos o el campo en la tabla seleccionada"
			contenedor.append(pruebacon)
			response['data']=contenedor
			rta['response']=response
		return JSONResponse(rta)
