#! /usr/bin/python2.2
#------------------------------------------------------------------------
# name:
# author: 		J Skinner
# Date Written:	
# Purpose:
# Notes
#------------------------------------------------------------------------
#------------------------   GLOBALS  ------------------------------------
DEBUG_MAIN = 0
DEBUG = 0
IS_CGI = 1
IS_DB = 1
#------------------------   IMPORTS  ------------------------------------
import string
import os
import sys
import cgi
import traceback
import access
#import cookie
from auth import Auth
from page import Page
from the_form import The_Form
from constants import *
#------------------------    GLOBALS   ----------------------------------
HEADER_BLOCK = '''\
Content-type: text/html
%(cookie)s
'''
#------------------------    CODE    ------------------------------------
def upload(db, auth, form_data):
    if form_data.filename:
        has_blob = 1
    else:
        has_blob = 0
        
    the_id = db.put('document_info', {'pub_date':form_data.pub_date,
        'title':form_data.title, 'short_desc':form_data.short_desc, 
        'long_desc':form_data.long_desc, 'has_blob':has_blob})
    if type(form_data.authors) is not type([]):
        db.put('doc_auth', {'document_id':str(the_id), 
            'author_id':str(form_data.authors)})
    else:
        for i in form_data.authors:
            db.put('doc_auth', {'doc_id':str(the_id), 'author_id':str(i)})
    
#    for i in [_i.strip() for _i in form_data.keywords.split(',')]:
#        try:
#            keyword_id = db.get('keywords', ['keyword_id'],
#                where='keyword="%s"'%i)
#        except db.NO_DATA:
#            keyword_id = db.put('keywords', {'keyword':i})
#        db.put('kw_doc', {'doc_id':the_id, 'keyword_id':keyword_id})
    print 'content-type: text/html'
    print
    print form_data.filename_name
    db.put('document_data', {'doc_id':the_id, 'the_doc':form_data.filename,
        'filename':form_data.filename_name})
    form_data.action = 'upload_success'
    return 1, UPLOAD_SUCCESS
def get_xtra_info(form):
    xtra_info = {}
    for i in form.keys():
        try:
            xtra_info[i] = form[i].value
    
        except:
            print 'content-type: text/html'
            print
            print form[i]
            print i
    if xtra_info != {}:
        return xtra_info
    else:
        return None
    
def main():
#    print 'Content-type: text/html'
#    print
    db = access.Access(dbname='pysocks', user='crypt')
    page_info = None
    form = cgi.FieldStorage()
    form_data = The_Form()
    form_data.get_values_from_form(form)
    auth = Auth(db, form_data)
    #status, page_id = auth.login_check()
    page_id = None
    xtra_info = get_xtra_info(form)
    if form_data.action == 'upload':
        res, page_id = upload(db, auth, form_data)
    elif form_data.action == 'download':
        the_page = Page(1, db, auth, page_info, xtra_info)
        return
    if form_data.action == 'show_author':
        page_id = 800
    if form.has_key('page') or form.has_key('action'):
        if page_id == None: page_id =form['page'].value
        the_page = Page(page_id, db, auth, page_info, xtra_info)
    else:
        # render the default page
        the_page = Page(1, db, auth, page_info, xtra_info)
    # output the actual page
    the_page.show()
#------------------------------------------------------------------------
if (DEBUG_MAIN):
    try:
        main()
    except SystemExit:
        pass
    except:
        # errMessage("an unkown error has occurred program terminating")
        sys.stderr = sys.stdout
        print '\n\n<PRE>'
        traceback.print_exc()
else:
    main()
#------------------------     END    ------------------------------------