changeset 40:fd8e78bbc5ed

more work on projects. new member template uses new getProjectsOfMember. new isActiveMember in MPIWGStaffFolder.
author casties
date Fri, 26 Apr 2013 21:18:01 +0200
parents bbad6a092861
children cacba38c268c
files MPIWGProjects.py MPIWGRoot.py MPIWGStaff.py zpt/project/project_template.zpt zpt/staff/member_index_html.zpt
diffstat 5 files changed, 35 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/MPIWGProjects.py	Fri Apr 26 20:31:21 2013 +0200
+++ b/MPIWGProjects.py	Fri Apr 26 21:18:01 2013 +0200
@@ -1759,9 +1759,9 @@
             username = None
             if key:
                 # 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)
+                member = self.getMPIWGRoot().getStaffFolder().getMember(key=key)
+                if member is not None:
+                    username = member.getUsername()
                     
             # schreibe keys und namen in die Liste
             checkedScientists[names[nr]] = {'name' : name, 'key' : key, 'username' : username}
@@ -2016,6 +2016,7 @@
 
         return "updated %s projects!" % cnt
 
+
     security.declareProtected('View management screens', 'updateAllProjects')
     def updateAllProjects(self, updateResponsibleScientistsList=False):
         """patches all current projects for old problems"""
@@ -2046,9 +2047,9 @@
                             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)
+                        member = self.getMPIWGRoot().getStaffFolder().getMember(key=key)
+                        if member is not None:
+                            username = member.getUsername()
                             
                     newScientists[name] = {'name': name, 'key' : key, 'username' : username}
                     
--- a/MPIWGRoot.py	Fri Apr 26 20:31:21 2013 +0200
+++ b/MPIWGRoot.py	Fri Apr 26 21:18:01 2013 +0200
@@ -286,27 +286,28 @@
                 
         return None
 
+
     def getProjectFolder(self):
         """returns the MPIWGProjectFolder"""
         dir = getattr(self, 'projects', None)
         return dir
 
+
+    def getStaffFolder(self):
+        """returns the MPIWGStaffFolder"""
+        dir = getattr(self, 'members_test', None) # TODO: fix the test
+        return dir
+
+
     def getMPIWGRoot(self):
         """returns the MPIWG root"""
         return self
 
+
     def MPIWGrootURL(self):
         """returns the URL to the root"""
         return self.absolute_url()
-        
-    #WTF?
-    def patchProjects(self,RESPONSE):
-        """patch"""
-        projects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'])
-        for project in projects:
-                tmp=project[1].WEB_project_description[0].replace("/CD/projects/","")[0:]
-                setattr(project[1],'WEB_project_description',[tmp[0:]])
-                RESPONSE.write("<p>%s</p>\n"%project[0])
+
             
     def replaceNotEmpty(self,format,field):
         """replace not empty"""
@@ -325,7 +326,7 @@
                                             _op_publish_the_data='eq',
                                             publish_the_data='yes'), 0)
         
-        logging.info("ACTIVE_MEMBER  %s"%ret)
+        logging.info("MPIWGROOT ACTIVE_MEMBER  %s"%ret)
         if ret:
             return True
         else:
--- a/MPIWGStaff.py	Fri Apr 26 20:31:21 2013 +0200
+++ b/MPIWGStaff.py	Fri Apr 26 21:18:01 2013 +0200
@@ -1093,13 +1093,20 @@
                 member = MPIWGStaffMember(self, dbresult=content)
         
         elif key is not None:
-            content = folder.executeZSQL("select * from personal_www where key = %s", [key])
+            # TODO: sometimes key is lowercased (e.g. responsibleScientistsList), we should fix the data
+            content = self.executeZSQL("select * from personal_www where lower(key) = %s", [key.lower()])
             if len(content) > 0:
                 member = MPIWGStaffMember(self, dbresult=content)             
          
         return member
     
 
+    def isActiveMember(self, key):
+        """returns if member key is active"""
+        res = self.executeZSQL("select * from personal_www where lower(key) = %s and publish_the_data = 'yes'", [key.lower()])
+        return len(res) > 0
+
+
     def sortPriority(self,list):
         def sort(x,y):
             try:
@@ -1544,7 +1551,7 @@
         REQUEST.response.redirect(self.REQUEST['HTTP_REFERER'])
  
    
-    def invalidate_chache(self):
+    def invalidate_cache(self):
         #TODO: How to invalidate the varnish cache from the member object
         pass;
         
--- a/zpt/project/project_template.zpt	Fri Apr 26 20:31:21 2013 +0200
+++ b/zpt/project/project_template.zpt	Fri Apr 26 21:18:01 2013 +0200
@@ -26,7 +26,7 @@
     <h1 tal:content="here/getProjectTitle">History of Scientific Objectivity, 18th-19th Cs</h1>
     <p class="maintext_authors">
       <tal:block tal:repeat="person here/getResponsibleScientistsList">
-          <a tal:omit-tag="python:not (person['username'] and here.isActiveMember(person['key']))"
+          <a tal:omit-tag="python:not (person['username'] and here.getStaffFolder().isActiveMember(key=person['key']))"
             tal:attributes="href string:$root/${secmap/staff}/members/${person/username}" tal:content="person/name"> Name of
             responsible person</a><tal:block tal:condition="not:repeat/person/end">, </tal:block>
       </tal:block>
@@ -68,7 +68,7 @@
       tal:define="parents here/getSuperProjects;" tal:condition="parents">
       <div class="project parent">
         Part of:
-        <a tal:define="parent python:parents[-1]" tal:content="parent/getProjectTitle"
+        <a tal:define="parent python:parents[-1]" tal:content="parent/getLabel"
            tal:attributes="href python:parent.getUrl(baseUrl=proBaseUrl)+test(here.isArchivedProject(),'?showArchive=yes','')" />
       </div>
       <!-- end parent -->
@@ -79,9 +79,8 @@
     <div class="sideblock" tal:define="projects here/getRelatedProjects" tal:condition="projects">
       <h2>Related Projects</h2>
       <div class="item" tal:repeat="project python:projects">
-        <a tal:attributes="href
-          python:root+'/'+secmap['research']+'/projects/'+project[1].objid"
-          tal:content="python:project[1].projectWEB_title" />
+        <a tal:attributes="href python:proBaseUrl+'/'+project.objid"
+          tal:content="python:project.projectWEB_title" />
       </div>
       <!-- end item -->
     </div>
--- a/zpt/staff/member_index_html.zpt	Fri Apr 26 20:31:21 2013 +0200
+++ b/zpt/staff/member_index_html.zpt	Fri Apr 26 21:18:01 2013 +0200
@@ -138,13 +138,11 @@
       </div>
     </div>
 
-    <div class="sideblock" tal:condition="python:here.getProjectsOfMember(key=key)">
+    <div class="sideblock" tal:define="projects python:here.getProjectFolder().getProjectsOfMember(key=key)" tal:condition="projects">
       <h2>Projects</h2>
-      <div class="project" tal:repeat="project python:here.getProjectsOfMember(key=key)">
-        <tal:x tal:condition="python:here.isActual(project)">
-          <a tal:attributes="href python:root+'/'+secmap['research']+'/projects/'+project.getId()+'/index.html'"
-            tal:content="python:here.decode(project.getContent('WEB_title'))" />
-        </tal:x>
+      <div class="project" tal:repeat="project projects">
+        <a tal:attributes="href python:project.getUrl(baseUrl=root+'/'+secmap['research']+'/projects/')"
+           tal:content="project/getLabel" />
       </div>
     </div>