--- MPIWGWeb/Attic/MPIWGRoot.py 2008/09/12 15:54:49 1.1.2.20 +++ MPIWGWeb/Attic/MPIWGRoot.py 2010/07/15 10:20:17 1.1.2.28 @@ -80,6 +80,8 @@ class MPIWGRoot(ZSQLExtendFolder): ret=[] # nimmt das Array auf, dass spaeter zurueckgegeben wird ranges=[] #Array mit tupeln x,y wobei x die Position des Anfang und y des Endes der i-ten Umgebung angiebt + wordStr=wordStr.lstrip().rstrip() + def isInRanges(nr,length): """test ob eine gegeben Position nr schon irgendwo in einer Umgebung ist, gibt den Index des ersten Wertes aus ranges zurueck, -1, wenn kein Treffer @@ -384,11 +386,14 @@ class MPIWGRoot(ZSQLExtendFolder): else: return style - def getFeatures(self): - """returns a list of all Features""" + def getFeatures(self, num=None): + """returns a list of the last num Features""" dir = getattr(self, 'features') features = dir.objectItems(['MPIWGFeature']) features.sort(sortWeight) + if num is not None: + # take only the last num elements + features = features[-num:] # return pure list of objects return [f[1] for f in features] @@ -600,7 +605,7 @@ class MPIWGRoot(ZSQLExtendFolder): def getContexts(self,childs=None,parents=None,depth=None,date=None,onlyActive=True): """childs alle childs, alle parents""" ret=[] - + if parents: pnums=parents.split(".") while len(pnums) > 1: @@ -630,6 +635,7 @@ class MPIWGRoot(ZSQLExtendFolder): ret.append(project) #logging.debug("getContexts: childs=%s parents=%s depth=%s => %s"%(childs,parents,depth,repr(ret))) + return ret @@ -773,17 +779,20 @@ class MPIWGRoot(ZSQLExtendFolder): result,msg=MPIWGStaff.createNewDBEntry(self,data['publish_the_data'],data['key'],data['last_name'], - data['first_name'],data['title'],data['status'],"", + data['first_name'],data['titles_new'],data['status'],"", "",data['date_from'],data['date_to'], - data['department'],data['home_inst'],data['funded_by'], + data['department'],'',data['funded_by'], data['e_mail2'],data['current_work'],"yes",data['date_stay_at_mpiwg'],data['group'],"no",data['current_work']) return result,msg - def updatePersonEntry(self,data,ignoreEntries=[]): + def updatePersonEntry(self,data,ignoreEntries=None): """update an person entry from data. but ignore all fields in ignore Entries""" - + if ignoreEntries is None: + ignoreEntries = [] + ignoreEntries.append('current_work') # TODO:updatecurrent work + logging.debug("updatePersonEntry: data=%s ignoreEntries=%s"%(repr(data),repr(ignoreEntries))) if data['date_to']=="": # wenn date_to leer data['date_to']="date_none" @@ -797,9 +806,9 @@ class MPIWGRoot(ZSQLExtendFolder): columns=data.keys() for x in ignoreEntries: - logging.info("ign rem: %s"%x) + logging.debug("updatePersonEntry: ignoring %s"%x) try: #falls in ignore entries felder sind, die nicht in columns sind, fange den fehler ab - columns.remove(x) + columns.remove(x) except: pass @@ -831,6 +840,8 @@ class MPIWGRoot(ZSQLExtendFolder): resultSet=self.REQUEST.SESSION['personal_www']['resultSet'] news=self.REQUEST.SESSION['personal_www']['news'] conflicts=self.REQUEST.SESSION['personal_www']['conflicts'] + logging.debug("updatePersonalwww_doIt: args=%s\n resultSet=%s\n news=%s\n conflicts=%s"%(args,resultSet,news,conflicts)) + ret="" # generate the new entry @@ -838,8 +849,8 @@ class MPIWGRoot(ZSQLExtendFolder): ret+="

Hinzugefügt

" ret+="

Neueinträge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.

" ret+="" @@ -865,9 +877,9 @@ class MPIWGRoot(ZSQLExtendFolder): if args[conflict.encode('utf-8')+'_'+cf[0]]=="stored": #use the stored one ignoreEntries.append(cf[0]) #so ignore field cf[0] displayIgnored.append(cf) + if len(displayIgnored)>0: ret+="

%s

"%conflict.encode('utf-8') - ret+="" for iE in displayIgnored: ret+=""%(iE[0].encode('utf-8'),iE[1].encode('utf-8'),iE[2].encode('utf-8')) @@ -924,8 +936,23 @@ class MPIWGRoot(ZSQLExtendFolder): try: self.ProjectCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) + logger("MPIWG Root (reindexCatalog: projects)",logging.INFO,"DONE") except: - logger("MPIWG Root (updatehomepage)",logging.WARNING," %s %s"%sys.exc_info()[:2]) + logger("MPIWG Root (reindexCatalog: projects)",logging.WARNING," %s %s"%sys.exc_info()[:2]) + + try: + + self.MembersCatalog.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) + logger("MPIWG Root (reindexCatalog: members)",logging.INFO,"DONE") + except: + logger("MPIWG Root (reindexCatalog: members)",logging.WARNING," %s %s"%sys.exc_info()[:2]) + + try: + + self.fulltextProjectsMembers.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1']) + logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.INFO,"DONE") + except: + logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.WARNING," %s %s"%sys.exc_info()[:2]) @@ -945,7 +972,7 @@ class MPIWGRoot(ZSQLExtendFolder): results=self.MembersCatalog({'isPublished':True}) - ret=[(", ".join([proj.lastName, proj.firstName]).decode('utf-8'),proj.getKey) for proj in results] + ret=[(unicodify(", ".join([proj.lastName, proj.firstName])), proj.getKey) for proj in results] ret.sort(sorter) return ret @@ -998,6 +1025,8 @@ class MPIWGRoot(ZSQLExtendFolder): onlyArchived=0: alle Projekte onlyArchived= 1 : nur aktuelle Projekte onlyArchived = 2: nur archivierte Projekte + + department fuer das Tree geholt werden soll """ returnListTmp=[] @@ -1017,7 +1046,7 @@ class MPIWGRoot(ZSQLExtendFolder): if idNr[0]=="x": # kompatibilitaet mit alter Konvention, x vor der Nummer macht project inactive project[0].setActiveFlag(False) - if (not dep) or (idNr[0]==dep): #falls dep gesetzt ist nur dieses hinzufuegen. + if (not dep) or (splittedId[0]==dep): #falls dep gesetzt ist nur dieses hinzufuegen. if (onlyActive==0): returnListTmp.append((depth,nr,title,project[0])) @@ -1079,9 +1108,9 @@ class MPIWGRoot(ZSQLExtendFolder): hashList={} onlyArchived=int(form.get("onlyArchived",0)) onlyActive=int(form.get("onlyActive",0)) + dep=form.get("dep",None) - - fields=self.getTree(onlyArchived=onlyArchived,onlyActive=onlyActive) + fields=self.getTree(dep=dep,onlyArchived=onlyArchived,onlyActive=onlyActive) logging.info("GOT TREE!----------------------------------------------------") for field in form.keys(): @@ -1098,25 +1127,33 @@ class MPIWGRoot(ZSQLExtendFolder): else: fields[nr][3].setActiveFlag(False) - #nummer hat sich geŠndert + #nummer hat sich geaendert entryChanged = False; - + if isinstance(fields[nr][3].xdata_05,list): #for some reasons somtimes the content of the field is a list with one entry. + fields[nr][3].xdata_05=fields[nr][3].xdata_05[0] + if not (fields[nr][3].xdata_05==form[str(nr)+'_number']): logging.info("Changed!Number+++++++++++++++++++++++++++++++++") + logging.info(repr(fields[nr][3].xdata_05)+" ---> "+ repr(form[str(nr)+'_number'])) fields[nr][3].xdata_05=form[str(nr)+'_number'] entryChanged = True #completed har sich geaendert - - if not (fields[nr][3].getCompletedAt()==fields[nr][3].transformDate(form[str(nr)+'_completed'])): + + td = fields[nr][3].transformDate # hole die funktion zum transformieren des datums + + if not (td(fields[nr][3].getCompletedAt())==td(form[str(nr)+'_completed'])): fields[nr][3].setCompletedAt(form[str(nr)+'_completed']) + logging.info(repr(td(fields[nr][3].getCompletedAt()))+" ---> "+ repr(td(form[str(nr)+'_completed']))) logging.info("Changed!Completed+++++++++++++++++++++++++++++++++") entryChanged = True - if not (fields[nr][3].getStartedAt()==fields[nr][3].transformDate(form[str(nr)+'_started'])): + if not (td(fields[nr][3].getStartedAt())==td(form[str(nr)+'_started'])): fields[nr][3].setStartedAt(form[str(nr)+'_started']) + + logging.info(repr(td(fields[nr][3].getStartedAt()))+" ---> "+ repr(td(form[str(nr)+'_started']))) logging.info("Changed!Started+++++++++++++++++++++++++++++++++") entryChanged = True @@ -1478,4 +1515,4 @@ def manage_addMPIWGRoot(self,id,title,co setattr(ob,'connection_id',connection_id) if RESPONSE is not None: RESPONSE.redirect('manage_main') - \ No newline at end of file +
%s%s%s