from sommitrealweird.bpcms.models import CSSDocument, Document, Folder
from django.http import Http404, HttpResponse
from django.shortcuts import render
from django.template import RequestContext, loader
import sys

def document_view(request, path = None):

    if path == None:
        raise Http404()

    folders = path.split("/")
    slug = None
    folder = None

    if folders != None:
        resfolder = None
        prevfolder = None
        for i,folder_name in enumerate(folders):
            try:
                if resfolder:
                    resfolder = Folder.objects.get(slug__exact=folder_name, parent__exact=resfolder)
                else:
                    resfolder = Folder.objects.get(slug__exact=folder_name, parent__isnull=True)
                resfolder = resfolder.id
            except:
                slug = folders[i]
                folders = folders[:i]
                break
        try:
            if resfolder != None:
                folder = Folder.objects.get(pk=resfolder)
        except:
            raise Http404("Badgers")

    if slug == None:
        slug = "index"

    if folder != None:
        try:
            if not request.user.is_authenticated:
                doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__exact=folder)
            else:

                doc = Document.objects.get(slug__exact=slug, folder__exact=folder)
        except:
            try:
                folder = Folder.objects.get(slug__exact=slug, parent__exact=folder)
                if not request.user.is_authenticated():
                    doc = Document.objects.get(slug__exact='index', islive__exact=True, folder__exact=folder)
                else:
                    doc = Document.objects.get(slug__exact='index', folder__exact=folder)
            except:
                raise Http404(folder + "/" + slug)
    else:
        try:
            if not request.user.is_authenticated:
                doc = Document.objects.get(slug__exact=slug, islive__exact=True, folder__isnull=True)
            else:
                doc = Document.objects.get(slug__exact=slug, folder__isnull=True)
        except:
            try:
                folder = Folder.objects.get(slug__exact=slug, parent__isnull=True)
                if not request.user.is_authenticated():
                    doc = Document.objects.get(slug__exact='index', islive__exact=True, folder__exact=folder)
                else:
                    doc = Document.objects.get(slug__exact='index', folder__exact=folder)
            except:
                raise Http404(slug)
    template_name = "bpcms/%s.html" %(doc.format,)
    c = {
            "content"   : doc.content,
            "title"     : doc.title,
            "extracss"  : doc.extracss.all(),
        }
    return render(request, template_name, c)

def css_view(request, slug):
    cssdoc = CSSDocument.objects.get(slug=slug)
    if not cssdoc:
        raise Http404()

    return HttpResponse(cssdoc.content, content_type="text/css")

