jazzband / django-dbtemplates

Django template loader for database stored templates with extensible cache backend

Home Page:https://django-dbtemplates.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Static file loading not working when using S3 static storage (DBTEMPLATES_MEDIA_PREFIX)

jensjeflensje opened this issue · comments

I'm using django-dbtemplates with codemirror enabled inside my admin site. The problem is that the url it's trying to fetch codemirror.js from is incorrect. It tries to get http://<s3 endpoint>/dbtemplates/js/codemirror.js, which doesn't work (of course).

I found that I'm able to modify the place it's looking with DBTEMPLATES_MEDIA_PREFIX. Setting that to any value will result in a URL that's somewhat more correct (e.g. http://<s3 endpoint>/<bucket>/static/<media prefix value>/js/codemirror.js. Setting the variable to dbtemplates/ makes codemirror.js load. The real problem is that codemirror loads submodules itself. By default, it tries to load them at the current path (e.g. /admin/dbtemplates/template/add/undo.js). I fixed the submodule loading by setting DBTEMPLATES_MEDIA_PREFIX to /dbtemplates/. This unfortunately causes the codemirror.js file itself to fail.

I think the usage of DBTEMPLATES_MEDIA_PREFIX should be split up into 2 different variables: one that makes codemirror.js load, and one that is passed as a path to the codemirror instance in javascript (dbtemplates/admin.py:51). It should at least not have the exact same value.