Giter Club home page Giter Club logo

Comments (4)

stefanfoulis avatar stefanfoulis commented on August 25, 2024 1

The workaround is of course to remove the template loader at initial migration time. But in some automated environments that is tedious.

IMHO no db queries or cache access should happen at import time.

from django-multisite.

jedie avatar jedie commented on August 25, 2024

I get the same problem :(

But removing the template loader will not help here.

from django-multisite.

mghughes avatar mghughes commented on August 25, 2024

I can't seem to reproduce this problem - using a fresh django 1.9 project with django-multisite 1.3.1 and these settings: https://gist.github.com/mghughes/6710f72d5c6ad6ffb6e4c9857ced7fe3

Since there are multiple people with this problem, am I missing something obvious? Or can you provide more information about what you're doing differently?

from django-multisite.

JordanReiter avatar JordanReiter commented on August 25, 2024

Stepping in because I've run across this error now.

This error can occur if you use an app which attempts to load a template on startup. I'm not sure how many apps do this regularly, but one prominent one is django-cms. It happens when it calls setup() in its apps.py file. This in turn calls plugin_pool.validate_templates() which calls loader.get_template().

There is no way to prevent this error from occurring as far as I can tell. I've looked at all of the involved code and apart from setting django-cms to catch all exceptions in its validate_templates method there isn't a way of preventing the error.

Obviously, this means that doing a standard test which starts with a completely empty database will not work unless you disable multisite during testing.

One possibility is something like this (untested):

# settings.py
_, command = sys.argv[:2]
if command in ['test', 'migrate']:
    ORIGINAL_TEMPLATES = list(TEMPLATES)
    TEMPLATES[0]['loaders'].remove('multisite.template_loader.Loader')

And then, in a test file:

from django.conf import settings

class TestMultiSiteLayouts(TestCase):
    def test_something:
        with self.override_settings(TEMPLATES=list(settings.ORIGINAL_TEMPLATES)):
            … do tests for multisite here …

from django-multisite.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.