# HG changeset patch # User casties # Date 1380717650 -7200 # Node ID 3b517b412f7744ba4e29543848e6e2e97d36abf3 # Parent c0dcb747cc41270221ae9f1c86e5fb85f0e89da3 fixed problem updating users with new IDs diff -r c0dcb747cc41 -r 3b517b412f77 MPIWGRoot.py --- a/MPIWGRoot.py Thu Aug 29 09:10:01 2013 +0200 +++ b/MPIWGRoot.py Wed Oct 02 14:40:50 2013 +0200 @@ -282,7 +282,7 @@ def generateNewPersonEntry(self,data): """generate a new person entry for data, neue personen werden zunaechst nur in der datenbank angelegt """ - + logging.debug("generateNewPersonEntry(%s)"%repr(data)) #memberFolder=getattr(self,'members') #create the object @@ -341,7 +341,6 @@ """do the update""" args=self.REQUEST.form - resultSet=self.REQUEST.SESSION['personal_www']['resultSet'] news=self.REQUEST.SESSION['personal_www']['news'] conflicts=self.REQUEST.SESSION['personal_www']['conflicts'] @@ -355,6 +354,7 @@ ret+="" ret+="

New entries will be visible on the webpage when an email address has been assigned.

" + else: ret+="" # update @@ -373,7 +375,7 @@ ret+="

Accepted changes to user entries

" ret+="

Change Filemaker-db when necessary.

" - # konflicte + # conflicts for conflict in conflicts.keys(): ignoreEntries=[] displayIgnored=[] @@ -396,13 +398,13 @@ cl=list(conflicts.keys()) if len(resultSet.keys()) > 0: - ret += "

Updating user entries

" + ret += "

Updated user entries

" ret += "" @@ -411,10 +413,8 @@ return ret+"" - def updatePersonalwww_html(self): - """update form for the homepages web form""" - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww.zpt')).__of__(self) - return pt() + """update form for the homepages web form""" + updatePersonalwww_html = PageTemplateFile('zpt/updatePersonalwww', globals()) def updatePersonalwww(self,uploadfile): @@ -424,17 +424,27 @@ dsn=self.getConnectionObj().connection_string #dsn="dbname=personalwww" resultSetTmp=updatePersonalWWW.importFMPXML(uploadfile) - resultSet={} for key in resultSetTmp.keys(): - resultSet[key.replace("MPIWG:","")]=resultSetTmp[key]; + # TODO: properly fix MPIWG: id problem + if key.startswith('MPIWG:'): + # strip MPIWG: from key + newkey = key.replace('MPIWG:','') + # replace key in data + resultSetTmp[key]['key'] = newkey + # replace key in resultSet + resultSet[newkey]=resultSetTmp[key]; + + else: + # copy entry + resultSet[key] = resultSetTmp[key] news,conflicts=updatePersonalWWW.checkImport(dsn, resultSet) self.REQUEST.SESSION['personal_www'] = {'resultSet': resultSet, 'news': news, 'conflicts': conflicts} - pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww_check.zpt')).__of__(self) + pt=PageTemplateFile('zpt/updatePersonalwww_check', globals()).__of__(self) return pt() diff -r c0dcb747cc41 -r 3b517b412f77 MPIWGStaff.py --- a/MPIWGStaff.py Thu Aug 29 09:10:01 2013 +0200 +++ b/MPIWGStaff.py Wed Oct 02 14:40:50 2013 +0200 @@ -403,15 +403,6 @@ return l - - def execute(self,mode,REQUEST=None): - method = getattr(self,mode,None) - if method is not None: - return method(REQUEST); - else: - return "NOT FOUND" - - getUrl = MPIWGHelper.getUrl def getTalks(self, published=True, sortBy='priority'): @@ -459,7 +450,6 @@ def downloadCV(self,REQUEST): """download the cv""" - fname="%s_cv.pdf"%self.getUsername().encode('utf-8') logging.debug(fname) ob=self.folder._getOb("downloadableFiles")._getOb(fname) @@ -468,8 +458,6 @@ def downloadPublications(self,REQUEST): """donwload the publication list""" - - ob=self.folder._getOb("downloadableFiles")._getOb("%s_publications.pdf"%self.getUsername().encode('utf-8')) REQUEST.RESPONSE.redirect(ob.absolute_url()) @@ -481,7 +469,6 @@ def getPathStyle(self, path, selected, style=""): """returns a string with the given style + 'sel' if path == selected.""" - if path == selected: return style + 'sel' else: diff -r c0dcb747cc41 -r 3b517b412f77 SrvTxtUtils.py --- a/SrvTxtUtils.py Thu Aug 29 09:10:01 2013 +0200 +++ b/SrvTxtUtils.py Wed Oct 02 14:40:50 2013 +0200 @@ -7,14 +7,21 @@ import os import stat import urllib -import urllib2 import logging import time import re +import datetime +try: + import httplib2 + httplib = 'httplib2' +except: + logging.warn("Unable to import httplib2! Falling back to urllib2!") + import urllib2 + httplib = 'urllib2' import xml.etree.ElementTree as ET -srvTxtUtilsVersion = "1.10.0" +srvTxtUtilsVersion = "1.12.0" map_months = {'en': [u"", u"January", @@ -153,7 +160,25 @@ return ds -def getHttpData(url, data=None, num_tries=3, timeout=10, noExceptions=False): +def getDate(date): + """return date object from date or datetime date.""" + if isinstance(date, datetime.datetime): + # strip time + return date.date() + + return date + + +def getDatetime(date): + """return datetime object from date or datetime date.""" + if isinstance(date, datetime.date): + # add time 0:00 + return datetime.datetime.combine(date, datetime.time()) + + return date + + +def getHttpData(url, data=None, num_tries=3, timeout=10, username=None, password=None, cache=None, insecure=False, noExceptions=False): """returns result from url+data HTTP request""" # we do GET (by appending data to url) if isinstance(data, str) or isinstance(data, unicode): @@ -162,37 +187,55 @@ elif isinstance(data, dict) or isinstance(data, list) or isinstance(data, tuple): # urlencode url = "%s?%s"%(url,urllib.urlencode(data)) - - response = None + errmsg = None - for cnt in range(num_tries): - try: - logging.debug("getHttpData(#%s %ss) url=%s"%(cnt+1,timeout,url)) - if sys.version_info < (2, 6): - # set timeout on socket -- ugly :-( - import socket - socket.setdefaulttimeout(float(timeout)) - response = urllib2.urlopen(url) - else: - # timeout as parameter - response = urllib2.urlopen(url,timeout=float(timeout)) - # check result? - break - except urllib2.HTTPError, e: - logging.error("getHttpData: HTTP error(%s): %s"%(e.code,e)) - errmsg = str(e) - # stop trying - break - except urllib2.URLError, e: - logging.error("getHttpData: URLLIB error(%s): %s"%(e.reason,e)) - errmsg = str(e) - # stop trying - #break + if httplib == 'httplib2': + # use httplib2 + for cnt in range(num_tries): + try: + logging.debug("getHttp(lib2)Data(#%s %ss) url=%s"%(cnt+1,timeout,url)) + h = httplib2.Http(cache=cache, timeout=float(timeout), disable_ssl_certificate_validation=insecure) + if username: + h.add_credentials(username, password) + + resp, data = h.request(url) + return data + + except httplib2.HttpLib2Error, e: + logging.error("getHttp(lib2)Data: HTTP error(%s): %s"%(e.code,e)) + errmsg = str(e) + # stop trying + break + + else: + # use urllib2 + response = None + for cnt in range(num_tries): + try: + logging.debug("getHttpData(#%s %ss) url=%s"%(cnt+1,timeout,url)) + if sys.version_info < (2, 6): + # set timeout on socket -- ugly :-( + import socket + socket.setdefaulttimeout(float(timeout)) + response = urllib2.urlopen(url) + else: + # timeout as parameter + response = urllib2.urlopen(url,timeout=float(timeout)) + # check result? + data = response.read() + response.close() + return data - if response is not None: - data = response.read() - response.close() - return data + except urllib2.HTTPError, e: + logging.error("getHttpData: HTTP error(%s): %s"%(e.code,e)) + errmsg = str(e) + # stop trying + break + except urllib2.URLError, e: + logging.error("getHttpData: URLLIB error(%s): %s"%(e.reason,e)) + errmsg = str(e) + # stop trying + #break if noExceptions: return None diff -r c0dcb747cc41 -r 3b517b412f77 zpt/updatePersonalwww_check.zpt --- a/zpt/updatePersonalwww_check.zpt Thu Aug 29 09:10:01 2013 +0200 +++ b/zpt/updatePersonalwww_check.zpt Wed Oct 02 14:40:50 2013 +0200 @@ -5,50 +5,55 @@

Check upload

-

New

- - - - - -
first - last - - -
+ +

New

+ + + + + +
first + last + + +
+
-

Conflicts

- - - - - -
first - last - - - - - - - - - - - - - - - - - -
feld
stored:stored value
xml-file:value from xml-file
-
-
+ +

Conflicts

+ + + + + +
first + last + + + + + + + + + + + + + + + + + +
feld
stored:stored value
xml-file:value from xml-file
+
+
+
+

total entries to change.