from django.shortcuts import render as djrender
from tikz.models import Tikz
from mysrc.ajax import register_ajax


def render(request, template, dic):
    dic['ajax'] = ''
    if request.user.is_authenticated:
        dic['ajax'] = 'tikz'
        dic['cookie'] = 'yum'
    return djrender(request, template, dic)


def home(request):
    sets = {}
    for t in Tikz.objects.exclude(hide=True):
        sets[t.csr] = t.course
    return render(
        request,
        'tikz/home.html',
        {
            'sets': sets,
        },
    )

def recent(request):
    tikzs = Tikz.objects.all().order_by('-modified')[:10]
    return show(request, tikzs)

def load(request):
    from tikz.load import load
    dirs = [
        '/Users/saeta/Documents/Courses',
        '/Users/saeta/Documents/smbook/2022'
    ]
    for dir in dirs:
        load(dir)
    return recent(request)

def show(request, tikzs=None):
    if tikzs is None:
        tikzs = Tikz.objects.exclude(hide=True)
    if 'term' in request.GET:
        term = request.GET['term']
        tikzs = tikzs.filter(source__contains=term)
    imagesets = {}
    for t in tikzs:
        csr = t.csr
        if csr not in imagesets:
            imagesets[csr] = dict(course=t.course, images=[])

        imagesets[csr]['images'].append((str(t.id), t.html(width=250)))
    return render(request, 'tikz/pix.html', dict(images=imagesets))


def show_one(request, pk):
    image = Tikz.objects.get(id=pk)
    tprev, tnext = None, None
    for n in range(1, 11):
        pn, nn = max(0, pk - n), pk + n
        if tprev is None:
            try:
                tprev = Tikz.objects.get(id=pn)
            except:
                pass
        if tnext is None:
            try:
                tnext = Tikz.objects.get(id=nn)
            except:
                pass

    return render(request, 'tikz/pic.html', dict(image=image, tprev=tprev, tnext=tnext))


def show_course(request, course):
    lc = course.lower()
    if lc.startswith('p'):
        folder = f"/Users/saeta/Documents/Courses/{course}"
        qs = Tikz.objects.filter(folder__startswith=folder)
    elif lc == "book":
        qs = Tikz.objects.filter(folder__startswith='/Users/saeta/Documents/smbook')
    elif lc == "clinic":
        qs = Tikz.objects.filter(folder__contains='Clinic')
    else:
        qs = Tikz.objects.exclude(folder__startswith="/Users/saeta/Documents/Courses/")
    csr = qs[0].csr
    subset = qs.exclude(hide=True)
    if 'term' in request.GET:
        subset = subset.filter(source__contains=request.GET['term'])
    items = [(str(t.id), t.html(width=250)) for t in subset]
    images = {csr: dict(course=qs[0].course, images=items)}
    return render(request, 'tikz/pix.html', {'images': images})


@register_ajax()
def image(request, args):
    action = args['action']
    tz = Tikz.objects.get(id=int(args['pk']))
    d = dict(pk=tz.id, action=action)
    if action == 'hide':
        tz.hide = True
        tz.save()
        d['result'] = f"Hid image {tz.id}"
    elif action == 'delete':
        d['result'] = f"Deleted image {tz.id}"
        tz.delete()

    return d
