userIsStaff ZPT error on login

Bug #344391 reported by Will Seaver
2
Affects Status Importance Assigned to Milestone
KARL3
Fix Released
Medium
Unassigned

Bug Description

Upon attempting to log in (both as admin and affiliate), I get the following error message:

URL: http://localhost:6543/communities
Module paste.evalexception.middleware:306 in respond
<< try:
                __traceback_supplement__ = errormiddleware.Supplement, self, environ
                app_iter = self.application(environ, detect_start_response)
                try:
                    return_iter = list(app_iter)>> app_iter = self.application(environ, detect_start_response)
Module repoze.zodbconn.middleware:14 in __call__
<<
        def __call__(self, environ, start_response):
            result = self.application(environ, start_response)
            if self.key in environ:
                del environ[self.key]>> result = self.application(environ, start_response)
Module karl.timeit:40 in __call__
<<
            # Generate the response. If text/html, print elapsed
            resp = req.get_response(self.app)
            if resp.content_type == "text/html":
                elapsed = str(1 / (time.time() - start))[0:5]>> resp = req.get_response(self.app)
Module webob:1325 in get_response
<< else:
                status, headers, app_iter = self.call_application(
                    application, catch_exc_info=False)
            return self.ResponseClass(
                status=status, headerlist=headers, app_iter=app_iter,>> application, catch_exc_info=False)
Module webob:1293 in call_application
<< captured[:] = [status, headers, exc_info]
                return output.append
            app_iter = application(self.environ, start_response)
            if (not captured
                or output):>> app_iter = application(self.environ, start_response)
Module repoze.errorlog:85 in __call__
<< environ['repoze.errorlog.entryid'] = identifier
                try:
                    return self.application(environ, start_response)
                except self.ignored_exceptions:
                    # just reraise an ignored exception
    >> return self.application(environ, start_response)
Module repoze.tm:19 in __call__
<< return start_response(status, headers, exc_info)
            try:
                result = self.application(environ, save_status_and_headers)
            except:
                self.abort()>> result = self.application(environ, save_status_and_headers)
Module paste.registry:350 in __call__
<<
            try:
                app_iter = self.application(environ, start_response)
            except Exception, e:
                # Regardless of if the content is an iterable, generator, list
    >> app_iter = self.application(environ, start_response)
Module repoze.who.middleware:107 in __call__
<<
            wrapper = StartResponseWrapper(start_response)
            app_iter = app(environ, wrapper.wrap_start_response)

            if self.challenge_decider(environ, wrapper.status, wrapper.headers):>> app_iter = app(environ, wrapper.wrap_start_response)
Module tw.core.middleware:36 in __call__
<<
        def __call__(self, environ, start_response):
            return self.wsgi_app(environ, start_response)

        def wsgi_app(self, environ, start_response):>> return self.wsgi_app(environ, start_response)
Module tw.core.middleware:59 in wsgi_app
<< else:
                    # Pass request downstream
                    resp = req.get_response(self.application)
                return resp(environ, start_response)
            finally:>> resp = req.get_response(self.application)
Module webob:1325 in get_response
<< else:
                status, headers, app_iter = self.call_application(
                    application, catch_exc_info=False)
            return self.ResponseClass(
                status=status, headerlist=headers, app_iter=app_iter,>> application, catch_exc_info=False)
Module webob:1293 in call_application
<< captured[:] = [status, headers, exc_info]
                return output.append
            app_iter = application(self.environ, start_response)
            if (not captured
                or output):>> app_iter = application(self.environ, start_response)
Module tw.core.resource_injector:67 in _injector
<< def _injector(environ, start_response):
            req = Request(environ)
            resp = req.get_response(app)
            content_type = resp.headers.get('Content-Type','text/plain').lower()
            if 'html' in content_type:>> resp = req.get_response(app)
Module webob:1325 in get_response
<< else:
                status, headers, app_iter = self.call_application(
                    application, catch_exc_info=False)
            return self.ResponseClass(
                status=status, headerlist=headers, app_iter=app_iter,>> application, catch_exc_info=False)
Module webob:1293 in call_application
<< captured[:] = [status, headers, exc_info]
                return output.append
            app_iter = application(self.environ, start_response)
            if (not captured
                or output):>> app_iter = application(self.environ, start_response)
Module repoze.browserid.middleware:89 in __call__
<< # cookie hasn't been tampered with
                    environ['repoze.browserid'] = browser_id
                    return self.app(environ, start_response)

            # no browser id cookie or cookie value was tampered with
    >> return self.app(environ, start_response)
Module repoze.bfg.router:153 in __call__
<<
                response = registry.queryMultiAdapter(
                    (context, request), IView, name=view_name)

                if response is None:>> (context, request), IView, name=view_name)
Module zope.component.registry:217 in queryMultiAdapter
<< def queryMultiAdapter(self, objects, interface, name=u'', default=None):
            return self.adapters.queryMultiAdapter(
                objects, interface, name, default)

        def getMultiAdapter(self, objects, interface, name=u''):>> objects, interface, name, default)
Module zope.interface.adapter:482 in queryMultiAdapter
<< return default

            result = factory(*objects)
            if result is None:
                return default>> result = factory(*objects)
Module karl.views.communities:104 in show_communities_view
<< )

    def get_my_communities(communities_folder, request):
        # sorted by title
        principals = effective_principals(request)>> def get_my_communities(communities_folder, request):
Module repoze.bfg.chameleon_zpt:75 in render_template_to_response
<< renderer = renderer_from_cache(path, ZPTTemplateRenderer,
                                      auto_reload=auto_reload)
        result = renderer(**kw)
        response_factory = queryUtility(IResponseFactory, default=Response)
        return response_factory(result)>> result = renderer(**kw)
Module repoze.bfg.chameleon_zpt:29 in __call__
<<
        def __call__(self, **kw):
            return self.template(**kw)

    ZPTTemplateFactory = ZPTTemplateRenderer>> return self.template(**kw)
Module chameleon.core.template:42 in __call__
<<
        def __call__(self, **kwargs):
            return self.render(**kwargs)

        def write(self, body):>> return self.render(**kwargs)
Module chameleon.core.template:219 in render
<< def render(self, **kwargs):
            kwargs[config.SYMBOLS.xincludes] = self.xincludes
            return super(TemplateFile, self).render(**kwargs)

        def mtime(self):>> return super(TemplateFile, self).render(**kwargs)
Module chameleon.core.template:111 in render
<< def render(self, **kwargs):
            template = self.cook_check(parameters=kwargs)
            return self.render_template(template, **kwargs)

        def render_macro(self, macro, global_scope=False, parameters={}):>> return self.render_template(template, **kwargs)

(<PageTemplateFile /home/will/osi/karl3/src/karl/karl/views/templates/communities.pt>,)

Module chameleon.core.template:124 in render_template
<< __traceback_info__ = (self,)
            if config.DEBUG_MODE is False:
                return __template__.render(**kwargs)

            try:>> return __template__.render(**kwargs)
Module chameleon.core.translation:153 in render
Module chameleon.core.template:263 in render
<< def render(**kwargs):
                kwargs.update(self.bound_parameters)
                return self.render(name, parameters=kwargs)
            return Macro(render)>> return self.render(name, parameters=kwargs)
Module chameleon.core.template:116 in render_macro
<< template = self.cook_check(
                parameters=parameters, macro=macro, global_scope=global_scope)
            return self.render_template(template, **parameters)

        def render_xinclude(self, **kwargs):>> return self.render_template(template, **parameters)

(<PageTemplateFile /home/will/osi/karl3/src/karl/karl/views/templates/generic_layout.pt>,)

Module chameleon.core.template:124 in render_template
<< __traceback_info__ = (self,)
            if config.DEBUG_MODE is False:
                return __template__.render(**kwargs)

            try:>> return __template__.render(**kwargs)
Module ?:369 in render
Module chameleon.core.codegen:29 in lookup_attr
<< except AttributeError, e:
            try:
                return obj[key]
            except (KeyError, TypeError, AttributeError):
                raise e>> return obj[key]
Module karl.views.api:77 in __getitem__
<<
        def has_staff_acl(self, context):
            return getattr(context, 'security_state', 'inherits') == 'public'

        @property>> return getattr(context, 'security_state', 'inherits') == 'public'
ValueError: ZPT attempted to fetch userIsStaff

Revision history for this message
Paul Everitt (paul-agendaless) wrote :

Make sure you svn up everything. I believe I have everything checked in already. In particular, make sure src/karl/karl/views/api.py has a subversion revision number (svn info api.py) of 1519.

If so and you still have problems, remove the pyc file (rm api.pyc) and restart.

Assigned back to you, re-assign to me if you are still having trouble.

Changed in karl3:
assignee: nobody → will-seaver
importance: Undecided → Medium
milestone: none → m6
Revision history for this message
Will Seaver (will-seaver) wrote :

svn up completed, ran bin/buildout; however, cannot seem to run bin/start_over right now, because of a calendar error (?). removed api.pyc from its directory, ran everything again (except start_over) and the error is still there.

traceback when running bin/start_over on my machine:

  File "/home/will/osi/karl3/eggs/zope.configuration-3.4.1-py2.5.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
    self.context.end()
  File "/home/will/osi/karl3/eggs/zope.configuration-3.4.1-py2.5.egg/zope/configuration/config.py", line 541, in end
    self.stack.pop().finish()
  File "/home/will/osi/karl3/eggs/zope.configuration-3.4.1-py2.5.egg/zope/configuration/config.py", line 688, in finish
    args = toargs(context, *self.argdata)
  File "/home/will/osi/karl3/eggs/zope.configuration-3.4.1-py2.5.egg/zope/configuration/config.py", line 1380, in toargs
    args[str(name)] = field.fromUnicode(s)
  File "/home/will/osi/karl3/eggs/zope.configuration-3.4.1-py2.5.egg/zope/configuration/fields.py", line 139, in fromUnicode
    value = self.context.resolve(name)
  File "/home/will/osi/karl3/eggs/zope.configuration-3.4.1-py2.5.egg/zope/configuration/config.py", line 181, in resolve
    mod = __import__(mname, *_import_chickens)
  File "/home/will/osi/karl3/src/karl.content/karl/content/views/calendar_events.py", line 19, in <module>
    calendar.setfirstweekday(6) # Fscking Europeans!
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/home/will/osi/karl3/src/osi/osi/configure.zcml", line 4.2-4.36
    ZopeXMLConfigurationError: File "/home/will/osi/karl3/src/karl.content/karl/content/configure.zcml", line 4.2-4.30
    ZopeXMLConfigurationError: File "/home/will/osi/karl3/src/karl.content/karl/content/views/configure.zcml", line 65.2-69.4
    AttributeError: 'module' object has no attribute 'setfirstweekday'

Revision history for this message
Will Seaver (will-seaver) wrote :

Still getting the same error, despite running start_over, svn up, buildout, etc. as well as removing the api.pyc file from src/karl/karl/views after each start_over.

Changed in karl3:
assignee: will-seaver → paul-agendaless
Revision history for this message
Will Seaver (will-seaver) wrote :

problem solved, thanks to rmtempfiles in the src/karl directory

Changed in karl3:
assignee: paul-agendaless → nobody
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.