First time here? Check out the FAQ!
1

askbot & staticfiles

First, congrats on the forum upgrade and the new looks :) Parts of the forum appeared in russian to me today, so I assumed something was happening :)

Now, I was integrating askbot into an existing application, merging the settings manually. There were several small issues (askbot uses older django, so some things moved between django.contrib and django.core, some were deprecated etc), but overall no problem. The automated settings.py checks were pretty helpful.

My question is about using askbot together with django.contrib.staticfiles. If I understand correctly, askbot doesn't use staticfiles. Static URLs and directories are hard-coded, and are automatically served by django (btw can this be turned off? i'd prefer to see an error), unless explicitly intercepted by the web server earlier (needs manual configuration with some obscure locations).

Is there any planned support for STATIC_URL, the SERVE_MEDIA flag and the "python manage.py collectstatic" utility? Pretty useful from deployment point of view, IMO.

piskvorky's avatar
350
piskvorky
asked 2011-12-06 15:09:15 -0500, updated 2011-12-06 15:10:53 -0500
edit flag offensive 0 remove flag close merge delete

Comments

add a comment see more comments

2 Answers

1

My "quick hack" solution, in case anyone finds it useful:

  1. forbid askbot serving static files: in askbot/views/meta.py, make media() raise an exception.
  2. in the askbot application, alias the skins directory as static:

    [askbot-devel/askbot]$ ln -s skins static
    

The second step makes staticfiles automatically recognize and process the askbot static files. Now "manage.py collectstatic" works -- all static files are in a single place, easy to deploy. (Alternative way: add os.path.join(ASKBOT_ROOT, 'skins') to STATICFILES_DIRS in settings.py).

However, askbot urls have media locations hardwired under m/ (not STATIC_URL), so we still need to adjust the web server. For nginx:

3.

    location /qa/m/  { # qa/ = settings.ASKBOT_URL
        expires      7d; # or whatever
        alias /content/of/your/settings.STATIC_ROOT/; # check filesystem permissions!
    }

If anyone finds a better/cleaner way, please let me know.

EDIT: Actually this entire procedure (all three steps) can be replaced by this patch to askbot code: https://github.com/piskvorky/askbot-devel/commit/0118be48b0272147aa63fd8910b99acbfaa52102

piskvorky's avatar
350
piskvorky
answered 2011-12-06 18:39:29 -0500, updated 2011-12-06 19:34:23 -0500
edit flag offensive 0 remove flag delete link

Comments

Hey, this looks cool, we'll get to this tomorrow. Thanks!

Evgeny's avatar Evgeny (2011-12-06 20:45:10 -0500) edit
add a comment see more comments
0

In askbot we use skins: .html templates, stylesheets and javascript, and the idea is that you should be able to switch the skin by configuration in the live settings.

We did not think yet on how to integrate this with the staticfiles approach, maybe there is a way, worth exploring.

Evgeny's avatar
13.2k
Evgeny
answered 2011-12-06 15:43:57 -0500
edit flag offensive 0 remove flag delete link

Comments

Ok, thanks Evgeny. Btw skins and static files can be used together, that shouldn't be a problem.

piskvorky's avatar piskvorky (2011-12-06 18:01:13 -0500) edit
add a comment see more comments