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