I'm porting a bfg app over to pyramid and getting some strange things
happening that I don't understand...
first of all, in order to cut down on the cruft I wrote a wrapper
around view_config(formerly bfg_view) and it looks like this...
def t_view(route_name="model", renderer="json", **kw):
"""
some sugar to for the common things.
most views have a common route and renderer
**DRY**
"""
kw["route_name"] = route_name
kw["renderer"] = renderer
return view_config(**kw)
and I also have a decorator for logging "events"
def log_event(func):
@functools.wraps(func)
def _inner(context, request):
try:
result = func(context, request)
except Exception, ex:
raise
else:
try:
if hasattr(context, "key"):
context_obj = context.key()
else:
context_obj = None
if hasattr(request, "user"):
created_by = request.user
else:
created_by = None
data = dict(view=request.view_name)
evt = Event(context_path=context.path,
context_obj=context_obj,
created_by=created_by,
data=json.dumps(data))
evt.put()
except Exception, ex:
log.error(ex)
return result
return _inner
I get this error at startup
ConfigurationConflictError: Conflicting configuration actions
For: ('view', <class 'hydrant.model.user.UserModel'>, 'login', None,
<InterfaceClass pyramid.interfaces.IView>, None, None, None, 'model',
None, False, None, None, None)
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 21, '<module>', '@log_event')
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 21, '<module>', '@log_event')
For: ('view', <class 'hydrant.model.user.UserModel'>, 'logout',
None, <InterfaceClass pyramid.interfaces.IView>, None, None, None,
'model', None, False, None, None, None)
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 49, '<module>', '@log_event')
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 49, '<module>', '@log_event')
and here's the functions it's whining about, I can't show the
implementation though sorry...
#view_config(context=UserModel, name="login", route_name="model",
renderer="json")
@t_view(context=UserModel, name="login")
@log_event
def view_login(context, request):
...
#view_config(context=UserModel, name="logout", route_name="model",
renderer="json")
@t_view(context=UserModel, name="logout")
@log_event
def view_logout(context, request):
...
I was thinking that maybe it's the log_event decorator but removing
that....
ConfigurationConflictError: Conflicting configuration actions
For: ('view', <class 'hydrant.model.user.UserModel'>, 'login', None,
<InterfaceClass pyramid.interfaces.IView>, None, None, None, 'model',
None, False, None, None, None)
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 20, '<module>', '@t_view(context=UserModel,
name="login")')
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 20, '<module>', '@t_view(context=UserModel,
name="login")')
For: ('view', <class 'hydrant.model.user.UserModel'>, 'logout',
None, <InterfaceClass pyramid.interfaces.IView>, None, None, None,
'model', None, False, None, None, None)
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 48, '<module>', '@t_view(context=UserModel,
name="logout")')
('/Users/twillis/projects/hydrant-pyarmid/src/hydrant/hydrant/
views/user.py', 48, '<module>', '@t_view(context=UserModel,
name="logout")')
so I switch to the view_config decorators...
view_config(context=UserModel, name="login", route_name="model",
renderer="json")
#...@t_view(context=UserModel, name="login")
#...@log_event
def view_login(context, request):
...
view_config(context=UserModel, name="logout", route_name="model",
renderer="json")
#...@t_view(context=UserModel, name="logout")
#...@log_event
def view_logout(context, request):
...
and I get a 404, all my other views seem to work and they are
configured with t_view, and log_event
I'm calling config.scan at startup after adding the route. I don't
know if I've run into a bug or I'm doing it wrong, any guidance is
appreciated.
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en.