changeset 9:5db416602e85

new MPIWGDepartment class.
author casties
date Fri, 15 Feb 2013 20:51:34 +0100
parents 0a7691055ea3
children c711fe75d0ac
files MPIWGDepartment.py MPIWGFeature.py MPIWGRoot.py __init__.py zpt/department/default_template_main.zpt zpt/department/manage_add_MPIWGDepartment.zpt zpt/department/manage_change_weight.zpt zpt/department/manage_config.zpt
diffstat 8 files changed, 309 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MPIWGDepartment.py	Fri Feb 15 20:51:34 2013 +0100
@@ -0,0 +1,188 @@
+from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
+from Globals import package_home
+import string
+import re
+import os
+import logging
+from OFS.Folder import Folder
+from AccessControl import ClassSecurityInfo
+import MPIWGHelper
+
+class MPIWGDepartment(Folder):
+    """special object for departments on the MPIWG website """
+
+    meta_type="MPIWGDepartment"
+
+    manage_options=Folder.manage_options+(
+        {'label':'Configure','action':'changeForm'},
+        )
+
+    #changeWeightForm = PageTemplateFile('zpt/department/manage_change_weight', globals())
+    changeForm = PageTemplateFile('zpt/department/manage_config', globals())
+
+    def __init__(self, id, title=None, weight=0, project_id=0, director='', director_id='', 
+                 type_en=None, type_de=None, title_en=None, title_de=None):
+        self.id = str(id)
+        self.weight = weight
+        self.project_id = project_id
+        if title is None:
+            self.title = id
+        else:
+            self.title = title
+
+        self.director = director
+        self.director_id = director_id
+
+        # add language folders and sample templates
+        mainid = 'main.pt'
+        self.manage_addFolder('en')
+        folder_en = getattr(self, 'en')
+        main_en = ZopePageTemplate(mainid)
+        folder_en[mainid] = main_en
+        main_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/department/default_template_main.zpt')).read(),'text/html')
+        if type_en is not None:
+            folder_en.title = type_en        
+        if title_en is not None:
+            main_en.title = title_en        
+        self.manage_addFolder('de')
+        folder_de = getattr(self, 'de')
+        main_de = ZopePageTemplate(mainid)
+        folder_de[mainid] = main_de
+        main_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/department/default_template_main.zpt')).read(),'text/html')        
+        if type_de is not None:
+            folder_de.title = type_de        
+        if title_de is not None:
+            main_de.title = title_de
+
+
+    def index_html(self):
+        """default index page"""
+        return self.getMain()
+    
+    def getType(self):
+        """returns the type of department (from /en/ folder)"""
+        # get Language from MPIWGRoot
+        lang = self.getLang()
+        dir = getattr(self, lang, self.en)
+        t = dir.title
+        if not t:
+            t = self.title
+            
+        return t
+    
+    def getTitle(self):
+        """returns the title of the department (from main.pt)"""
+        # get Language from MPIWGRoot
+        lang = self.getLang()
+        dir = getattr(self, lang, self.en)
+        pt = getattr(dir, 'main.pt')
+        t = pt.title
+        if not t:
+            t = self.title
+            
+        return t
+    
+    def getDirector(self):
+        """returns the name of the director"""
+        return self.director
+    
+    def getDirectorId(self):
+        """returns the id of the director"""
+        return self.director_id
+
+    def getProjectId(self):
+        """return the project id"""
+        return self.project_id
+    
+    def getUrl(self, baseUrl=None):
+        """returns URL to this Department"""
+        if baseUrl is None:
+            return self.absolute_url()
+
+        return '%s/%s'%(baseUrl, self.getId())
+            
+    def getPath(self, page, relative=True):
+        """returns path to template page"""
+        # get Language from MPIWGRoot
+        lang = self.getLang()
+        dir = getattr(self, lang, self.en)
+        if relative:
+            return '%s/%s/%s'%(self.getId(), dir.getId(), page)
+        
+        pt = getattr(dir, page)
+        return pt.absolute_url_path()
+
+    def getMainPath(self):
+        """returns the path to the main template"""
+        return self.getPath('main.pt')
+
+    def getMain(self, **args):
+        """returns the main part as PageTemplate"""
+        # get Language from MPIWGRoot
+        lang = self.getLang()
+        dir = getattr(self, lang, self.en)
+        pt = getattr(dir, 'main.pt')
+        return pt(**args)
+    
+    def getThumbImg(self):
+        """returns the image object for the sidebar thumbnail"""
+        img = getattr(self, 'img-thumb.jpg')
+        return img
+        
+    def getThumbImgUrl(self):
+        """returns the URL of the image object for the sidebar thumbnail"""
+        img = getattr(self, 'img-thumb.jpg')
+        return img.absolute_url()
+
+    def changeWeight(self,weight,RESPONSE=None):
+        """change weight"""
+        self.weight=weight
+        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):
+        """change everything"""
+        if title is not None:
+            self.title = title
+        if weight is not None:
+            self.weight = weight
+        if project_id is not None:
+            self.project_id = project_id
+        if director is not None:
+            self.director = director
+        if director_id is not None:
+            self.director_id = director_id
+        if RESPONSE is not None:
+            RESPONSE.redirect('manage_main')
+       
+    def getBreadcrumbs(self):
+        """return list of breadcrumbs from here to the root"""
+        crumbs = [(self.getFullTitle(), self.absolute_url(), self)]
+        parent = self.aq_parent
+        if hasattr(parent, 'getBreadcrumbs'):
+            if self.title:
+                return parent.getBreadcrumbs() + crumbs
+            else:
+                # if there's no title, skip this level
+                return parent.getBreadcrumbs()
+            
+        return crumbs
+    
+    getSection = MPIWGHelper.getSection
+
+    getSubSection = MPIWGHelper.getSubSection
+    
+
+def manage_addMPIWGDepartmentForm(self):
+    """Form for adding"""
+    pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/department/manage_add_MPIWGDepartment.zpt')).__of__(self)
+    return pt()
+
+def manage_addMPIWGDepartment(self, id, title=None, weight=0, project_id=0, director=None, director_id=None, 
+                              type_en=None, type_de=None, title_en=None, title_de=None, RESPONSE=None):
+    "Add a MPIWG Department object"
+    newObj=MPIWGDepartment(id,title,weight,project_id,director,director_id,type_en,type_de,title_en,title_de)
+    self.Destination()._setObject(id,newObj)
+    if RESPONSE is not None:
+        RESPONSE.redirect('manage_main')
--- a/MPIWGFeature.py	Thu Feb 14 20:38:30 2013 +0100
+++ b/MPIWGFeature.py	Fri Feb 15 20:51:34 2013 +0100
@@ -1,4 +1,5 @@
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
+from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
 from Globals import package_home
 import string
 import re
--- a/MPIWGRoot.py	Thu Feb 14 20:38:30 2013 +0100
+++ b/MPIWGRoot.py	Fri Feb 15 20:51:34 2013 +0100
@@ -278,6 +278,16 @@
         # return pure list of objects
         return [f[1] for f in features]
 
+    def getDepartments(self):
+        """returns a list of the Departments"""
+        dir = getattr(self, 'departments', None)
+        if dir is None:
+            return []
+        
+        depts = dir.objectItems(['MPIWGDepartment'])
+        depts.sort(sortWeight)
+        # return pure list of objects
+        return [f[1] for f in depts]
 
     def getMPIWGRoot(self):
         """returns the MPIWG root"""
@@ -287,15 +297,6 @@
         """returns the URL to the root"""
         return self.absolute_url()
         
-    def upDateSQL(self,fileName):
-        """updates SQL databases using fm.jar"""
-        fmJarPath=os.path.join(package_home(globals()), 'updateSQL/fm.jar')
-        xmlPath=os.path.join(package_home(globals()), "updateSQL/%s"%fileName)
-        logger("MPIWG Web",logging.INFO,"java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,xmlPath))
-        ret=os.popen("java -classpath %s -Djava.awt.headless=true Convert %s"%(fmJarPath,xmlPath),"r").read()
-        logger("MPIWG Web",logging.INFO,"result convert: %s"%ret)
-        return 1
-    
     def patchProjects(self,RESPONSE):
         """patch"""
         projects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'])
--- a/__init__.py	Thu Feb 14 20:38:30 2013 +0100
+++ b/__init__.py	Fri Feb 15 20:51:34 2013 +0100
@@ -3,6 +3,7 @@
 import MPIWGLink
 import MPIWGTemplate
 import MPIWGFeature
+import MPIWGDepartment
 import MPIWGFolder
 import MPIWGRoot
 
@@ -75,3 +76,11 @@
           )
         )
 
+    context.registerClass(
+        MPIWGDepartment.MPIWGDepartment,
+        constructors = (
+          MPIWGDepartment.manage_addMPIWGDepartmentForm,
+          MPIWGDepartment.manage_addMPIWGDepartment
+          )
+        )
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zpt/department/default_template_main.zpt	Fri Feb 15 20:51:34 2013 +0100
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+        "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
+<html metal:use-macro="here/main_template/macros/page">
+ <tal:block metal:fill-slot="body">
+    <!-- Insert here the main text -->
+
+
+    
+    <!-- Don't change from here -->
+  </tal:block>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zpt/department/manage_add_MPIWGDepartment.zpt	Fri Feb 15 20:51:34 2013 +0100
@@ -0,0 +1,44 @@
+<html>
+<body>
+  <h2>Create MPIWGWeb Department object</h2>
+
+
+
+  <form method="post" action="manage_addMPIWGDepartment">
+    <table>
+      <tr>
+        <td><b>ID</b></td>
+        <td><input type="text" size="10" name="id"></td>
+      </tr>
+      <tr>
+        <td><i>Weight</i> (number for sorting departments)</td>
+        <td><input type="text" size="5" name="weight"></td>
+      </tr>
+      <tr>
+        <td><i>Project ID</i> (number for identifying projects)</td>
+        <td><input type="text" size="5" name="project_id"></td>
+      </tr>
+      <tr>
+        <td><i>Director</i></td>
+        <td><input type="text" size="40" name="director"></td>
+      </tr>
+      <tr>
+        <td><i>ID/username of director</i></td>
+        <td><input type="text" size="20" name="director_id"></td>
+      </tr>
+      <tr>
+        <td><i>Title in English</i></td>
+        <td><input type="text" size="40" name="title_en"></td>
+      </tr>
+      <tr>
+        <td><i>Title in German</i></td>
+        <td><input type="text" size="40" name="title_de"></td>
+      </tr>
+
+    </table>
+
+    <input type="submit" value="create">
+
+  </form>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zpt/department/manage_change_weight.zpt	Fri Feb 15 20:51:34 2013 +0100
@@ -0,0 +1,16 @@
+<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>
+<!-- end of ZOPE management tabs -->
+<h2>Change MPIWG Department</h2>
+<form action="changeWeight" method=post>
+<table>
+<tr>
+  <td><i>Weight</i></td>
+  <td><input type="text" size="5" name="weight" tal:attributes="value here/weight|string:0"></td>
+</tr>
+<input type="submit">
+</form>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/zpt/department/manage_config.zpt	Fri Feb 15 20:51:34 2013 +0100
@@ -0,0 +1,30 @@
+<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>
+<!-- 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>
+<input type="submit">
+</form>
+</html>