Mercurial > hg > MPIWGWeb
changeset 36:dbe037d2f574
working on projects.
author | casties |
---|---|
date | Fri, 26 Apr 2013 11:02:02 +0200 |
parents | 38cbbeaf266b |
children | 9b38ba45773b |
files | MPIWGProjects.py |
diffstat | 1 files changed, 80 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/MPIWGProjects.py Thu Apr 25 21:39:57 2013 +0200 +++ b/MPIWGProjects.py Fri Apr 26 11:02:02 2013 +0200 @@ -313,8 +313,11 @@ # {'label':'Edit Themes & Disciplines','action':'editMPIWGDisciplinesThemesForm'}, # {'label':'Versionmanager','action':'versionManageForm'}, - # enthaelt die Lister der verantwortlichen Wissenschaftler in der Form (NAME, KEY), key ist "" falls Wissenschaftler nicht an unserem Haus + # list of responsible scientists. entries are dicts with name, key, and username. responsibleScientistsList = [] + + # thumbnail image + projectThumb = None # # templates @@ -804,14 +807,20 @@ def getThumbUrl(self, default='http://defaultthumb.jpg'): """returns the URL of the project thumbnail image""" - # TODO: improve this - imgs = self.getImageList() - url = default - if len(imgs) > 0: - img = imgs[0] - url = img.absolute_url() - - return url + thumb = self.projectThumb + if thumb is None: + # get thumb from list + imgs = self.getImageList() + url = default + if len(imgs) > 0: + thumb = imgs[0] + self.projectThumb = thumb + + if thumb is None: + return None + + return thumb.absolute_url() + def getImageList(self): """returns the sorted list of images for this project""" @@ -1824,6 +1833,67 @@ if RESPONSE: RESPONSE.redirect("./thesaurus/main.html?project=" + id) return + + + def updateProjectMembers(self, updateResponsibleScientistsList=False): + """updates project-member table""" + if updateResponsibleScientistsList: + # create responsibleScientistsList automatically + newScientists = {} + names = p.identifyNames(p.getResponsibleScientists()) + for name in names.keys(): + logging.debug("updateAllProjectMembers: name=%s" % repr(name)) + members = names[name] + if len(members) > 0: + # take the first matching name + newScientists[name] = {'name': name, 'key' : members[0].key, 'username' : re.sub('@mpiwg-berlin\.mpg\.de', '', members[0].e_mail)} + + self.setResponsibleScientistsList(newScientists) + + memberlist = self.getResponsibleScientistsList() + + # clear projects_members table + pNum = self.getNumber() + if not pNum or not isinstance(pNum, basestring): + logging.error("updateProjectMembers: not a valid project number: %s" % repr(pNum)) + return + + if len(memberlist) == 0: + return + + # update old format responsibleScientistsList + if isinstance(memberlist[0], tuple): + logging.debug("updateAllProjectMembers: updating memberlist for project %s" % self) + newScientists = {} + for m in memberlist: + name = m[0] + key = m[1] + username = None + if key: + if isinstance(key, list): + key = key[0] + + # get username from db + member = self.executeZSQL("select * from personal_www where lower(key) = %s", [key.lower()]) + if len(member) > 0: + username = re.sub('@mpiwg-berlin\.mpg\.de', '', member[0].e_mail) + + newScientists[name] = {'name': name, 'key' : key, 'username' : username} + + # set and re-read new list + self.setResponsibleScientistsList(newScientists) + memberlist = self.getResponsibleScientistsList() + + # fill projects_members table + self.executeZSQL("delete from projects_members where project_number = %s", [pNum]) + for m in memberlist: + memberKey = m.get('key') + if not memberKey or not isinstance(memberKey, basestring): + logging.error("updateProjectMembers: not a valid member key: %s" % repr(memberKey)) + continue + + self.executeZSQL("insert into projects_members (project_number, member_key) values (%s, %s)", (pNum, memberKey)) + def manage_addMPIWGProjectForm(self): """form for adding the project""" @@ -1936,59 +2006,7 @@ cnt += 1 memberlist = [] logging.debug("updateAllProjectMembers: updating project %s" % p) - if updateResponsibleScientistsList: - newScientists = {} - names = p.identifyNames(p.getResponsibleScientists()) - for name in names.keys(): - logging.debug("updateAllProjectMembers: name=%s" % repr(name)) - members = names[name] - if len(members) > 0: - # take the first matching name - newScientists[name] = {'name': name, 'key' : members[0].key, 'username' : re.sub('@mpiwg-berlin\.mpg\.de', '', members[0].e_mail)} - - p.setResponsibleScientistsList(newScientists) - - memberlist = p.getResponsibleScientistsList() - - if len(memberlist) == 0: - continue - - # update old format responsibleScientistsList - if isinstance(memberlist[0], tuple): - logging.debug("updateAllProjectMembers: updating memberlist for project %s" % p) - newScientists = {} - for m in memberlist: - name = m[0] - key = m[1] - username = None - if key: - if isinstance(key, list): - key = key[0] - - # get username from db - member = self.executeZSQL("select * from personal_www where lower(key) = %s", [key.lower()]) - if len(member) > 0: - username = re.sub('@mpiwg-berlin\.mpg\.de', '', member[0].e_mail) - - newScientists[name] = {'name': name, 'key' : key, 'username' : username} - - # set and re-read new list - p.setResponsibleScientistsList(newScientists) - memberlist = p.getResponsibleScientistsList() - - # add members to table - for m in memberlist: - memberKey = m.get('key') - if not memberKey or not isinstance(memberKey, basestring): - logging.error("updateAllProjectMembers: not a valid member key: %s" % repr(memberKey)) - continue - - pNum = p.getNumber() - if not pNum or not isinstance(pNum, basestring): - logging.error("updateAllProjectMembers: not a valid project number: %s" % repr(pNum)) - continue - - self.executeZSQL('insert into projects_members (project_number, member_key) values (%s, %s)', (pNum, memberKey)) + p.updateProjectMembers(updateResponsibleScientistsList=updateResponsibleScientistsList) return "updated %s projects!" % cnt @@ -2007,6 +2025,3 @@ if RESPONSE is not None: RESPONSE.redirect('manage_main') - - -