Exception thrown as a Teacher when clicking Done in Group Member page

Bug #1172660 reported by George on 2013-04-25
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
SchoolTool
High
Gediminas Paulauskas

Bug Description

When logged in as a Teacher and viewing personal details in the Groups tab, this error occurs when Done is clicked. I have repeated the error three times; once after a reboot, and twice after SchoolTool server restarts. I am on a Ubuntu 12.04 LTS release, fully updated. A copy of the error message is below.

Exception

LocationError: (<schooltool.group.group.GroupContainer object at 0xb2f8552c>, 'table')

Traceback

File "/usr/lib/python2.7/dist-packages/zope/publisher/publish.py", line 132, in publish
  result = publication.callObject(request, obj)
File "/usr/lib/python2.7/dist-packages/zope/app/publication/zopepublication.py", line 207, in callObject
  return mapply(ob, request.getPositionalArguments(), request)
File "/usr/lib/python2.7/dist-packages/zope/publisher/publish.py", line 107, in mapply
  return debug_call(obj, args)
Extra information: <schooltool.skin.flourish.zcml_content.FlourishGroupsView_groups object at 0xd8abecc>
File "/usr/lib/python2.7/dist-packages/zope/publisher/publish.py", line 113, in debug_call
  return obj(*args)
File "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/page.py", line 81, in __call__
  result = self.render(*args, **kw)
File "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/page.py", line 74, in render
  return self.template(*args, **kw)
File "/usr/lib/python2.7/dist-packages/zope/browserpage/viewpagetemplatefile.py", line 83, in __call__
  return self.im_func(im_self, *args, **kw)
File "/usr/lib/python2.7/dist-packages/zope/browserpage/viewpagetemplatefile.py", line 51, in __call__
  sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/pagetemplate.py", line 132, in pt_render
  strictinsert=0, sourceAnnotations=sourceAnnotations
Template "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/templates/main.pt"
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/pagetemplate.py", line 240, in __call__
  interpreter()
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 271, in __call__
  self.interpret(self.program)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 343, in interpret
  handlers[opcode](self, args)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 533, in do_optTag_tal
  self.do_optTag(stuff)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 518, in do_optTag
  return self.no_tag(start, program)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 513, in no_tag
  self.interpret(program)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 343, in interpret
  handlers[opcode](self, args)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 742, in do_insertStructure_tal
  structure = self.engine.evaluateStructure(expr)
File "/usr/lib/python2.7/dist-packages/zope/tales/tales.py", line 696, in evaluate
  return expression(self)
Template "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/templates/main.pt", line 79, column 8
  Expression: <PathExpr standard:u'view/page_template|nothing'>
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 217, in __call__
  return self._eval(econtext)
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 211, in _eval
  return ob()
File "/usr/lib/python2.7/dist-packages/zope/browserpage/viewpagetemplatefile.py", line 83, in __call__
  return self.im_func(im_self, *args, **kw)
File "/usr/lib/python2.7/dist-packages/zope/browserpage/viewpagetemplatefile.py", line 51, in __call__
  sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/pagetemplate.py", line 132, in pt_render
  strictinsert=0, sourceAnnotations=sourceAnnotations
Template "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/templates/page.pt"
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/pagetemplate.py", line 240, in __call__
  interpreter()
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 271, in __call__
  self.interpret(self.program)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 343, in interpret
  handlers[opcode](self, args)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 583, in do_setLocal_tal
  self.engine.setLocal(name, self.engine.evaluateValue(expr))
File "/usr/lib/python2.7/dist-packages/zope/tales/tales.py", line 696, in evaluate
  return expression(self)
Template "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/templates/page.pt", line 14, column 2
  Expression: <PathExpr standard:u'view/content_template|nothing'>
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 217, in __call__
  return self._eval(econtext)
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 211, in _eval
  return ob()
File "/usr/lib/python2.7/dist-packages/zope/browserpage/viewpagetemplatefile.py", line 83, in __call__
  return self.im_func(im_self, *args, **kw)
File "/usr/lib/python2.7/dist-packages/schooltool/common/inlinept.py", line 111, in __call__
  showtal=getattr(instance.request.debug, 'showTAL', False),
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/pagetemplate.py", line 132, in pt_render
  strictinsert=0, sourceAnnotations=sourceAnnotations
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/pagetemplate.py", line 240, in __call__
  interpreter()
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 271, in __call__
  self.interpret(self.program)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 343, in interpret
  handlers[opcode](self, args)
File "/usr/lib/python2.7/dist-packages/zope/tal/talinterpreter.py", line 742, in do_insertStructure_tal
  structure = self.engine.evaluateStructure(expr)
File "/usr/lib/python2.7/dist-packages/zope/tales/tales.py", line 696, in evaluate
  return expression(self)
Template "None", line 2, column 6
  Expression: <PathExpr standard:'context/schooltool:content/ajax/view/container/table'>
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 217, in __call__
  return self._eval(econtext)
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 194, in _eval
  ob = self._subexprs[-1](econtext)
File "/usr/lib/python2.7/dist-packages/zope/tales/expressions.py", line 124, in _eval
  ob = self._traverser(ob, element, econtext)
File "/usr/lib/python2.7/dist-packages/zope/pagetemplate/engine.py", line 66, in __call__
  request=request)
File "/usr/lib/python2.7/dist-packages/zope/traversing/adapters.py", line 136, in traversePathElement
  return traversable.traverse(nm, further_path)
Extra information: (<schooltool.skin.flourish.ajax.SubContextParts object at 0xb2c235cc>, 'table')
File "/usr/lib/python2.7/dist-packages/schooltool/skin/flourish/ajax.py", line 135, in traverse
  next = traverseName(self.parts.context, name)
Extra information: (<schooltool.skin.flourish.ajax.SubContextParts object at 0xb2c235cc>, 'table', [])
File "/usr/lib/python2.7/dist-packages/zope/traversing/api.py", line 109, in traverseName
  traversable=traversable, request=request)
File "/usr/lib/python2.7/dist-packages/zope/traversing/adapters.py", line 136, in traversePathElement
  return traversable.traverse(nm, further_path)
Extra information: (<schooltool.group.group.GroupContainer object at 0xb2f8552c>, 'table')
File "/usr/lib/python2.7/dist-packages/zope/container/traversal.py", line 111, in traverse
  raise TraversalError(container, name)

Changed in schooltool:
status: New → Triaged
importance: Undecided → Critical
assignee: nobody → Justas Sadzevičius (justas-pov)
Gediminas Paulauskas (menesis) wrote :

I get permission errors when viewing personal details or group contents... Even when I took some fixes from a newer version...

But ok, this is a new error. I can reproduce it if I go to http://localhost:7080/groups , but am not sure how a teacher could have got there. Could you describe what were you doing in a little more detail? Look at a person, expand the Groups part at the bottom, click on one of the groups, e.g. Teachers, to see it, and click Done link there? I get a "You are not allowed to access" page, but anyway the Groups list is not where I would expect to return.

There is one thing you can do to avoid this error, without us fixing navigation and permissions for teachers. As manager, go to Server tab, click Security in the sidebar, then click Edit icon next to Access Rights heading. Find "List of groups" and select " The list of groups in the system is visible to the general public." and Submit. Then the teacher will be redirected to the list of Groups, if I guessed your actions right. Probably not what you expect, but not an exception either.

Or you can use the browser's back button to go where you were before :)

Tom Hoffman (tom-hoffman) wrote :

Ah, ok so there are three issues, this traceback, the permissions, and navigation.

There's not really any reason to prohibit teachers from seeing the list of groups by default, so we should change that.

We do have some places where the Done button sends you back to where you came from based on the request string, I believe? We should do that here as well.

We really should do it just about everywhere, but for some reason we've not made much progress on it.

Changed in schooltool:
importance: Critical → High
assignee: Justas Sadzevičius (justas-pov) → Gediminas Paulauskas (menesis)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers