--- ZSQLExtend/ZSQLExtend.py 2004/02/09 14:22:30 1.11
+++ ZSQLExtend/ZSQLExtend.py 2004/06/11 16:54:29 1.20
@@ -8,16 +8,106 @@ import string
from pyPgSQL import libpq
from AccessControl import getSecurityManager
import os.path
+from Products.PageTemplates.PageTemplateFile import PageTemplateFile
def quoteString(name):
#return re.sub(r'([\(\)\?])',"\\\1",name)
#return "Euklid"
return name
+
+
class ZSQLExtendFolder(Persistent, Implicit, Folder):
"""Folder"""
meta_type="ZSQLExtendFolder"
+ def content_html(self):
+ """template fuer content"""
+
+ try:
+ obj=getattr(self,"ZSQLBibliography_template")
+ return obj()
+ except:
+ pt=PageTemplateFile('Products/ZSQLExtend/zpt/ZSQLBibliography_template_standard.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+
+ def getWeight(self):
+ """getLabe"""
+ try:
+ return self.weight
+ except:
+ return ""
+
+ def getLabel(self):
+ """getLabe"""
+ try:
+ return self.label
+ except:
+ return ""
+
+ def getDescription(self):
+ """getLabe"""
+ try:
+ return self.description
+ except:
+ return ""
+
+ manage_options=Folder.manage_options+(
+ {'label':'Main Config','action':'changeZSQLExtendForm'},
+ )
+
+ def changeZSQLExtendForm(self):
+ """change folder config"""
+ pt=PageTemplateFile('Products/ZSQLExtend/zpt/changeZSQLExtendForm.zpt').__of__(self)
+ return pt()
+
+
+ def changeZSQLExtend(self,label,description,weight=0,REQUEST=None):
+ """change it"""
+
+ self.weight=weight
+ self.label=label
+ self.description=description
+
+ if REQUEST is not None:
+ return self.manage_main(self, REQUEST)
+
+ def formatAscii(self,str,url=None):
+ """ersetze ascii umbrueche durch
"""
+ #url=None
+ if url and str:
+
+ retStr=""
+ words=str.split("\n")
+
+ for word in words:
+ strUrl=url%word
+ #print "str",strUrl
+ retStr+="""%s
"""%(strUrl,word)
+ str=retStr
+ if str:
+ return re.sub(r"[\n]","
",str)
+ else:
+ return ""
+
+ def getSAttribute(self,obj,atribute,pref=''):
+ """get Attribute or emptystring"""
+
+ #print "obj",obj
+ try:
+ return pref+getattr(obj,atribute)
+ except:
+ return ""
+
+ def getS(self,str):
+ """make none to empty string"""
+ if str:
+ return str
+ else:
+ return ""
+
def actualPath(self,url=None):
"""path"""
@@ -59,6 +149,45 @@ class ZSQLExtendFolder(Persistent, Impli
"""%fieldname
return ret
+
+ def ZSQLSelectionFromCRList(self,fieldname,listField,boxType="checkbox",checked=None):
+ """generate select oprions form a cr seperated list"""
+ fields=listField.split("\n")
+ ret=""
+ for field in fields:
+ if checked and (field in checked.split("\n")):
+ ret+="""%s"""%(fieldname,boxType,field.encode('utf-8'),field.encode('utf-8'))
+ else:
+ ret+="""%s"""%(fieldname,boxType,field.encode('utf-8'),field.encode('utf-8'))
+ return ret
+
+
+ def ZSQLOptionsFromCRList(self,fieldname,listField):
+ """generate select oprions form a cr seperated list"""
+ fields=listField.split("\n")
+ ret=""""""
+ return ret
+
+ def ZSQLOptionsFromSearchList(self,fieldname,results,fieldName,start=None):
+ """generate select oprions form a cr seperated list"""
+
+ ret=""""""
+ return ret
+
+
def ZSQLInlineSearch(self,storename=None,**argv):
"""inlinesearch"""
@@ -174,7 +303,7 @@ class ZSQLExtendFolder(Persistent, Impli
self.search(var=queryString)
return self.REQUEST.RESPONSE.redirect(format)
- def ZSQLFind(self,qs="",select="oid,*",storename=None):
+ def ZSQLFind(self,qs="",select="oid,*",storename=None,**argv):
"""Find"""
@@ -184,20 +313,24 @@ class ZSQLExtendFolder(Persistent, Impli
qs=string.join(qs.split("&"),",")
+ for field in argv.keys():
+ qs+=",-%s=%s"%(field,argv[field])
+ #print qs
else:
qs=self.REQUEST.SESSION['query']
else:
+ self.REQUEST['QUERY_STRING']=qs
qs=string.join(qs.split("&"),",")
-
+
qs=re.sub("\\+"," ",qs)# Austauschen da Leerzeichen bei http-get durch + ersetzt wird, generell sollte alles auf post umgeschrieben werden. vom search formular.
- #print "QS",qs
+
if storename:
"""store"""
else:
storename="foundCount"
-
+ #print "QS",qs
ret=self.parseQueryString(qs,"-",select=select,storemax="yes",storename=storename)
#print self.REQUEST.SESSION["foundCount"]
@@ -236,7 +369,7 @@ class ZSQLExtendFolder(Persistent, Impli
else:
storename="foundCount"
- return self.REQUEST.SESSION[storename]['rangeStart']
+ return int(self.REQUEST.SESSION[storename]['rangeStart'])+1
def ZSQLRangeSize(self,storename=None):
@@ -282,13 +415,17 @@ class ZSQLExtendFolder(Persistent, Impli
for q in splitted:
name=re.sub("r'+'"," ",q.split("=")[0].lower())
- value=urllib.unquote(q.split("=")[1])
-
+ try:
+ value=urllib.unquote(q.split("=",1)[1])
+ except:
+ value=""
+ #print "Hi",name[0:3],q
if name[0:3]==iCT+"op":
op=value
+
field=name[4:]
opfields[field]=op
-
+ #print "HI",op,field
#print opfieldsa
#now analyse the querystring
for q in qs.split(","):
@@ -297,7 +434,11 @@ class ZSQLExtendFolder(Persistent, Impli
#try:
name=re.sub("r'+'"," ",q.split("=")[0].lower())
- value=urllib.unquote(q.split("=")[1])
+ try:
+ value=urllib.unquote(q.split("=",1)[1])
+ except:
+ value=""
+
#value=libpq.PgQuoteString(value)
@@ -361,6 +502,7 @@ class ZSQLExtendFolder(Persistent, Impli
#print "QE",table
query="SELECT %s FROM %s %s %s %s %s"%(select,table,where,sort,maxstr,skip)
+
if not nostore=="yes":
self.REQUEST.SESSION['qs']=opfields
@@ -394,9 +536,12 @@ class ZSQLExtendFolder(Persistent, Impli
self.REQUEST.SESSION[storename]['rangeSize']=limit
self.REQUEST.SESSION[storename]['searchFields']=searchFields
- #print query
- return self.search(var=query)
+ #print "Q",query
+ return self.ZSQLQuery(query)
+ def ZSQLQuery(self,query):
+ """query"""
+ return self.search(var=query)
def ZSQLSearch(self):
"""To be done"""
@@ -425,12 +570,12 @@ class ZSQLExtendFolder(Persistent, Impli
def getZSQLSearchFieldsList(self,storename="foundCount"):
"""get searchfieldList"""
- print self.REQUEST.SESSION[storename]['searchFields'].keys()
+ #print self.REQUEST.SESSION[storename]['searchFields'].keys()
return self.REQUEST.SESSION[storename]['searchFields'].keys()
def getZSQLSearchFields(self,storename="foundCount"):
"""get searchfield"""
- print "SF",self.REQUEST.SESSION[storename]['searchFields']
+ #print "SF",self.REQUEST.SESSION[storename]['searchFields']
return self.REQUEST.SESSION[storename]['searchFields']
@@ -596,7 +741,7 @@ class ZSQLExtendFolder(Persistent, Impli
manage_addZSQLExtendFolderForm=DTMLFile('ZSQLExtendFolderAdd', globals())
-def manage_addZSQLExtendFolder(self, id, title='',
+def manage_addZSQLExtendFolder(self, id, title='', label='', description='',
createPublic=0,
createUserF=0,
REQUEST=None):
@@ -613,7 +758,142 @@ def manage_addZSQLExtendFolder(self, id,
ob.title=title
self._setObject(id, ob)
ob=self._getOb(id)
+ setattr(ob,'label',label)
+ setattr(ob,'description',description)
+
+ checkPermission=getSecurityManager().checkPermission
+ if createUserF:
+ if not checkPermission('Add User Folders', ob):
+ raise Unauthorized, (
+ 'You are not authorized to add User Folders.'
+ )
+ ob.manage_addUserFolder()
+
+ if createPublic:
+ if not checkPermission('Add Page Templates', ob):
+ raise Unauthorized, (
+ 'You are not authorized to add Page Templates.'
+ )
+ ob.manage_addProduct['PageTemplates'].manage_addPageTemplate(
+ id='index_html', title='')
+
+ if REQUEST is not None:
+ return self.manage_main(self, REQUEST, update_menu=1)
+
+
+
+class ZSQLBibliography(Folder,ZSQLExtendFolder):
+ """Bibliography"""
+ meta_type="ZSQLBibliography"
+ def getLabel(self):
+ try:
+ return self.label
+ except:
+ return ""
+
+ def getDescription(self):
+ try:
+ return self.description
+ except:
+ return ""
+
+ def changeZSQLBibliographyForm(self):
+ """change folder config"""
+ pt=PageTemplateFile('Products/ZSQLExtend/zpt/changeZSQLBibliographyForm.zpt').__of__(self)
+ return pt()
+
+
+ def content_html(self):
+ """template fuer content"""
+
+ try:
+ obj=getattr(self,"ZSQLBibliography_template")
+ return obj()
+ except:
+ pt=PageTemplateFile('Products/ZSQLExtend/zpt/ZSQLBibliography_template_standard.zpt').__of__(self)
+ pt.content_type="text/html"
+ return pt()
+
+ def changeZSQLBibliography(self,tableName,label,description,REQUEST=None):
+ """change it"""
+ self.tableName=tableName
+ self.label=label
+ self.description=description
+
+ if REQUEST is not None:
+ return self.manage_main(self, REQUEST)
+
+ manage_options=Folder.manage_options+(
+ {'label':'Main Config','action':'changeZSQLBibliographyForm'},
+ )
+
+
+ def getFieldLabel(self,fields,field):
+ """get labels"""
+ try:
+ ret =fields[0][field]
+ if ret == "":
+ return field
+ else:
+ return ret
+ except:
+ return field
+
+ def getFieldValue(self,found,field):
+ """get value"""
+ try:
+ ret=getattr(found,field)
+ if ret == "":
+ return None
+ else:
+ return ret
+ except:
+ return None
+
+ def findLabelsFromMapping(self,referenceType):
+ """gib hash mit label -> generic zurueck"""
+ self.referencetypes=self.ZopeFind(self.standardMD)
+ bibdata={}
+ retdata={}
+ fieldlist=self.standardMD.fieldList
+
+ for referenceTypeF in self.referencetypes:
+ #print referenceType,referenceTypeF[1].title
+ if referenceTypeF[1].title == referenceType:
+ bibdata[referenceTypeF[1].title]=referenceTypeF[1].fields
+ bibdata['data']=referenceTypeF[1]
+ self.fields=bibdata[referenceType]
+ for field in fieldlist:
+ retdata[field]=referenceTypeF[1].getValue(field)[1]
+
+ return retdata,fieldlist
+
+
+
+manage_addZSQLBibliographyForm=DTMLFile('ZSQLBibliographyAdd', globals())
+
+def manage_addZSQLBibliography(self, id, tableName,label,description,title='',
+ createPublic=0,
+ createUserF=0,
+ REQUEST=None):
+ """Add a new Folder object with id *id*.
+
+ If the 'createPublic' and 'createUserF' parameters are set to any true
+ value, an 'index_html' and a 'UserFolder' objects are created respectively
+ in the new folder.
+ """
+
+
+ ob=ZSQLBibliography()
+ ob.id=str(id)
+ ob.title=title
+ self._setObject(id, ob)
+ ob=self._getOb(id)
+ setattr(ob,'tableName',tableName)
+ setattr(ob,'label',label)
+ setattr(ob,'description',description)
+
checkPermission=getSecurityManager().checkPermission
if createUserF:
@@ -635,3 +915,5 @@ def manage_addZSQLExtendFolder(self, id,
return self.manage_main(self, REQUEST, update_menu=1)
+
+