def navigation(environ,start_response):
    db, dbname, path_components, q = wsgi_response(environ,start_response)
    path = os.getcwd().replace('functions/', '')
    obj = db[path_components]
    print >> sys.stderr, "OBJ", obj.philo_type
    if obj.philo_type == 'doc' and q['doc_page']:
        page_text = f.get_page_text(db, obj.philo_id[0], q['doc_page'], obj.filename, path, q['byte'])
        if page_text:
            doc_id = str(obj.philo_id[0]) + ' %'
            prev_page, next_page = get_neighboring_pages(db, doc_id, q['doc_page'])    
            return render_template(obj=obj,page_text=page_text,prev_page=prev_page,next_page=next_page,
                                   dbname=dbname,current_page=q['doc_page'],f=f,navigate_doc=navigate_doc,
                                   db=db,q=q,template_name='pages.mako')
        else:
            path_components += ['2']
            obj = db[path_components]
    if has_pages(obj, db):
        page_num = get_page_num(obj,db)
        if page_num:
            page_text = f.get_page_text(db, obj.philo_id[0], page_num, obj.filename, path, '')
            if page_text:  ## In case the page does not contain any text
                doc_id = str(obj.philo_id[0]) + ' %'
                prev_page, next_page = get_neighboring_pages(db, doc_id, page_num)
                return render_template(obj=obj,page_text=page_text,prev_page=prev_page,next_page=next_page,
                                        dbname=dbname,current_page=page_num,f=f,navigate_doc=navigate_doc,
                                        db=db,q=q,template_name='pages.mako')
    if obj.philo_type == 'doc':
        return render_template(obj=obj,philo_id=obj.philo_id[0],dbname=dbname,f=f,navigate_doc=navigate_doc,
                       db=db,q=q,template_name='toc.mako')
    obj_text = f.get_text_obj(obj, path, query_args=q['byte'])
    #obj_text = obj_pager(db, obj, obj_text)  ## this creates virtual pages
    prev = ' '.join(obj.prev.split()[:7])
    next = ' '.join(obj.next.split()[:7])
    return render_template(obj=obj,philo_id=obj.philo_id[0],dbname=dbname,f=f,navigate_doc=navigate_doc,
                       db=db,q=q,obj_text=obj_text,prev=prev,next=next,template_name='object.mako')
def pagination(environ,start_response):
    db, dbname, path_components, q = wsgi_response(environ,start_response)
    path = os.getcwd().replace('functions/', '')
    doc_page = q['doc_page']
    philo_id = q['philo_id']
    filename = q['filename']
    bytes = q['byte']
    page_text = f.get_page_text(db, philo_id, doc_page, filename, path, bytes)
    prev_page, next_page = get_neighboring_pages(db, philo_id, doc_page)
    return render_template(page_text=page_text,db=db,dbname=dbname,current_page=doc_page,
                           prev_page=prev_page,next_page=next_page,pagination=pagination,
                           filename=filename, philo_id=philo_id,bytes=bytes,template_name="doc_page.mako")
#!/usr/bin/env python

import os
import sys
sys.path.append('..')
from functions.wsgi_handler import parse_cgi
from reports import get_neighboring_pages, render_template
from mako.template import Template
import functions as f
import json

    
if __name__ == "__main__":
    environ = os.environ
    environ["SCRIPT_FILENAME"] = environ["SCRIPT_FILENAME"].replace('scripts/go_to_page.py', '')
    path = os.getcwd().replace('scripts', '')
    db, path_components, q = parse_cgi(environ)
    doc_id = str(q['philo_id'].split()[0]) + ' %'
    philo_id = doc_id + " %"
    c = db.dbh.cursor()
    c.execute('select filename from toms where philo_type="doc" and philo_id like ?', (philo_id,))
    filename = c.fetchone()[0]
    page_text = f.get_page_text(db, doc_id, q['go_to_page'], filename, path, q['byte'])
    prev_page, next_page = get_neighboring_pages(db, doc_id, q['go_to_page'])
    print "Content-Type: text/html\n"
    print json.dumps([prev_page, next_page, q['go_to_page'], page_text.encode('utf-8', 'ignore')])