Mercurial > hg > MPIWGWeb
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""" |