# 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 consola.models import Actividad,Conexion,Modulo,Transaccion,Workflow,Workflow_Transaccion,Tabla,Campo_Valor,Grupo,Campo_Cuenta,Concepto
from consola.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)


@csrf_exempt
def anho_list(request):
    da = time.time()
    mes = time.localtime(da)[0]
    return JSONResponse(mes)

@csrf_exempt
def vigencia_list(request):
    da = time.time()
    mes = time.localtime(da)[1]
    mesreal = "0"
    if(mes<10):
        mesreal = "0"+str(mes)
    else:
        mesreal = (mes)
    return JSONResponse(mesreal)

@csrf_exempt
def properties_list(request):
    if request.method == 'GET' or request.method == 'POST':
       nombre="nada"
       if request.method == 'GET':
        root = request.GET.get('root')
       else:
        root = request.POST.get('root')
       if root == "0":
        ruta="/home/egiraldo/InterfacesContables/app/conf/GWT/"
        config=open(ruta+"app-gwt.properties",'r')
        objeto=[]
        data={}
        posts=[]
        contenido=""
        nombre=""
        linea=config.readline()
        data['status'] = 0
        while linea!="":
            contenido1={}
            if linea.find("#") >= 0 or linea.find("---") >= 0:
                linea=config.readline()
            else:
                if(linea.find("name") >= 0):
                    contenido=linea
                    dato=contenido.split(":")
                    datosinsalto=dato[1]
                    datosinsalto=datosinsalto.strip('\n')
                    datosinsalto=datosinsalto.strip('"')
                    datosinsalto=datosinsalto.split('"')
                    nombre=datosinsalto[1]
                    contenido1["name"] = nombre
                    posts.append(contenido1)
            linea=config.readline()
        response={}
        data['data']=posts
        response['response']=data
        return JSONResponse(response)
       if root == "1":
        if request.method == 'GET':
            name = request.GET.get('name')
        else:
            name = request.POST.get('name')
        ruta="/home/egiraldo/InterfacesContables/app/conf/GWT/"
        config=open(ruta+"app-gwt.properties",'r')
        objeto=[]
        data={}
        posts=[]
        contenido=""
        nombre=""
        linea=config.readline()
        data['status'] = 0
        while linea!="":
            contenido1={} 
            if linea.find("#") >= 0 or linea.find("---") >= 0:
                linea=config.readline()
            else:
                if(linea.find("name") >= 0):
                    contenido=linea
                    dato=contenido.split(":")
                    datosinsalto=dato[1]
                    datosinsalto=datosinsalto.strip('\n')
                    datosinsalto=datosinsalto.strip('"')
                    datosinsalto=datosinsalto.split('"')
                    nombre=datosinsalto[1]
                    if nombre == name:  
                        linea=config.readline() 
                        contenido=linea
                        dato=contenido.split(":")
                        if len(dato)==3:
                            url=dato[2].strip('\n')
                            url=url.strip('"')
                        datosinsalto=dato[1]
                        datosinsalto=datosinsalto.strip('\n')
                        datosinsalto=datosinsalto.strip('"')
                        if(linea.find('"') >= 0):
                            datosinsalto=datosinsalto.split('"')
                            if len(dato)==3:
                                valor=datosinsalto[1]+":"+url
                            else:
                                valor=datosinsalto[1]
                        else:
                            if len(dato)==3:
                                valor=datosinsalto[1]+":"+url
                            else:
                                valor=datosinsalto[1]
                        linea=config.readline()
                        contenido=linea
                        dato=contenido.split(":")
                        datosinsalto=dato[1]
                        datosinsalto=datosinsalto.strip('\n')
                        datosinsalto=datosinsalto.strip('"')
                        datosinsalto=datosinsalto.split('"')
                        desc=datosinsalto[1]
                        linea=config.readline()
                        contenido=linea
                        dato=contenido.split(":")
                        datosinsalto=dato[1]
                        datosinsalto=datosinsalto.strip('\n')
                        datosinsalto=datosinsalto.strip('"')
                        datosinsalto=datosinsalto.split('"')
                        label=datosinsalto[1]
                        contenido1["name"] = nombre
                        contenido1["value"] = valor
                        contenido1["desc"] = desc
                        contenido1["label"] = label
                        posts.append(contenido1)
            linea=config.readline()
        response={}
        data['data']=posts
        response['response']=data
        return JSONResponse(response)
       ruta="/home/egiraldo/InterfacesContables/app/conf/GWT/"
       config=open(ruta+"app-gwt.properties",'r')
       objeto=[]
       data={}
       posts=[]
       contenido=""
       nombre=""
       valor=""
       desc=""
       label=""
       linea=config.readline()
       data['status'] = 0
       while linea!="":
        contenido1={} 
        if linea.find("#") >= 0 or linea.find("---") >= 0:
            linea=config.readline()
        else:
            if(linea.find("name") >= 0):
                contenido=linea
                dato=contenido.split(":")
                datosinsalto=dato[1]
                datosinsalto=datosinsalto.strip('\n')
                datosinsalto=datosinsalto.strip('"')
                datosinsalto=datosinsalto.split('"')
                nombre=datosinsalto[1] 
            elif(linea.find("value") >= 0):
                contenido=linea
                dato=contenido.split(":")
                if len(dato)==3:
                    url=dato[2].strip('\n')
                    url=url.strip('"')
                datosinsalto=dato[1]
                datosinsalto=datosinsalto.strip('\n')
                datosinsalto=datosinsalto.strip('"')
                if(linea.find('"') >= 0):
                    datosinsalto=datosinsalto.split('"')
                    if len(dato)==3:
                        valor=datosinsalto[1]+":"+url
                    else:
                        valor=datosinsalto[1]
                else:
                    if len(dato)==3:
                        valor=datosinsalto[1]+":"+url
                    else:
                        valor=datosinsalto[1]
            elif(linea.find("desc") >= 0):
                contenido=linea
                dato=contenido.split(":")
                datosinsalto=dato[1]
                datosinsalto=datosinsalto.strip('\n')
                datosinsalto=datosinsalto.strip('"')
                datosinsalto=datosinsalto.split('"')
                desc=datosinsalto[1]
            elif(linea.find("label") >= 0):
                contenido=linea
                datosinsalto=dato[1]
                datosinsalto=datosinsalto.strip('\n')
                datosinsalto=datosinsalto.strip('"')
                datosinsalto=datosinsalto.split('"')
                label=datosinsalto[1]
                contenido1["name"] = nombre
                contenido1["value"] = valor
                contenido1["desc"] = desc
                contenido1["label"] = label
                posts.append(contenido1)
        linea=config.readline()
        response={}
       data['data']=posts
       response['response']=data
       return JSONResponse(response)

@csrf_exempt
def actividad_list(request):
    if request.method == 'GET':
        actividades = Actividad.objects.all()
        serializer = ActividadSerializer(actividades, many=True)
        response={}
        total={}
        response['status']=0
        response['totalRows']=len(actividades)
        response['startRow']=0
        response['endRow']=len(actividades)-1
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)
    elif request.method == 'POST':
        actividades = Actividad.objects.all()
        serializer = ActividadSerializer(actividades, many=True)
        response={}
        total={}
        response['status']=0
        response['totalRows']=len(actividades)
        response['startRow']=0
        response['endRow']=len(actividades)-1
        response['data']=serializer.data
        total['response']=response
        return JSONResponse(total)

@csrf_exempt
def actvidad_detail(request, pk):
    """
    Retrieve, update or delete a code snippet.
    """
    try:
        actividad = Actividad.objects.get(pk=pk)
    except Actividad.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        serializer = ActividadSerializer(actividad)
        return JSONResponse(serializer.data)

    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serializer = ActividadSerializer(actividad, data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data)
        else:
            return JSONResponse(serializer.errors, status=400)

    elif request.method == 'DELETE':
        actividad.delete()
        return HttpResponse(status=204)
    
#----Modelo para Conexiones
@csrf_exempt
def conexion_list(request):
    if request.method == 'GET':
        actividades = Conexion.objects.all()
        serializer = ConexionSerializer(actividades, many=True)
        response={}
        response['response']=serializer.data
        return JSONResponse(response)
    elif request.method == 'POST':
        actividades = Conexion.objects.all()
        serializer = ConexionSerializer(actividades, many=True)
        return JSONResponse(serializer.data)

@csrf_exempt
def conexion_detail(request, pk):
    """
    Retrieve, update or delete a code snippet.
    """
    try:
        actividad = Conexion.objects.get(pk=pk)
    except Actividad.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        serializer = ConexionSerializer(actividad)
        return JSONResponse(serializer.data)

    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serializer = ConexionSerializer(actividad, data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data)
        else:
            return JSONResponse(serializer.errors, status=400)

    elif request.method == 'DELETE':
        actividad.delete()
        return HttpResponse(status=204)

#---Metodo para Modelo
@csrf_exempt
def modulo_list(request):
    if request.method == 'GET':
        actividades = Modulo.objects.all()
        serializer = ModuloSerializer(actividades, many=True)
        response={}
        response['response']=serializer.data
        return JSONResponse(response)
    elif request.method == 'POST':
        actividades = Modulo.objects.all()
        serializer = ModuloSerializer(actividades, many=True)
        return JSONResponse(serializer.data)
@csrf_exempt
def modulo_detail(request, pk):
    """
    Retrieve, update or delete a code snippet.
    """
    try:
        actividad = Modulo.objects.get(pk=pk)
    except Actividad.DoesNotExist:
        return HttpResponse(status=404)

    if request.method == 'GET':
        serializer = ModuloSerializer(actividad)
        return JSONResponse(serializer.data)

    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serializer = ModuloSerializer(actividad, data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(serializer.data)
        else:
            return JSONResponse(serializer.errors, status=400)

    elif request.method == 'DELETE':
        actividad.delete()
        return HttpResponse(status=204)

