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.

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)
piskvorky's avatar
350
piskvorky
asked 13 years ago, updated 13 years ago

Comments

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

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)
piskvorky's avatar
350
piskvorky
answered 13 years ago, updated 13 years ago
link

Comments

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

Evgeny's avatar Evgeny (13 years ago)
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.

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)
Evgeny's avatar
13.2k
Evgeny
answered 13 years ago
link

Comments

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

piskvorky's avatar piskvorky (13 years ago)
see more comments