Mercurial > hg > MPIWGWeb
diff MPIWGDepartment.py @ 9:5db416602e85
new MPIWGDepartment class.
author | casties |
---|---|
date | Fri, 15 Feb 2013 20:51:34 +0100 |
parents | |
children | 325e7c338815 |
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')