from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from django.template.loader import render_to_string
from testFiltros import paginas
from django.conf import settings
import platform, os
import pdfkit
import datetime
import json

def main(request):
    if request.method == 'GET':
        for key in list(request.session.keys()):
            del request.session[key]
        ip = get_ip_address(request)
        request.session["ip_address"] = ip
        return render(request,"main.html",{"ip":ip})

def get_ip_address(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip

def get_categorias(request):
    if request.method == 'POST':
        aux_date = str(datetime.datetime.now()).split(" ")
        hora = aux_date[1].split(".")[0]
        dia = aux_date[0].split("-")
        fecha = dia[2] + "/" + dia[1] + "/" + dia[0] + ", " + hora
        request.session['fecha'] = fecha

        id_cue = request.POST.get("id_cue")
        cats = paginas.get_categorias()
        pags = []
        for c in cats:
            pags.append((c,paginas.get_paginas(c)))
        request.session["id"] = id_cue
        return JsonResponse({'error':False,'paginas':pags,'contenido': render_to_string("evaluacion.html",{'id_cue':id_cue,'categorias':cats})})
    return JsonResponse({"error":True,"vista":"ENDPOINT INVÁLIDO"}, status=500)

def set_resultado(request):
    if request.method == 'POST':
        datos = []
        for d in request.POST.get("datos").split("||"):
            if d == "":
                continue
            aux = d.split("|")
            datos.append((aux[0],aux[1]))
        request.session["datos"] = datos
        return JsonResponse({"error":False,"vista":"OK"})
    return JsonResponse({"error":True,"vista":"ENDPOINT INVÁLIDO"}, status=500)

def descargar_pdf(request):
    if request.method == 'POST':
        if platform.system().lower()=='windows':
            static_path = os.path.join(settings.BASE_DIR, 'testFiltros\static')
        else:
            static_path = os.path.join(settings.BASE_DIR, 'testFiltros/static')
        path_css = str(settings.BASE_DIR).replace("\\","/")
        path_css = path_css + "/testFiltros/static"

        id_cue = request.session.get("id")
        ip_address = request.session.get("ip_address")
        fecha = request.session.get("fecha")
        datos = request.session.get("datos")
        print(datos)
        cont_aux = render_to_string("resultado.html",{'id_cue':id_cue,'ip':ip_address,'datos':datos, 'fecha':fecha})
        contenido = ""
        for line in cont_aux.split('\n'):
            if "/static" in line:
                line = line.replace('/static',path_css)
            contenido = contenido + line

        pdf = pdfkit.from_string(contenido, False, verbose=True, options={'encoding': 'UTF-8',"enable-local-file-access": True, 'margin-top': '0mm','margin-right': '0mm', 'margin-bottom': '0mm','margin-left': '0mm',})
        response = HttpResponse(pdf,content_type='application/pdf')
        response['Content-Disposition'] = 'attachment; filename="TEST.pdf"'
        return response
    return JsonResponse({"error":True,"vista":"ENDPOINT INVÁLIDO"}, status=500)