|
|
| version 1.1, 2008/06/24 11:16:27 | version 1.1.2.10, 2010/02/10 18:25:44 |
|---|---|
| Line 0 | Line 1 |
| from types import * | |
| 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 ext: | |
| pt = getattr(self,ext[0][1].getId()) | |
| else: | |
| pt=PageTemplateFile(os.path.join(package_home(globals()), 'zpt/'+tpName)).__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""" | |
| #logging.error("unicodify: %s"%str) | |
| 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""" | |
| 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 | |