comparison MPIWGRoot.py @ 216:3b517b412f77

fixed problem updating users with new IDs
author casties
date Wed, 02 Oct 2013 14:40:50 +0200
parents c0dcb747cc41
children 95e0087b9e19
comparison
equal deleted inserted replaced
215:c0dcb747cc41 216:3b517b412f77
280 280
281 281
282 282
283 def generateNewPersonEntry(self,data): 283 def generateNewPersonEntry(self,data):
284 """generate a new person entry for data, neue personen werden zunaechst nur in der datenbank angelegt """ 284 """generate a new person entry for data, neue personen werden zunaechst nur in der datenbank angelegt """
285 285 logging.debug("generateNewPersonEntry(%s)"%repr(data))
286 #memberFolder=getattr(self,'members') 286 #memberFolder=getattr(self,'members')
287 #create the object 287 #create the object
288 288
289 # try: 289 # try:
290 # newObj=MPIWGStaff.MPIWGStaff(urllib.quote(data['key']),data['last_name'].encode('utf-8'),data['first_name'].encode('utf-8')) 290 # newObj=MPIWGStaff.MPIWGStaff(urllib.quote(data['key']),data['last_name'].encode('utf-8'),data['first_name'].encode('utf-8'))
339 339
340 def updatePersonalwww_doIt(self): 340 def updatePersonalwww_doIt(self):
341 """do the update""" 341 """do the update"""
342 args=self.REQUEST.form 342 args=self.REQUEST.form
343 343
344
345 resultSet=self.REQUEST.SESSION['personal_www']['resultSet'] 344 resultSet=self.REQUEST.SESSION['personal_www']['resultSet']
346 news=self.REQUEST.SESSION['personal_www']['news'] 345 news=self.REQUEST.SESSION['personal_www']['news']
347 conflicts=self.REQUEST.SESSION['personal_www']['conflicts'] 346 conflicts=self.REQUEST.SESSION['personal_www']['conflicts']
348 logging.debug("updatePersonalwww_doIt: args=%s\n resultSet=%s\n news=%s\n conflicts=%s"%(args,resultSet,news,conflicts)) 347 logging.debug("updatePersonalwww_doIt: args=%s\n resultSet=%s\n news=%s\n conflicts=%s"%(args,resultSet,news,conflicts))
349 348
353 if news and (len(news)>0): 352 if news and (len(news)>0):
354 ret+="<h2>Added</h2>" 353 ret+="<h2>Added</h2>"
355 ret+="<ul>" 354 ret+="<ul>"
356 355
357 for new in news: 356 for new in news:
357 logging.debug("updatePersonalwww_doIt: adding %s"%repr(new))
358 if args.has_key(new.encode('utf-8')): # entry was selected 358 if args.has_key(new.encode('utf-8')): # entry was selected
359 result,msg=self.generateNewPersonEntry(resultSet[new]) 359 result,msg=self.generateNewPersonEntry(resultSet[new])
360 if not result: 360 if not result:
361 logging.error("Error (generateNewPersonEntry) %s"%msg) 361 logging.error("Error (generateNewPersonEntry) %s"%msg)
362 ret+="<li>ERROR: %s %s"%(new.encode('utf-8'),msg) 362 ret+="<li>ERROR: %s %s"%(new.encode('utf-8'),msg)
363 else: 363 else:
364 ret+="<li>OK: %s"%(new.encode('utf-8')) 364 ret+="<li>OK: %s"%(new.encode('utf-8'))
365 365
366 if news and (len(news)>0): 366 if news and (len(news)>0):
367 ret+="</ul>"
367 ret+="<p>New entries will be visible on the webpage when an email address has been assigned.</p>" 368 ret+="<p>New entries will be visible on the webpage when an email address has been assigned.</p>"
369 else:
368 ret+="</ul>" 370 ret+="</ul>"
369 371
370 # update 372 # update
371 373
372 if len(conflicts.keys())>0: 374 if len(conflicts.keys())>0:
373 ret+="<h2>Accepted changes to user entries</h2>" 375 ret+="<h2>Accepted changes to user entries</h2>"
374 ret+="<p>Change Filemaker-db when necessary.</p>" 376 ret+="<p>Change Filemaker-db when necessary.</p>"
375 377
376 # konflicte 378 # conflicts
377 for conflict in conflicts.keys(): 379 for conflict in conflicts.keys():
378 ignoreEntries=[] 380 ignoreEntries=[]
379 displayIgnored=[] 381 displayIgnored=[]
380 for cf in conflicts[conflict]: 382 for cf in conflicts[conflict]:
381 if args[conflict.encode('utf-8')+'_'+cf[0]]=="stored": #use the stored one 383 if args[conflict.encode('utf-8')+'_'+cf[0]]=="stored": #use the stored one
394 396
395 # rest 397 # rest
396 cl=list(conflicts.keys()) 398 cl=list(conflicts.keys())
397 399
398 if len(resultSet.keys()) > 0: 400 if len(resultSet.keys()) > 0:
399 ret += "<h2>Updating user entries</h2>" 401 ret += "<h2>Updated user entries</h2>"
400 ret += "<ul>" 402 ret += "<ul>"
401 403
402 for key in resultSet.keys(): 404 for key in resultSet.keys():
403 if key not in cl: 405 if key not in cl:
404 self.updatePersonEntry(resultSet[key]) 406 self.updatePersonEntry(resultSet[key])
405 ret+="<li>%s</li>"%(key.encode('utf-8')) 407 ret+="<li>%s %s (%s)</li>"%(resultSet[key].get('first_name','').encode('utf-8'), resultSet[key].get('last_name','').encode('utf-8'), key.encode('utf-8'))
406 408
407 if len(resultSet.keys()) > 0: 409 if len(resultSet.keys()) > 0:
408 ret += "</ul>" 410 ret += "</ul>"
409 411
410 ret += "<p>Done.</p>" 412 ret += "<p>Done.</p>"
411 return ret+"</body></html>" 413 return ret+"</body></html>"
412 414
413 415
414 def updatePersonalwww_html(self): 416 """update form for the homepages web form"""
415 """update form for the homepages web form""" 417 updatePersonalwww_html = PageTemplateFile('zpt/updatePersonalwww', globals())
416 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww.zpt')).__of__(self)
417 return pt()
418 418
419 419
420 def updatePersonalwww(self,uploadfile): 420 def updatePersonalwww(self,uploadfile):
421 """update personalwww 421 """update personalwww
422 @param uploadfile: file handle auf das file 422 @param uploadfile: file handle auf das file
423 """ 423 """
424 dsn=self.getConnectionObj().connection_string 424 dsn=self.getConnectionObj().connection_string
425 #dsn="dbname=personalwww" 425 #dsn="dbname=personalwww"
426 resultSetTmp=updatePersonalWWW.importFMPXML(uploadfile) 426 resultSetTmp=updatePersonalWWW.importFMPXML(uploadfile)
427
428 427
429 resultSet={} 428 resultSet={}
430 for key in resultSetTmp.keys(): 429 for key in resultSetTmp.keys():
431 resultSet[key.replace("MPIWG:","")]=resultSetTmp[key]; 430 # TODO: properly fix MPIWG: id problem
431 if key.startswith('MPIWG:'):
432 # strip MPIWG: from key
433 newkey = key.replace('MPIWG:','')
434 # replace key in data
435 resultSetTmp[key]['key'] = newkey
436 # replace key in resultSet
437 resultSet[newkey]=resultSetTmp[key];
438
439 else:
440 # copy entry
441 resultSet[key] = resultSetTmp[key]
432 442
433 news,conflicts=updatePersonalWWW.checkImport(dsn, resultSet) 443 news,conflicts=updatePersonalWWW.checkImport(dsn, resultSet)
434 444
435 self.REQUEST.SESSION['personal_www'] = {'resultSet': resultSet, 'news': news, 'conflicts': conflicts} 445 self.REQUEST.SESSION['personal_www'] = {'resultSet': resultSet, 'news': news, 'conflicts': conflicts}
436 446
437 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww_check.zpt')).__of__(self) 447 pt=PageTemplateFile('zpt/updatePersonalwww_check', globals()).__of__(self)
438 return pt() 448 return pt()
439 449
440 450
441 def getAllProjectPublications(self): 451 def getAllProjectPublications(self):
442 """get all publications""" 452 """get all publications"""