# HG changeset patch
# User casties
# Date 1371216597 -7200
# Node ID 3ea224968f95bbc3a45113d0e4323bb705875e38
# Parent a8d5ba6729f373835caf46cc66f220c90efa6b48
fix traversal to MPIWGStaffMember objects.
diff -r a8d5ba6729f3 -r 3ea224968f95 MPIWGRoot.py
--- 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+="
Hinzugefügt
"
- ret+="Neueinträge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.
"
ret+=""
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)
diff -r a8d5ba6729f3 -r 3ea224968f95 MPIWGStaff.py
--- 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)
diff -r a8d5ba6729f3 -r 3ea224968f95 css/edit.css
--- 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;
}
diff -r a8d5ba6729f3 -r 3ea224968f95 zpt/updatePersonalwww_check.zpt
--- 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 @@
last
-
+
|