#!/usr/bin/env python

import os
import subprocess
import sys
import re
import datetime
from mechanize import Browser

pdfviewer = 'evince'
django_username = 'downloader'

from settings import *


def id_predicate(value):
    def _predicate(form):
        if 'id' in form.attrs:
            if form.attrs['id'] == value:
                return True
        return False
    return _predicate

def login2Admin(br):
    # Log in to the admin interface
    br.open(baseurl + 'admin/')
    assert br.viewing_html()
    sys.stderr.write("Viewing '%s'\n" % (br.title(), ))
    assert br.title() == "Log in | Django site admin"
    br.select_form(predicate=id_predicate('login-form'))
    # Browser passes through unknown attributes (including methods)
    # to the selected HTMLForm (from ClientForm).
    br["username"] = django_username  # (the method here is __setitem__)
    br["password"] = password  # (the method here is __setitem__)
    response2 = br.submit()  # submit current form

def getLaTeX(br, latex_file, ):
    br.open(baseurl + 'vouchers/generate/vouchers.tex')
    if br.viewing_html():
        print br.response().get_data()
        assert not br.viewing_html()
    latex_file.write(br.response().get_data())

if __name__ == '__main__':
    label = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M')
    texpath  = pathtpl % { 'label':label, 'ext':'tex' }
    pdfpath  = pathtpl % { 'label':label, 'ext':'pdf' }
    texdir, texfile = os.path.split(texpath)

    br = Browser()
    login2Admin(br)
    texfileobj = open(texpath, 'w')
    getLaTeX(br, texfileobj, )
    texfileobj.close()

    subprocess.check_call(['pdflatex', texfile], cwd=texdir)
    subprocess.check_call(['pdflatex', texfile], cwd=texdir)
    subprocess.check_call([pdfviewer, pdfpath])
