from 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, slug=None, folders=None):
    if folders == None and slug == None:
        raise Http404()

    folder = None

    if folders != None:
        folders = folders.split('/')
        resfolder = None
        for folder in folders:
            try:
                if resfolder:
                    resfolder = Folder.objects.get(slug__exact=folder, parent__exact=resfolder)
                else:
                    resfolder = Folder.objects.get(slug__exact=folder, parent__isnull=True)
                resfolder = resfolder.id
            except:
                raise Http404
        try:
            folder = Folder.objects.get(pk=resfolder)
        except:
            raise Http404

    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
    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:
            sys.stderr.write("Unexpected error:", sys.exc_info()[0])
            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
    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")

