# HG changeset patch # User casties # Date 1360957894 -3600 # Node ID 5db416602e85abd6685e62e10331c3df5ea571b3 # Parent 0a7691055ea3ce355e5ebcc71d034ef584fd07e5 new MPIWGDepartment class. diff -r 0a7691055ea3 -r 5db416602e85 MPIWGDepartment.py --- /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') diff -r 0a7691055ea3 -r 5db416602e85 MPIWGFeature.py --- 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 diff -r 0a7691055ea3 -r 5db416602e85 MPIWGRoot.py --- 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']) diff -r 0a7691055ea3 -r 5db416602e85 __init__.py --- 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 + ) + ) + diff -r 0a7691055ea3 -r 5db416602e85 zpt/department/default_template_main.zpt --- /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 @@ + + + + + + + + + + diff -r 0a7691055ea3 -r 5db416602e85 zpt/department/manage_add_MPIWGDepartment.zpt --- /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 @@ + + +

Create MPIWGWeb Department object

+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ID
Weight (number for sorting departments)
Project ID (number for identifying projects)
Director
ID/username of director
Title in English
Title in German
+ + + +
+ + diff -r 0a7691055ea3 -r 5db416602e85 zpt/department/manage_change_weight.zpt --- /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 @@ + +
Header
+ +

Tabs

+ +

Change MPIWG Department

+
+ + + + + + + + diff -r 0a7691055ea3 -r 5db416602e85 zpt/department/manage_config.zpt --- /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 @@ + +
Header
+ +

Tabs

+ +

Change MPIWG Department

+ +
Weight
+ + + + + + + + + + + + + + + + + +
Weight (number for sorting departments)
Project ID (number for identifying projects)
Director
ID/username of director
+ + +