diff MPIWGHelper.py @ 0:bca61e893fcc

first checkin of MPIWGWeb r2 branch from CVS into mercurial
author casties
date Thu, 10 Jan 2013 17:52:13 +0100
parents
children c711fe75d0ac
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MPIWGHelper.py	Thu Jan 10 17:52:13 2013 +0100
@@ -0,0 +1,166 @@
+from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+
+import logging
+
+definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub']
+
+checkFields = ['xdata_01']
+
+#ersetzt logging
+def logger(txt,method,txt2):
+    """logging""" 
+    logging.info(txt+ txt2)
+                 
+def getTextFromNode(nodename):
+    
+    nodelist=nodename.childNodes
+    rc = ""
+    for node in nodelist:
+        if node.nodeType == node.TEXT_NODE:
+           rc = rc + node.data
+    return rc
+
+def getTemplate(self, tpName):
+    """get a template file either form the instance or from the product"""
+    #ext=self.ZopeFind(self.aq_parent,obj_ids=[tpName])
+    if hasattr(self,tpName):
+        pt = getattr(self,tpName)
+    else:
+        pt=PageTemplateFile('zpt/'+tpName, globals()).__of__(self)
+    assert(pt)
+    return pt
+
+def sortStopWordsF(self,xo,yo):
+    if not hasattr(self,'_v_stopWords'):
+        self._v_stopWords=self.stopwords_en.data.split("\n")
+    
+    x=unicodify(xo[1])
+    y=unicodify(yo[1])
+    
+    strx=x.split(" ")
+    stry=y.split(" ")
+    
+    for tmp in strx:
+        if tmp.lower() in self._v_stopWords:
+            del strx[strx.index(tmp)]
+    
+    for tmp in stry:
+        if tmp.lower() in self._v_stopWords:
+            del stry[stry.index(tmp)]
+            
+    return cmp(" ".join(strx)," ".join(stry))
+    
+def sortStopWords(self):
+    return lambda x,y : sortStopWordsF(self,x,y)
+    
+def sortF(x,y):
+    try:
+        return cmp(x[1],y[1])
+    except:
+        try:
+            return cmp(str(x[1]),str(y[1]))
+        except:           
+            
+            return 0 
+    
+def sortI(x,y):
+    xsplit=x[1].split(".")
+    ysplit=y[1].split(".")
+    xret=""
+    yret=""
+    try:
+        for i in range(5):
+            try:
+                yret=yret+"%04i"%int(xsplit[i])
+            except:
+                yret=yret+"%04i"%0
+
+            try:
+                xret=xret+"%04i"%int(ysplit[i])
+            except:
+                xret=xret+"%04i"%0
+                
+        
+        return cmp(int(yret),int(xret))
+    except:
+        return cmp(x[1],y[1])
+
+
+def unicodify(s):
+    """decode str (utf-8 or latin-1 representation) into unicode object"""
+    if not s:
+        return u""
+    if isinstance(s, str):
+        try:
+            return s.decode('utf-8')
+        except:
+            return s.decode('latin-1')
+    else:
+        return s
+
+def utf8ify(s):
+    """encode unicode object or string into byte string in utf-8 representation.
+       assumes string objects to be utf-8"""
+    if not s:
+        return ""
+    if isinstance(s, str):
+        return s
+    else:
+        return s.encode('utf-8')
+
+
+def shortenString(s, l, ellipsis='...'):
+    """returns a string of length l (or l-1) by omitting characters in the middle of s, replacing with ellipsis."""
+    l1 = int((l - len(ellipsis)) / 2)
+    return "%s%s%s"%(s[:l1],ellipsis,s[-l1:])
+
+
+#
+# navigation methods (should better be a mixin class)
+#
+def getBreadcrumbs(self):
+    """return list of breadcrumbs from here to the root"""
+    crumbs = [(self.title, self.absolute_url(), self)]
+    parent = self.aq_parent
+    if hasattr(parent, 'getBreadcrumbs'):
+        if self.title:
+            return parent.getBreadcrumbs() + crumbs
+        else:
+            # if there's no title, skip this level
+            return parent.getBreadcrumbs()
+        
+    return crumbs
+
+
+def getSection(self, crumbs=None):
+    """returns the current section name"""
+    # use breadcrumbs if available
+    if crumbs is not None and len(crumbs) > 0:
+        return crumbs[0][2].getId()
+
+    p = self
+    sec = None
+    # descend parents to the root (and remember the last id)
+    while p is not None and p.meta_type != 'MPIWGRoot':
+        sec = p.getId()
+        p = p.aq_parent
+    
+    return sec
+
+def getSubSection(self, crumbs=None):
+    """returns the current subsection name"""
+    # use breadcrumbs if available
+    if crumbs is not None and len(crumbs) > 1:
+        return crumbs[1][2].getId()
+
+    p = self
+    sec = None
+    subsec = None
+    # descend parents to the root (and remember the last id)
+    while p is not None and p.meta_type != 'MPIWGRoot':
+        subsec = sec
+        sec = p.getId()
+        p = p.aq_parent
+    
+    return subsec
+