#!/usr/bin/python2.4
# -*- coding: utf-8 -*-
"""
Main module
Will do all the database connectivity and
method dispatching.
"""
__author__ = "Niels Hoffmann (hoffmnie@fh-brandenburg.de)"
import cgi
import cgitb; cgitb.enable()
import os, StringIO,string
from props import *
from toqe import tools
from toqe import methods
from toqe.Errors import *
from toqe.db import datasource
from toqe.BasicTypes import Concept
from toqe.BasicTypes import Relation
#from toqe.config import configuration
#cfgObj = configuration.getConfigObj()
def normalizeFieldStorage(fieldStorage):
"""Parses the FieldStorage for the needed data."""
# KLUDGE: this is a hack, need the dict to exist
# otherwise no checking for not signing
dict = {'params' : 'true'}
params = fieldStorage
for key in params.keys():
dict[key] = params.getvalue(key)
if 'method' not in dict:
raise NotWellFormedError()
method = dict.pop('method')
return method, dict
#def getCfgObj():
# return cfgObj
def dispatcher(method, parameters = None):
"""expects a method that is defined in methods. calls that method with
parameters and returns the result"""
try:
# get a reference to the method and raise
# if not possible
methodClass = getattr(methods, method)
except:
raise NoMethodError()
#_cfgObj = getCfgObj()
#print parameters
thesaurusName = parameters.get('thesaurus','Fauna Europaea')
try:
propertiesFile = props('/var/www/thesaurus/thesaurusList.cfg')
prop = propertiesFile.getProperty
configFile=prop(thesaurusName,'file')
except Exception,e:
os.chdir('/var/www/thesaurus/log')
fichier=open("pouet.txt",'a')
fichier.write("Exception for %s \n" %e)
fichier.close()
configFile="/var/www/thesaurus/toqe/config/fauna_euro.xml"
myDS = datasource.Datasource(configFile)
methodInstance = methodClass(myDS)
recursive = parameters.get('recursive',False)
os.chdir('/var/www/thesaurus/log')
fichier=open("pouet.txt",'a')
fichier.write("\nparameters %s\n" %str(parameters))
fichier.close()
if parameters:
if recursive:
try:
return methodInstance.getDataRecursive(parameters)
except Exception,e:
os.chdir('/var/www/thesaurus/log')
fichier=open("pouet.txt",'a')
fichier.write("\ngni?????? %s\n" %e)
return methodInstance.getData(parameters)
else:
return methodInstance.getData(parameters)
else:
if recursive:
try:
return methodInstance.getDataRecursive()
except:
return methodInstance.getData()
else:
return methodInstance.getData()
def response(success, payload):
"""Generate the response XML."""
contentType = '''Content-type: text/xml
charset=utf-8
'''
xmlHeader = '\n'
startResponse = '