#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# Adapted From Http://stackoverflow.com/questions/1466827/ --
from django.conf import settings
from django.db.models import signals
from django.contrib.sites.models import Site
from django.contrib.sites import models as site_app
from django.contrib.sites.management import create_default_site as orig_default_site
signals.post_syncdb.disconnect(orig_default_site, sender=site_app)
# Configure default Site creation with better defaults, and provide
# overrides for those defaults via settings and kwargs:
def create_default_site(app, created_models, verbosity, db, **kwargs):
name = kwargs.pop('name', None)
domain = kwargs.pop('domain', None)
if not name:
name = getattr(settings, 'DEFAULT_SITE_NAME', 'example.com')
if not domain:
domain = getattr(settings, 'DEFAULT_SITE_DOMAIN', 'localhost:8000')
if Site in created_models:
if verbosity >= 2:
print "Creating example.com Site object"
s = Site(domain=domain, name=name)
s.save(using=db)
Site.objects.clear_cache()
signals.post_syncdb.connect(create_default_site, sender=site_app)
Comments
A slightly altered version of this snippet is now included in django-snippetscream
#