annotate MPIWGDepartment.py @ 9:5db416602e85

new MPIWGDepartment class.
author casties
date Fri, 15 Feb 2013 20:51:34 +0100
parents
children 325e7c338815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
1 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
2 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
3 from Globals import package_home
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
4 import string
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
5 import re
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
6 import os
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
7 import logging
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
8 from OFS.Folder import Folder
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
9 from AccessControl import ClassSecurityInfo
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
10 import MPIWGHelper
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
11
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
12 class MPIWGDepartment(Folder):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
13 """special object for departments on the MPIWG website """
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
14
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
15 meta_type="MPIWGDepartment"
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
16
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
17 manage_options=Folder.manage_options+(
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
18 {'label':'Configure','action':'changeForm'},
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
19 )
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
20
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
21 #changeWeightForm = PageTemplateFile('zpt/department/manage_change_weight', globals())
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
22 changeForm = PageTemplateFile('zpt/department/manage_config', globals())
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
23
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
24 def __init__(self, id, title=None, weight=0, project_id=0, director='', director_id='',
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
25 type_en=None, type_de=None, title_en=None, title_de=None):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
26 self.id = str(id)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
27 self.weight = weight
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
28 self.project_id = project_id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
29 if title is None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
30 self.title = id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
31 else:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
32 self.title = title
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
33
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
34 self.director = director
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
35 self.director_id = director_id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
36
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
37 # add language folders and sample templates
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
38 mainid = 'main.pt'
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
39 self.manage_addFolder('en')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
40 folder_en = getattr(self, 'en')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
41 main_en = ZopePageTemplate(mainid)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
42 folder_en[mainid] = main_en
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
43 main_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/department/default_template_main.zpt')).read(),'text/html')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
44 if type_en is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
45 folder_en.title = type_en
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
46 if title_en is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
47 main_en.title = title_en
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
48 self.manage_addFolder('de')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
49 folder_de = getattr(self, 'de')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
50 main_de = ZopePageTemplate(mainid)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
51 folder_de[mainid] = main_de
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
52 main_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/department/default_template_main.zpt')).read(),'text/html')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
53 if type_de is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
54 folder_de.title = type_de
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
55 if title_de is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
56 main_de.title = title_de
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
57
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
58
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
59 def index_html(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
60 """default index page"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
61 return self.getMain()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
62
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
63 def getType(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
64 """returns the type of department (from /en/ folder)"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
65 # get Language from MPIWGRoot
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
66 lang = self.getLang()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
67 dir = getattr(self, lang, self.en)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
68 t = dir.title
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
69 if not t:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
70 t = self.title
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
71
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
72 return t
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
73
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
74 def getTitle(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
75 """returns the title of the department (from main.pt)"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
76 # get Language from MPIWGRoot
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
77 lang = self.getLang()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
78 dir = getattr(self, lang, self.en)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
79 pt = getattr(dir, 'main.pt')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
80 t = pt.title
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
81 if not t:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
82 t = self.title
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
83
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
84 return t
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
85
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
86 def getDirector(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
87 """returns the name of the director"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
88 return self.director
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
89
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
90 def getDirectorId(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
91 """returns the id of the director"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
92 return self.director_id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
93
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
94 def getProjectId(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
95 """return the project id"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
96 return self.project_id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
97
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
98 def getUrl(self, baseUrl=None):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
99 """returns URL to this Department"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
100 if baseUrl is None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
101 return self.absolute_url()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
102
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
103 return '%s/%s'%(baseUrl, self.getId())
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
104
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
105 def getPath(self, page, relative=True):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
106 """returns path to template page"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
107 # get Language from MPIWGRoot
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
108 lang = self.getLang()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
109 dir = getattr(self, lang, self.en)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
110 if relative:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
111 return '%s/%s/%s'%(self.getId(), dir.getId(), page)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
112
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
113 pt = getattr(dir, page)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
114 return pt.absolute_url_path()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
115
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
116 def getMainPath(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
117 """returns the path to the main template"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
118 return self.getPath('main.pt')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
119
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
120 def getMain(self, **args):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
121 """returns the main part as PageTemplate"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
122 # get Language from MPIWGRoot
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
123 lang = self.getLang()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
124 dir = getattr(self, lang, self.en)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
125 pt = getattr(dir, 'main.pt')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
126 return pt(**args)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
127
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
128 def getThumbImg(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
129 """returns the image object for the sidebar thumbnail"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
130 img = getattr(self, 'img-thumb.jpg')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
131 return img
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
132
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
133 def getThumbImgUrl(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
134 """returns the URL of the image object for the sidebar thumbnail"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
135 img = getattr(self, 'img-thumb.jpg')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
136 return img.absolute_url()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
137
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
138 def changeWeight(self,weight,RESPONSE=None):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
139 """change weight"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
140 self.weight=weight
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
141 if RESPONSE is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
142 RESPONSE.redirect('manage_main')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
143
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
144 def changeMPIWGDepartment(self, title=None, weight=None, project_id=None, director=None, director_id=None, RESPONSE=None):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
145 """change everything"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
146 if title is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
147 self.title = title
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
148 if weight is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
149 self.weight = weight
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
150 if project_id is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
151 self.project_id = project_id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
152 if director is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
153 self.director = director
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
154 if director_id is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
155 self.director_id = director_id
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
156 if RESPONSE is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
157 RESPONSE.redirect('manage_main')
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
158
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
159 def getBreadcrumbs(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
160 """return list of breadcrumbs from here to the root"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
161 crumbs = [(self.getFullTitle(), self.absolute_url(), self)]
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
162 parent = self.aq_parent
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
163 if hasattr(parent, 'getBreadcrumbs'):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
164 if self.title:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
165 return parent.getBreadcrumbs() + crumbs
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
166 else:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
167 # if there's no title, skip this level
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
168 return parent.getBreadcrumbs()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
169
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
170 return crumbs
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
171
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
172 getSection = MPIWGHelper.getSection
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
173
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
174 getSubSection = MPIWGHelper.getSubSection
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
175
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
176
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
177 def manage_addMPIWGDepartmentForm(self):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
178 """Form for adding"""
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
179 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/department/manage_add_MPIWGDepartment.zpt')).__of__(self)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
180 return pt()
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
181
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
182 def manage_addMPIWGDepartment(self, id, title=None, weight=0, project_id=0, director=None, director_id=None,
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
183 type_en=None, type_de=None, title_en=None, title_de=None, RESPONSE=None):
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
184 "Add a MPIWG Department object"
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
185 newObj=MPIWGDepartment(id,title,weight,project_id,director,director_id,type_en,type_de,title_en,title_de)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
186 self.Destination()._setObject(id,newObj)
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
187 if RESPONSE is not None:
5db416602e85 new MPIWGDepartment class.
casties
parents:
diff changeset
188 RESPONSE.redirect('manage_main')