Anyone see any problems with running migrations in Middleware?

import logging
import os
import time

from django.core.management import call_command
from django.http import HttpResponse

from products.models.models import AppVersion

LOG = logging.getLogger(__name__)


# Used for testing locally when the GAE_VERSION environment is not set
FAKE_VERSION_TESTING = 8


class MigrateMiddleware:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        start_time = time.time()
        try:
            LOG.info("Running migrate middleware")
            # Figure out what version of our app is now deployed            

            app_version, created = 
AppVersion.objects.get_or_create(version=os.getenv('GAE_VERSION', 
FAKE_VERSION_TESTING))
            if not app_version.migrations_succeeded or created:

                # Previous attempt at this deployed version failed, or this was 
a new deployment.
                try:
                    call_command('migrate')
                except:
                    return HttpResponse("Running a Django migration failed! 
Investigate.", status=500)
                app_version.migrations_succeeded = True
                app_version.save()
        finally:
            LOG.info("Took: %ss", time.time() - start_time)
        return self.get_response(request)



It seems to work just fine in a quick test.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/bdfd6393-6d68-4285-b5a6-eb1be98ef467%40googlegroups.com.

Reply via email to