Mercurial > hg > MPIWGWeb
changeset 186:3ea224968f95
fix traversal to MPIWGStaffMember objects.
author | casties |
---|---|
date | Fri, 14 Jun 2013 15:29:57 +0200 |
parents | a8d5ba6729f3 |
children | 71c2d76f09b5 |
files | MPIWGRoot.py MPIWGStaff.py css/edit.css zpt/updatePersonalwww_check.zpt |
diffstat | 4 files changed, 42 insertions(+), 62 deletions(-) [+] |
line wrap: on
line diff
--- a/MPIWGRoot.py Fri Jun 14 15:04:35 2013 +0200 +++ b/MPIWGRoot.py Fri Jun 14 15:29:57 2013 +0200 @@ -296,7 +296,7 @@ pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','showNewDBEntries.zpt')).__of__(self) return pt(newEntries=res) - def createNewStaffObjects(self,RESPONSE): + def _createNewStaffObjects(self,RESPONSE): """create new staff object""" memberFolder=getattr(self,'members') args=self.REQUEST.form @@ -416,11 +416,10 @@ if news and (len(news)>0): ret+="<h2>Hinzugefügt</h2>" - ret+="<p>Neueinträge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.</p>" ret+="<ul>" for new in news: - if args.has_key(self.urlQuote(new.encode('utf-8'))): # entry was selected + if args.has_key(new.encode('utf-8')): # entry was selected result,msg=self.generateNewPersonEntry(resultSet[new]) if not result: logging.error("Error (generateNewPersonEntry) %s"%msg)
--- a/MPIWGStaff.py Fri Jun 14 15:04:35 2013 +0200 +++ b/MPIWGStaff.py Fri Jun 14 15:29:57 2013 +0200 @@ -5,6 +5,10 @@ from OFS.Folder import Folder from Products.PageTemplates.PageTemplateFile import PageTemplateFile +from zope.interface import implements +from zope.publisher.interfaces import IPublishTraverse +from ZPublisher.BaseRequest import DefaultPublishTraverse + from AccessControl import ClassSecurityInfo from App.class_init import InitializeClass from App.ImageFile import ImageFile @@ -37,6 +41,7 @@ class MPIWGStaffFolder(ZDBInterfaceFolder): """Folder of staff objects""" + implements(IPublishTraverse) meta_type="MPIWGStaffFolder" security=ClassSecurityInfo() @@ -52,63 +57,24 @@ # hook into traversal to create folder of virtual staff objects # like /members/$username/index_html # - def __before_publishing_traverse__(self, object, request): - stack = request.TraversalRequestNameStack - logging.debug("MPIWGStaffFolder: traverse stack=%s self=%s"%(repr(stack),repr(self))) + def publishTraverse(self, request, name): + """change the traversal""" + # get stored path + logging.debug("publishtraverse: name=%s"%(name)) - # TODO: should we do more checks? - if stack and len(stack) > 0: - try: - # id is the first path component - id = stack[-1] - logging.debug(id) - - member = self.getMember(username=id) - if member is not None: - member = member.__of__(self) - request.set('MPIWGStaffMember', member) - stack.pop(-1) + # try name as username + member = self.getMember(username=name) + if member is not None: + # traverse to MPIWGStaffMember object + member = member.__of__(self) + return member + + # use default traverser + tr = DefaultPublishTraverse(self, request) + ob = tr.publishTraverse(request, name) + return ob + - #weitere parameter - if len(stack)> 0: - mode = stack[-1] - request.set('MPIWGStaffMode', mode) - stack.pop(-1) - - - except (IndexError, ValueError): - # missing context or not an integer id; perhaps some URL hacking going on? - logging.error("error traversing user id!") - raise Redirect(self.absolute_url()) # redirects to `/members`, adjust as needed - - - - - def index_html(self,REQUEST,RESPONSE): - """show homepage""" - logging.debug("MPIWGStaffFolder: index_html!") - member = REQUEST.get('MPIWGStaffMember', None) - mode = REQUEST.get('MPIWGStaffMode', None) - if member is not None: - if mode is not None: - return member.execute(mode,REQUEST); - - logging.debug("member: key=%s"%(member.getKey())) - pt = None - try: - # get template /template/member_index_html - pt = getattr(self.template, 'member_index_html', None) - except: - logging.error("No template /template/member_index_html") - # TODO: error page? - return "No template /template/member_index_html" - - if pt is not None: - return pt(member=member) - - return REQUEST - - def getMember(self, username=None, key=None): """returns a MPIWGStaffMember object if the username exists""" member = None @@ -287,6 +253,17 @@ self.folder = folder self.content = dbresult + + def index_html(self, REQUEST, RESPONSE): + """show homepage""" + # get template /template/member_index_html (with acquisition) + pt = getattr(self.template, 'member_index_html', None) + if pt is not None: + return pt(member=self) + + return "No template /template/member_index_html" + + def isValid(self): """returns if this member exists""" return len(self.content) > 0 @@ -433,9 +410,6 @@ security.declareProtected('View management screens','edit') def edit(self,REQUEST=None): """Edit the basic information""" - - - if REQUEST: argv=REQUEST.form @@ -901,4 +875,6 @@ return ret +# initialize security +InitializeClass(MPIWGStaffFolder) InitializeClass(MPIWGStaffMember)
--- a/css/edit.css Fri Jun 14 15:04:35 2013 +0200 +++ b/css/edit.css Fri Jun 14 15:29:57 2013 +0200 @@ -1,5 +1,10 @@ @CHARSET "UTF-8"; +body { + font-family: Verdana, Arial, sans-serif; + font-size: 12px; +} + .title { color: #010658; }
--- a/zpt/updatePersonalwww_check.zpt Fri Jun 14 15:04:35 2013 +0200 +++ b/zpt/updatePersonalwww_check.zpt Fri Jun 14 15:29:57 2013 +0200 @@ -12,7 +12,7 @@ <span tal:replace="python:resultSet[new]['last_name']">last</span> </td> <td> - <input type="checkbox" tal:attributes="name python:here.urlQuote(new.encode('utf-8'))" checked="True" value="new"/> + <input type="checkbox" tal:attributes="name python:new.encode('utf-8')" checked="True" value="new"/> </td> </tr> </table>