First time here? Check out the FAQ!
0

UndefinedError: 'settings' is undefined
 

Hi, I'm on the current pip version on debian squeeze. The main part of the page is working, but if I e.g. want to change the "Site" via the admin interface the following error occurs:

My installation tries to render {{ settings.APP_TITLE|escape }} in /usr/local/lib/python2.6/dist-packages/askbot/templates/base.html" and throws "UndefinedError: 'settings' is undefined". Can anyone help me?

I have included this line

'askbot.context.application_settings',

in my settings in the TEMPLATE_CONTEXT_PROCESSORS which should make {{ settings}} available...

Here is the full traceback:

[Sat Dec 08 22:48:29 2012] [error][client x:x:x:x:x:x:x:x] mod_wsgi(pid=29866): Exception occurred processing WSGI script '/path/to/askbotproject/django.wsgi'.
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x] Traceback (most recent call last): 
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__ 
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]     response = self.get_response(request)
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 179, in get_response
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]     response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 228, in handle_uncaught_exception
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]     return callback(request, **param_dict)
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/django/utils/decorators.py", line 91, in _wrapped_view
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]     response = view_func(request, *args, **kwargs)
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/django/views/defaults.py", line 33, in server_error
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]     return http.HttpResponseServerError(t.render(Context({})))
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/coffin/template/__init__.py", line 55, in render
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]     return super(Template, self).render(**context)
[Sat Dec 08 22:48:29 2012] [error] [client x:x:x:x:x:x:x:x]   File "/usr/local/lib/python2.6/dist-packages/jinja2/environment.py", line 894 ...
(more)

To enter a block of code:

  • enter empty line after your previous text
  • paste or type the code
  • select the code and press the button above
Preview: (hide)
asmaps's avatar
21
asmaps
asked 12 years ago, updated 12 years ago

Comments

edit: Just noticed that the error also occurs when I try to show the help page.

asmaps's avatar asmaps (12 years ago)

Could you specify steps to reproduce the issue, please? Also please tell which version of askbot this issue applies to.

Evgeny's avatar Evgeny (12 years ago)

Hi, thanks for your reply. I'm using 0.7.44 (installed via pip).

asmaps's avatar asmaps (12 years ago)

The error occurs when I try to open the help page or if I sumit changes of the "Site" via the admin interface. I think there are more places where this happens, but these two are where I recognized it.

asmaps's avatar asmaps (12 years ago)

As I said I installed via "pip install askbot", then I ran manage.py syncdb and migrate. I added a user and wanted to change the site, but it didnt work. I also tried filling the database with dummydata but this (as expeted) also didnt change anything. If you like you can look to it on http://askbot.selfnet.de

asmaps's avatar asmaps (12 years ago)
see more comments

2 Answers

0

Update: Now since I couldn't fix that problem I installed the version from git, but I get the same error. At least when I try to change the Site object. The help page is available now, that seems to be fixed by the update.

Is this really a bug or have I made a mistake?

To enter a block of code:

  • enter empty line after your previous text
  • paste or type the code
  • select the code and press the button above
Preview: (hide)
asmaps's avatar
21
asmaps
answered 12 years ago
link

Comments

see more comments
0

"UndefinedError: 'settings' is undefined" exception in stactrace above happens in 500.html template. The'askbot.skins.loaders.Loader' is first loader in TEMPLATE_LOADERS. It loads 500.html(or 404, 403) template even outside of askbot app(for example in admin). Then it tries to render it, but there is no {{ settings }} in template context if current url not starts with ASKBOT_URL(see 'askbot.context.application_settings' context processor). The way to fix it is to use custom view to handle 500, 404, 403:

def view_500(request):
    if not request.path.startswith('/' + settings.ASKBOT_URL):
        template_name = 'errors/500.html'
    else:
        template_name = '500.html'

    return defaults.page_not_found(request, template_name=template_name)

In urls.py:

handler500 = 'your_app.views.view_500'

We move our error templates for all apps to 'error/' subfolder in template folder. In this case askbot template loader can't find it and templates will be loaded using next loader in TEMPLATE_LOADERS - standard Django loader. Thus, we have separate error templates for our apps and for askbot. But it's still an ugly hack :)

To enter a block of code:

  • enter empty line after your previous text
  • paste or type the code
  • select the code and press the button above
Preview: (hide)
danila_a's avatar
1
danila_a
answered 12 years ago
link

Comments

see more comments