--- MPIWGWeb/Attic/MPIWGRoot.py 2012/01/09 07:33:30 1.1.2.34 +++ MPIWGWeb/Attic/MPIWGRoot.py 2012/01/09 10:36:48 1.1.2.35 @@ -30,6 +30,8 @@ import updatePersonalWWW import MPIWGStaff from MPIWGHelper import * from BeautifulSoup import BeautifulSoup, Comment +from ZODB import FileStorage, DB +from ZEO import ClientStorage def sortWeight(x,y): x1=int(getattr(x[1],'weight','0')) @@ -40,6 +42,7 @@ def sortWeight(x,y): class MPIWGRoot(ZSQLExtendFolder): """Stammordner fuer den Web-Server""" + _v_harvestCache=None meta_type='MPIWGRoot' fieldLabels={'WEB_title':'WEB_Title', @@ -78,6 +81,35 @@ class MPIWGRoot(ZSQLExtendFolder): ) + def getHarvestCachePort(self): + return getattr(self,"harvestPort",29999) + + def getHarvestCacheServer(self): + return getattr(self,"harvestServer","localhost") + + + def getHarvestCache(self): + logging.debug("CACHE:"+repr(self._v_harvestCache)) + if self._v_harvestCache==None: + #storage = FileStorage.FileStorage('/tmp/'+self.getId()+'test-filestorage.fs') + addr = self.getHarvestCacheServer(), self.getHarvestCachePort() + storage = ClientStorage.ClientStorage(addr) + db = DB(storage) + self._v_harvestDV=db + conn = db.open() + dbroot = conn.root() + if not dbroot.has_key('templates'): + from BTrees.OOBTree import OOBTree + dbroot['templates'] = OOBTree() + + self._v_harvestCache = dbroot['templates'] + logging.debug("CACHE2:"+repr(self._v_harvestCache)) + return self._v_harvestCache + + def __del__(self): + if self._v_harvestCache!=None: + self._v_harvestDV.close(); + def getGetNeighbourhood(self,obj, wordStr, length=100,tagging=True): """finde umgebung um die worte in wordStr, zurueckgegeben wird eine Array mit den Umgebungen von Fundstellen der Worte alle Tags werden entfernt, die Fundstellen werden mit XX getaggt, die Umgebungen werden @@ -118,8 +150,17 @@ class MPIWGRoot(ZSQLExtendFolder): words=wordStr.split(" ") #if not words is ListType: # words=[words] + + + txtCache = self.en.getHarvestCache(); + txt= txtCache.get(obj.absolute_url(),None) + + if txt==None: - txt=obj.harvest_page(mode="slim") + logging.debug("NO CACHE for: "+obj.absolute_url()) + txt=obj.harvest_page(mode="slim") + + if not txt: return ret @@ -616,13 +657,18 @@ class MPIWGRoot(ZSQLExtendFolder): pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeMPIWGRootForm')).__of__(self) return pt() - def changeMPIWGRoot(self,title,connection_id,coneServiceURL,lang=None,autocommit=None,RESPONSE=None): + def changeMPIWGRoot(self,title,connection_id,coneServiceURL,harvestPort,harvestServer,lang=None,autocommit=None,RESPONSE=None): """change""" self.title=title self.connection_id=connection_id #self.disciplineList=disciplineList #self.themesList=themesList self.coneServiceURL=coneServiceURL + self.harvestServer=harvestServer + try: + self.harvestPort=int(harvestPort) + except: + logging.error("couldn't change port!: no number:"+harvestPort) if lang is not None: self.lang = lang @@ -974,9 +1020,10 @@ class MPIWGRoot(ZSQLExtendFolder): logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.WARNING," %s %s"%sys.exc_info()[:2]) - - + + + if RESPONSE: RESPONSE.redirect('manage_main') @@ -1275,11 +1322,12 @@ class MPIWGRoot(ZSQLExtendFolder): ret=[] if key: + logging.debug("MPIWGROOT (getProjectsOfMember):"+key) proj=self.ProjectCatalog({'getPersonKeyList':utf8ify(key)}) else: return ret # key muss definiert sein - + logging.debug("MPIWGROOT (getProjectsOfMember):"+repr(proj)) if proj: proj2=[] for x in proj: