import html

from django.http import HttpResponse
from django.middleware.csrf import get_token
from django.shortcuts import render
from django.template import loader
from django.utils.html import format_html
from django.views import View

from .models import Post, Upload, Project

# Create your views here.
media_custom_endpoint = 'https://storage.benotx.one/media/'


def index(request):
    template = loader.get_template('home/index.html')
    context = {
        '': "",
        'media_custom_endpoint': media_custom_endpoint,
    }
    return HttpResponse(template.render(context, request))


def posts(request):
    posts = Post.objects.all()
    # for post in posts:
    #     post.description = format_html(post.description)
    template = loader.get_template('home/posts.html')
    context = {
        "posts": posts,
        'media_custom_endpoint': media_custom_endpoint,
    }
    return HttpResponse(template.render(context, request))


def privacy_policy(request):
    template = loader.get_template('home/privacy_policy.html')
    context = {
        '': "",
        'media_custom_endpoint': media_custom_endpoint,
    }
    return HttpResponse(template.render(context, request))


def get_post(request, id):
    post = Post.objects.get(id=id)
    # post.description = format_html(post.description)
    template = loader.get_template('home/post.html')
    context = {
        "post": post,
        'media_custom_endpoint': media_custom_endpoint,
    }
    return HttpResponse(template.render(context, request))
    # do something with this user


def get_profile(request):
    template = loader.get_template('home/profile.html')
    context = {
        '': "",
        'media_custom_endpoint': media_custom_endpoint,
    }
    return HttpResponse(template.render(context, request))


def get_about(request):
    template = loader.get_template('home/privacy_policy.html')
    context = {
        '': "",
    }
    return HttpResponse(template.render(context, request))


def get_projects(request):
    projects = Project.objects.all()
    context = {
        "projects": projects,
        'media_custom_endpoint': media_custom_endpoint,
    }
    template = loader.get_template('home/projects.html')
    return HttpResponse(template.render(context, request))

def get_project(request, id):
    project = Project.objects.get(id=id)
    # project.description = html.escape(format_html(project.description))
    template = loader.get_template('home/project.html')
    context = {
        "project": project,
        'media_custom_endpoint': media_custom_endpoint,
    }
    return HttpResponse(template.render(context, request))
    # do something with this user

class UploadView(View):
    def get(self, request):
        html = """
                <form method="post" enctype="multipart/form-data">
                  <input type='text' style='display:none;' value='%s' name='csrfmiddlewaretoken'/>
                  <input type="file" name="image" accept="image/*">
                  <button type="submit">Upload Image</button>
                </form>
            """ % (get_token(request))
        return HttpResponse(html)

    def post(self, request):
        image = request.FILES['image']
        public_uri = Upload.upload_image(image, image.name)
        return HttpResponse("<img src='%s'/>" % (public_uri))

def graph_view(request):
    template = loader.get_template('home/graph.html')
    context={}
    return HttpResponse(template.render(context,request))
