changeset 13:325e7c338815

research websites page. better department editing.
author casties
date Mon, 04 Mar 2013 18:18:28 +0100
parents 400da3ba5fa0
children 69d221c3e010
files MPIWGDepartment.py MPIWGRoot.py css/mpiwg.css zpt/department/manage_add_MPIWGDepartment.zpt zpt/department/manage_config.zpt
diffstat 5 files changed, 96 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/MPIWGDepartment.py	Fri Mar 01 17:57:36 2013 +0100
+++ b/MPIWGDepartment.py	Mon Mar 04 18:18:28 2013 +0100
@@ -60,10 +60,12 @@
         """default index page"""
         return self.getMain()
     
-    def getType(self):
+    def getType(self, lang=None):
         """returns the type of department (from /en/ folder)"""
-        # get Language from MPIWGRoot
-        lang = self.getLang()
+        if lang is None:
+            # get Language from MPIWGRoot
+            lang = self.getLang()
+            
         dir = getattr(self, lang, self.en)
         t = dir.title
         if not t:
@@ -71,10 +73,12 @@
             
         return t
     
-    def getTitle(self):
+    def getTitle(self, lang=None):
         """returns the title of the department (from main.pt)"""
-        # get Language from MPIWGRoot
-        lang = self.getLang()
+        if lang is None:
+            # get Language from MPIWGRoot
+            lang = self.getLang()
+            
         dir = getattr(self, lang, self.en)
         pt = getattr(dir, 'main.pt')
         t = pt.title
@@ -141,7 +145,8 @@
         if RESPONSE is not None:
             RESPONSE.redirect('manage_main')
 
-    def changeMPIWGDepartment(self, title=None, weight=None, project_id=None, director=None, director_id=None, RESPONSE=None):
+    def changeMPIWGDepartment(self, title=None, weight=None, project_id=None, director=None, director_id=None, 
+                              type_en=None, type_de=None, title_en=None, title_de=None, RESPONSE=None):
         """change everything"""
         if title is not None:
             self.title = title
@@ -153,6 +158,21 @@
             self.director = director
         if director_id is not None:
             self.director_id = director_id
+        folder_en = self.get('en', None)
+        if folder_en is not None:
+            if type_en is not None:
+                folder_en.title = type_en        
+            main_en = folder_en.get('main.pt', None)
+            if main_en is not None and title_en is not None:
+                main_en.title = title_en        
+        folder_de = self.get('de', None)
+        if folder_de is not None:
+            if type_de is not None:
+                folder_de.title = type_de        
+            main_de = folder_de.get('main.pt', None)
+            if main_de is not None and title_de is not None:
+                main_de.title = title_de        
+
         if RESPONSE is not None:
             RESPONSE.redirect('manage_main')
        
--- a/MPIWGRoot.py	Fri Mar 01 17:57:36 2013 +0100
+++ b/MPIWGRoot.py	Mon Mar 04 18:18:28 2013 +0100
@@ -258,11 +258,9 @@
     
     def getSections(self):
         """returns a list of all sections i.e. top-level MPIWGFolders"""
-        secs = self.objectItems(['MPIWGFolder'])
-        secs.sort(sortWeight)
-        #logging.debug("root: %s secs: %s"%(repr(self.absolute_url()), repr(secs)))
-        # return pure list of objects
-        return [s[1] for s in secs]
+        items = self.objectValues(spec='MPIWGFolder')[:]
+        items.sort(key=lambda x:getattr(x, 'weight', '0'))
+        return items
 
     def getSectionStyle(self, name, style=""):
         """returns a string with the given style + '-sel' if the current section == name"""
@@ -273,14 +271,16 @@
 
     def getFeatures(self, num=None):
         """returns a list of the last num Features"""
-        dir = getattr(self, 'features')
-        features = dir.objectItems(['MPIWGFeature'])
-        features.sort(sortWeight)
+        dir = getattr(self, 'features', None)
+        if dir is None:
+            return []
+
+        items = dir.objectValues(spec='MPIWGFeature')[:]
+        items.sort(key=lambda x:getattr(x, 'weight', '0'))
         if num is not None:
             # take only the last num elements
-            features = features[-num:]
-        # return pure list of objects
-        return [f[1] for f in features]
+            items = items[-num:]
+        return items
 
     def getDepartments(self):
         """returns a list of the Departments"""
@@ -288,10 +288,9 @@
         if dir is None:
             return []
         
-        depts = dir.objectItems(['MPIWGDepartment'])
-        depts.sort(sortWeight)
-        # return pure list of objects
-        return [f[1] for f in depts]
+        items = dir.objectValues(spec='MPIWGDepartment')[:]
+        items.sort(key=lambda x:getattr(x, 'weight', '0'))
+        return items
 
     def getMPIWGRoot(self):
         """returns the MPIWG root"""
@@ -301,6 +300,7 @@
         """returns the URL to the root"""
         return self.absolute_url()
         
+    #WTF?
     def patchProjects(self,RESPONSE):
         """patch"""
         projects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'])
--- a/css/mpiwg.css	Fri Mar 01 17:57:36 2013 +0100
+++ b/css/mpiwg.css	Mon Mar 04 18:18:28 2013 +0100
@@ -570,6 +570,13 @@
 	margin-top: 0;
 }
 
+div.sideblock h3 {
+    font-size: 12px;
+    margin-top: 5px;
+    padding-bottom: 5px;
+	border-bottom: 1px solid #dccbae;
+}
+
 /*
  * footer
  */
--- a/zpt/department/manage_add_MPIWGDepartment.zpt	Fri Mar 01 17:57:36 2013 +0100
+++ b/zpt/department/manage_add_MPIWGDepartment.zpt	Mon Mar 04 18:18:28 2013 +0100
@@ -2,8 +2,6 @@
 <body>
   <h2>Create MPIWGWeb Department object</h2>
 
-
-
   <form method="post" action="manage_addMPIWGDepartment">
     <table>
       <tr>
@@ -20,14 +18,22 @@
       </tr>
       <tr>
         <td><i>Director</i></td>
-        <td><input type="text" size="40" name="director"></td>
+        <td><input type="text" size="20" name="director"></td>
       </tr>
       <tr>
         <td><i>ID/username of director</i></td>
-        <td><input type="text" size="20" name="director_id"></td>
+        <td><input type="text" size="10" name="director_id"></td>
       </tr>
       <tr>
-        <td><i>Title in English</i></td>
+        <td><i>Type in English</i> (e.g. "Max Planck Research Group")</td>
+        <td><input type="text" size="20" name="type_en"></td>
+      </tr>
+      <tr>
+        <td><i>Type in German</i></td>
+        <td><input type="text" size="20" name="type_de"></td>
+      </tr>
+      <tr>
+        <td><i>Title in English</i>  (e.g. "Art and Knowledge in Pre-Modern Europe")</td>
         <td><input type="text" size="40" name="title_en"></td>
       </tr>
       <tr>
--- a/zpt/department/manage_config.zpt	Fri Mar 01 17:57:36 2013 +0100
+++ b/zpt/department/manage_config.zpt	Mon Mar 04 18:18:28 2013 +0100
@@ -1,30 +1,45 @@
 <html>
 <div tal:replace="structure here/manage_page_header">Header</div>
 <!-- ZOPE management tabs -->
-<h2 tal:define="manage_tabs_message options/manage_tabs_message | nothing"
-    tal:replace="structure here/manage_tabs">Tabs</h2>
+<h2 tal:define="manage_tabs_message options/manage_tabs_message | nothing" tal:replace="structure here/manage_tabs">Tabs</h2>
 <!-- end of ZOPE management tabs -->
 <h2>Change MPIWG Department</h2>
 <form action="changeMPIWGDepartment" method="post">
-<table>
-<tr>
-  <td><i>Weight</i> (number for sorting departments)</td>
-  <td><input type="text" size="5" name="weight" tal:attributes="value here/weight|string:0"></td>
-</tr>
-<tr>
-  <td><i>Project ID</i> (number for identifying projects)</td>
-  <td><input type="text" size="5" name="project_id" tal:attributes="value here/project_id|string:0"></td>
-</tr>
-<tr>
-  <td><i>Director</i></td>
-  <td><input type="text" size="40" name="director" tal:attributes="value here/director|nothing"></td>
-</tr>
-<tr>
-  <td><i>ID/username of director</i></td>
-  <td><input type="text" size="20" name="director_id" tal:attributes="value here/director_id|nothing"></td>
-</tr>
+  <table>
+    <tr>
+      <td><i>Weight</i> (number for sorting departments)</td>
+      <td><input type="text" size="5" name="weight" tal:attributes="value here/weight|string:0"></td>
+    </tr>
+    <tr>
+      <td><i>Project ID</i> (number for identifying projects)</td>
+      <td><input type="text" size="5" name="project_id" tal:attributes="value here/project_id|string:0"></td>
+    </tr>
+    <tr>
+      <td><i>Director</i></td>
+      <td><input type="text" size="40" name="director" tal:attributes="value here/director|nothing"></td>
+    </tr>
+    <tr>
+      <td><i>ID/username of director</i></td>
+      <td><input type="text" size="20" name="director_id" tal:attributes="value here/director_id|nothing"></td>
+    </tr>
+    <tr>
+      <td><i>Type in English</i> (e.g. "Max Planck Research Group")</td>
+      <td><input type="text" size="20" name="type_en" tal:attributes="value python:here.getType(lang='en')"></td>
+    </tr>
+    <tr>
+      <td><i>Type in German</i></td>
+      <td><input type="text" size="20" name="type_de" tal:attributes="value python:here.getType(lang='de')"></td>
+    </tr>
+    <tr>
+      <td><i>Title in English</i> (e.g. "Art and Knowledge in Pre-Modern Europe")</td>
+      <td><input type="text" size="40" name="title_en" tal:attributes="value python:here.getTitle(lang='en')"></td>
+    </tr>
+    <tr>
+      <td><i>Title in German</i></td>
+      <td><input type="text" size="40" name="title_de" tal:attributes="value python:here.getTitle(lang='de')"></td>
+    </tr>
 
-</table>
-<input type="submit">
+  </table>
+  <input type="submit">
 </form>
 </html>