Mercurial > hg > MPIWGWeb
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>