from Products.CMFCore.utils import getToolByName
 from Products.Portfolio.utils import translate
 def _(message) : return translate(message, context).encode('utf-8')
-bsize = 20
 options = {}
 
 uidh = getToolByName(context, 'portal_uidhandler')
 req = context.REQUEST
 toUrl = req.physicalPathToURL
 resp = req.RESPONSE
+bsize = portal.getProperty('default_batch_size', 20)
 
 if traverse_subpath[-1] == 'photo_view_ajax' :
     photoSubPath = traverse_subpath[:-1]
     photoPath = list(photo.getPhysicalPath())
     photoPath.insert(portalDepth, 'selectioncontext')
     options['lastBcUrl'] = toUrl(photoPath)
-    meth = getattr(photo, 'photo_view_ajax_template')
+    app = context.restrictedTraverse('/')
+    meth = app.restrictedTraverse(photo.getPhysicalPath() + ('photo_view_ajax_template',))
     return meth(req, resp, **options)
 
 
 
 ti = photo.getTypeInfo()
 method_id = ti.queryMethodID('view', context=photo)
-meth = getattr(photo, method_id)
+app = context.restrictedTraverse('/')
+meth = app.restrictedTraverse(photo.getPhysicalPath() + (method_id,))
 return meth(req, resp, **options)