Mercurial > hg > MPIWGWeb
annotate MPIWGDepartment.py @ 170:485bf377913a
fix staff editing pages.
author | casties |
---|---|
date | Fri, 07 Jun 2013 16:29:34 +0200 |
parents | 246d87d33f25 |
children | dbc397782c76 |
rev | line source |
---|---|
9 | 1 from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
2 from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate | |
3 from Globals import package_home | |
4 import string | |
5 import re | |
6 import os | |
7 import logging | |
8 from OFS.Folder import Folder | |
9 from AccessControl import ClassSecurityInfo | |
27 | 10 |
11 from SrvTxtUtils import getAt | |
12 | |
9 | 13 import MPIWGHelper |
14 | |
15 class MPIWGDepartment(Folder): | |
16 """special object for departments on the MPIWG website """ | |
17 | |
18 meta_type="MPIWGDepartment" | |
19 | |
20 manage_options=Folder.manage_options+( | |
21 {'label':'Configure','action':'changeForm'}, | |
22 ) | |
23 | |
24 #changeWeightForm = PageTemplateFile('zpt/department/manage_change_weight', globals()) | |
25 changeForm = PageTemplateFile('zpt/department/manage_config', globals()) | |
26 | |
27 def __init__(self, id, title=None, weight=0, project_id=0, director='', director_id='', | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
28 type_en=None, type_de=None, title_en=None, title_de=None, staffdb_key=None): |
9 | 29 self.id = str(id) |
30 self.weight = weight | |
31 self.project_id = project_id | |
32 if title is None: | |
33 self.title = id | |
34 else: | |
35 self.title = title | |
36 | |
37 self.director = director | |
38 self.director_id = director_id | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
39 |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
40 self.staffdb_key = staffdb_key |
9 | 41 |
42 # add language folders and sample templates | |
43 mainid = 'main.pt' | |
44 self.manage_addFolder('en') | |
45 folder_en = getattr(self, 'en') | |
46 main_en = ZopePageTemplate(mainid) | |
47 folder_en[mainid] = main_en | |
48 main_en.pt_edit(open(os.path.join(package_home(globals()),'zpt/department/default_template_main.zpt')).read(),'text/html') | |
49 if type_en is not None: | |
50 folder_en.title = type_en | |
51 if title_en is not None: | |
52 main_en.title = title_en | |
53 self.manage_addFolder('de') | |
54 folder_de = getattr(self, 'de') | |
55 main_de = ZopePageTemplate(mainid) | |
56 folder_de[mainid] = main_de | |
57 main_de.pt_edit(open(os.path.join(package_home(globals()),'zpt/department/default_template_main.zpt')).read(),'text/html') | |
58 if type_de is not None: | |
59 folder_de.title = type_de | |
60 if title_de is not None: | |
61 main_de.title = title_de | |
62 | |
63 | |
64 def index_html(self): | |
65 """default index page""" | |
66 return self.getMain() | |
67 | |
13 | 68 def getType(self, lang=None): |
9 | 69 """returns the type of department (from /en/ folder)""" |
13 | 70 if lang is None: |
71 # get Language from MPIWGRoot | |
72 lang = self.getLang() | |
73 | |
9 | 74 dir = getattr(self, lang, self.en) |
75 t = dir.title | |
76 return t | |
77 | |
13 | 78 def getTitle(self, lang=None): |
9 | 79 """returns the title of the department (from main.pt)""" |
13 | 80 if lang is None: |
81 # get Language from MPIWGRoot | |
82 lang = self.getLang() | |
83 | |
9 | 84 dir = getattr(self, lang, self.en) |
85 pt = getattr(dir, 'main.pt') | |
86 t = pt.title | |
87 if not t: | |
88 t = self.title | |
89 | |
90 return t | |
91 | |
92 def getDirector(self): | |
93 """returns the name of the director""" | |
94 return self.director | |
95 | |
39 | 96 def getDirectorUsername(self): |
97 """returns the username of the director""" | |
9 | 98 return self.director_id |
99 | |
39 | 100 def getProjectNumber(self): |
101 """return the project number""" | |
9 | 102 return self.project_id |
103 | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
104 def getStaffDbKey(self): |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
105 """Return the key for this department in the staff db (personalwww).""" |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
106 return getattr(self, 'staffdb_key', None) |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
107 |
9 | 108 def getUrl(self, baseUrl=None): |
109 """returns URL to this Department""" | |
110 if baseUrl is None: | |
111 return self.absolute_url() | |
112 | |
113 return '%s/%s'%(baseUrl, self.getId()) | |
114 | |
115 def getPath(self, page, relative=True): | |
116 """returns path to template page""" | |
117 # get Language from MPIWGRoot | |
118 lang = self.getLang() | |
119 dir = getattr(self, lang, self.en) | |
120 if relative: | |
121 return '%s/%s/%s'%(self.getId(), dir.getId(), page) | |
122 | |
123 pt = getattr(dir, page) | |
124 return pt.absolute_url_path() | |
125 | |
126 def getMainPath(self): | |
127 """returns the path to the main template""" | |
128 return self.getPath('main.pt') | |
129 | |
130 def getMain(self, **args): | |
131 """returns the main part as PageTemplate""" | |
132 # get Language from MPIWGRoot | |
133 lang = self.getLang() | |
134 dir = getattr(self, lang, self.en) | |
135 pt = getattr(dir, 'main.pt') | |
136 return pt(**args) | |
137 | |
138 def getThumbImg(self): | |
139 """returns the image object for the sidebar thumbnail""" | |
140 img = getattr(self, 'img-thumb.jpg') | |
141 return img | |
142 | |
30 | 143 def getThumbUrl(self): |
9 | 144 """returns the URL of the image object for the sidebar thumbnail""" |
145 img = getattr(self, 'img-thumb.jpg') | |
146 return img.absolute_url() | |
147 | |
27 | 148 def getProject(self): |
149 """returns the default project""" | |
39 | 150 pf = self.getMPIWGRoot().getProjectFolder() |
151 proj = pf.getProject(projectNumber=self.getProjectNumber()) | |
152 return proj | |
27 | 153 |
105
246d87d33f25
CLOSED - # 79: sortierung der liste der projekte pro abteilung
casties
parents:
94
diff
changeset
|
154 def getProjects(self, count=0, active=0, archived=0, depthFirst=True): |
24 | 155 """returns a list of projects of this department. |
156 | |
75 | 157 active = 0 : all projects |
158 active = 1 : active projects | |
159 active = 2 : inactive projects | |
24 | 160 |
75 | 161 archived = 0 : all projects |
162 archived = 1 : current projects | |
163 archived = 2 : archived projects | |
24 | 164 """ |
39 | 165 pf = self.getMPIWGRoot().getProjectFolder() |
105
246d87d33f25
CLOSED - # 79: sortierung der liste der projekte pro abteilung
casties
parents:
94
diff
changeset
|
166 projects = pf.getProjectsAsList(self.getProjectNumber(), active=active, archived=archived, depthFirst=depthFirst) |
27 | 167 #logging.debug("getProjects projects=%s"%repr(projects)) |
168 if count > 0: | |
169 return projects[:count] | |
24 | 170 |
171 return projects | |
172 | |
9 | 173 def changeWeight(self,weight,RESPONSE=None): |
174 """change weight""" | |
175 self.weight=weight | |
176 if RESPONSE is not None: | |
177 RESPONSE.redirect('manage_main') | |
39 | 178 |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
179 |
13 | 180 def changeMPIWGDepartment(self, title=None, weight=None, project_id=None, director=None, director_id=None, |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
181 type_en=None, type_de=None, title_en=None, title_de=None, staffdb_key=None, RESPONSE=None): |
9 | 182 """change everything""" |
183 if title is not None: | |
184 self.title = title | |
185 if weight is not None: | |
186 self.weight = weight | |
187 if project_id is not None: | |
188 self.project_id = project_id | |
189 if director is not None: | |
190 self.director = director | |
191 if director_id is not None: | |
192 self.director_id = director_id | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
193 if staffdb_key is not None: |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
194 self.staffdb_key = staffdb_key |
13 | 195 folder_en = self.get('en', None) |
196 if folder_en is not None: | |
197 if type_en is not None: | |
198 folder_en.title = type_en | |
199 main_en = folder_en.get('main.pt', None) | |
200 if main_en is not None and title_en is not None: | |
201 main_en.title = title_en | |
202 folder_de = self.get('de', None) | |
203 if folder_de is not None: | |
204 if type_de is not None: | |
205 folder_de.title = type_de | |
206 main_de = folder_de.get('main.pt', None) | |
207 if main_de is not None and title_de is not None: | |
208 main_de.title = title_de | |
209 | |
9 | 210 if RESPONSE is not None: |
211 RESPONSE.redirect('manage_main') | |
212 | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
213 |
9 | 214 def getBreadcrumbs(self): |
215 """return list of breadcrumbs from here to the root""" | |
216 crumbs = [(self.getFullTitle(), self.absolute_url(), self)] | |
217 parent = self.aq_parent | |
218 if hasattr(parent, 'getBreadcrumbs'): | |
219 if self.title: | |
220 return parent.getBreadcrumbs() + crumbs | |
221 else: | |
222 # if there's no title, skip this level | |
223 return parent.getBreadcrumbs() | |
224 | |
225 return crumbs | |
226 | |
227 getSection = MPIWGHelper.getSection | |
228 | |
229 getSubSection = MPIWGHelper.getSubSection | |
230 | |
231 | |
232 def manage_addMPIWGDepartmentForm(self): | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
233 """Form for adding a MPIWGDepartment""" |
9 | 234 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt/department/manage_add_MPIWGDepartment.zpt')).__of__(self) |
235 return pt() | |
236 | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
237 |
9 | 238 def manage_addMPIWGDepartment(self, id, title=None, weight=0, project_id=0, director=None, director_id=None, |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
239 type_en=None, type_de=None, title_en=None, title_de=None, staffdb_key=None, RESPONSE=None): |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
240 """Add a MPIWGDepartment object""" |
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
241 newObj = MPIWGDepartment(id, title, weight, project_id, director, director_id, type_en, type_de, title_en, title_de, staffdb_key) |
9 | 242 self.Destination()._setObject(id,newObj) |
243 if RESPONSE is not None: | |
244 RESPONSE.redirect('manage_main') | |
94
7aaed5218d55
added staffdb_key to departments. getDepartment also gets by id.
casties
parents:
75
diff
changeset
|
245 |