comparison MPIWGRoot.py @ 50:e30a4bd074db

more cleaning up projects.
author casties
date Mon, 29 Apr 2013 20:34:17 +0200
parents cacba38c268c
children d456fe185649
comparison
equal deleted inserted replaced
49:e40ff9829108 50:e30a4bd074db
322 #return self.decode(format%field) 322 #return self.decode(format%field)
323 else: 323 else:
324 return "" 324 return ""
325 325
326 326
327 # TODO: remove
328 def isActiveMember(self,key):
329 """tested ob Mitarbeiter key ist aktiv"""
330 key=utf8ify(key)
331 ret=getAt(self.ZSQLInlineSearch(_table='personal_www',
332 _op_key='eq',key=key,
333 _op_publish_the_data='eq',
334 publish_the_data='yes'), 0)
335
336 logging.info("MPIWGROOT ACTIVE_MEMBER %s"%ret)
337 if ret:
338 return True
339 else:
340 return False
341
342 # TODO: remove
343 def isActual(self,project):
344 """checke if project is actual"""
345 actualTime=time.localtime()
346
347 if hasattr(project,'getObject'): #obj ist aus einer catalogTrefferList
348 obj=project.getObject()
349 else:
350 obj=project
351
352 if getattr(obj,'archiveTime',actualTime)< actualTime:
353 return False
354 else:
355 return True
356 327
357 def redirectIndex_html(self,request): 328 def redirectIndex_html(self,request):
358 #return request['URL1']+'/index_html' 329 #return request['URL1']+'/index_html'
359 330
360 return urllib.urlopen(request['URL1']+'/index_html').read() 331 return urllib.urlopen(request['URL1']+'/index_html').read()
1141 except: 1112 except:
1142 return "" 1113 return ""
1143 1114
1144 1115
1145 1116
1146 def getProjectsOfMembers(self,date=None):
1147 """give tuple member /projects"""
1148 ret=[]
1149 members=self.getAllMembers()
1150 logging.debug("X %s"%repr(members))
1151 #return str(members)
1152 for x in members:
1153 #logging.debug("X %s"%repr(x))
1154 projects=self.getProjectsOfMember(key=x[1],date=date)
1155 if len(projects)>0:
1156 ret.append((x[0],projects))
1157
1158 return ret
1159
1160 def getProjectsOfMember(self,key=None,date=None,onlyArchived=1,onlyActive=1):
1161 """get projects of a member
1162
1163 @param key: (optional) Key zur Idenfikation des Benutzer
1164 @param date: (optional) Version die zum Zeitpunkt date gueltig war
1165 @param onlyArchived:
1166 onlyArchived=0: alle Projekte
1167 onlyArchived= 1 : nur aktuelle Projekte
1168 onlyArchived = 2: nur archivierte Projekte
1169 """
1170 # TODO: Die ganze Loesung
1171 def sortP(x,y):
1172 """sort by sorting number"""
1173 return cmp(x.WEB_title,y.WEB_title)
1174
1175 ret=[]
1176 if key:
1177 logging.debug("MPIWGROOT (getProjectsOfMember):"+key)
1178 proj=self.ProjectCatalog({'getPersonKeyList':utf8ify(key)})
1179 else:
1180 return ret # key muss definiert sein
1181
1182 #logging.debug("MPIWGROOT (getProjectsOfMember):"+repr(proj))
1183 if proj:
1184 proj2=[]
1185 for x in proj:
1186 #logging.error("proj:%s"%repr(x.getPath()))
1187 if (not getattr(x.getObject(),'invisible',None)) and (getattr(x.getObject(),'archiveTime','')==''):
1188 proj2.append(x)
1189
1190 else:
1191 proj2=[]
1192
1193
1194
1195 proj2.sort(sortP)
1196
1197 projectListe=[]
1198 #logging.error("getprojectsofmember proj2: %s"%repr(proj2))
1199 for proj in proj2:
1200 obj=proj.getObject()
1201 add=False
1202 if onlyArchived==1: #nur aktuell projecte
1203 if not obj.isArchivedProject():
1204 add=True
1205 elif onlyArchived==2: #nur archivierte
1206 if obj.isArchivedProject():
1207 add=True
1208 else: #alle
1209 add=True
1210
1211 if onlyActive==1: #nur active projecte
1212 if obj.isActiveProject():
1213 add=add & True
1214 else:
1215 add=add & False
1216
1217 elif onlyArchived==2: #nur nicht aktvive
1218 if not obj.isActiveProject():
1219 add=add & True
1220 else: #alle
1221 add=add & True
1222
1223 if add:
1224 projectListe.append(obj)
1225
1226 #logging.error("getprojectsofmember projectliste: %s"%repr(projectListe))
1227 return projectListe
1228 1117
1229 def givePersonList(self,name):
1230 """check if person is in personfolder and return list of person objects"""
1231
1232 splitted=name.split(",")
1233 if len(splitted)==1:
1234 splitted=name.lstrip().rstrip().split(" ")
1235 splittedNew=[split.lstrip() for split in splitted]
1236
1237 if splittedNew[0]=='':
1238 del splittedNew[0]
1239 search=string.join(splittedNew,' AND ')
1240
1241 if not search=='':
1242 proj=self.MembersCatalog({'title':search})
1243
1244 if proj:
1245 return [[x.lastName,x.firstName] for x in proj]
1246 else:
1247 return []
1248
1249 ## splitted=name.split(",") # version nachname, vorname...
1250 ## if len(splitted)>1:
1251 ## lastName=splitted[0]
1252 ## firstName=splitted[1]
1253 ## else:
1254 ## splitted=name.split(" ") #version vorname irgenwas nachnamae
1255
1256 ## lastName=splitted[len(splitted)-1]
1257 ## firstName=string.join(splitted[0:len(splitted)-1])
1258
1259 ## objs=[]
1260
1261 #print self.members
1262 ## for x in self.members.__dict__:
1263 ## obj=getattr(self.members,x)
1264 ## if hasattr(obj,'lastName') and hasattr(obj,'firstName'):
1265
1266 ## if (re.match(".*"+obj.lastName+".*",lastName) or re.match(".*"+lastName+".*",obj.lastName)) and (re.match(".*"+obj.firstName+".*",firstName) or re.match(".*"+firstName+".*",obj.firstName)):
1267
1268 ## objs.append((obj,lastName+", "+firstName))
1269
1270
1271 ## return objs
1272
1273
1274 def personCheck(self,names):
1275 """all persons for list"""
1276 #print "names",names
1277 splitted=names.split(";")
1278 ret={}
1279 for name in splitted:
1280
1281 if not (name==""):
1282 try:
1283 ret[name]=self.givePersonList(name)
1284 except:
1285 """NOTHIHN"""
1286 #print "RET",ret
1287 return ret
1288
1289 def giveCheckList(self,person,fieldname):
1290 """return checklist"""
1291 #print "GCL",fieldname
1292 if fieldname=='xdata_01':
1293 x=self.personCheck(person.getContent(fieldname))
1294 #print "GCLBACKX",x
1295 return x
1296
1297
1298 # TODO: do we need this here?
1299 def isCheckField(self,fieldname):
1300 """return chechfield"""
1301 return (fieldname in checkFields)
1302
1303
1304
1305 def sortResults(self,results):
1306 """search the catalog and give results back sorted by meta_type"""
1307 ret = {}
1308 logging.debug(results())
1309 for result in results():
1310 metaType = result.meta_type
1311 resultList= ret.get(metaType,[])
1312 resultList.append(result)
1313 ret[metaType]=resultList
1314
1315 logging.debug(ret)
1316 return ret
1317
1318 1118
1319 def manage_addMPIWGRootForm(self): 1119 def manage_addMPIWGRootForm(self):
1320 """form for adding the root""" 1120 """form for adding the root"""
1321 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self) 1121 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self)
1322 return pt() 1122 return pt()