diff --git a/apps/common/__init__.py b/apps/common/__init__.py index 9d177e93ed..20657c8419 100644 --- a/apps/common/__init__.py +++ b/apps/common/__init__.py @@ -1,9 +1,13 @@ import tempfile from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth import models as auth_models +from django.contrib.auth.management import create_superuser +from django.db.models import signals + +from navigation.api import register_links from common.conf import settings as common_settings -from navigation.api import register_links TEMPORARY_DIRECTORY = common_settings.TEMPORARY_DIRECTORY \ if common_settings.TEMPORARY_DIRECTORY else tempfile.mkdtemp() @@ -17,3 +21,32 @@ current_user_details = {'text': _(u'user details'), 'view': 'current_user_detail current_user_edit = {'text': _(u'edit details'), 'view': 'current_user_edit', 'famfam': 'vcard_edit'} register_links(['current_user_details', 'current_user_edit', 'password_change_view'], [current_user_details, current_user_edit, password_change_view], menu_name='secondary_menu') + + +if common_settings.AUTO_CREATE_ADMIN: + # From https://github.com/lambdalisue/django-qwert/blob/master/qwert/autoscript/__init__.py + # From http://stackoverflow.com/questions/1466827/ -- + # + # Prevent interactive question about wanting a superuser created. (This code + # has to go in this otherwise empty "models" module so that it gets processed by + # the "syncdb" command during database creation.) + # + # Create our own test user automatically. + def create_testuser(app, created_models, verbosity, **kwargs): + USERNAME = common_settings.AUTO_ADMIN_USERNAME + PASSWORD = common_settings.AUTO_ADMIN_PASSWORD + try: + auth_models.User.objects.get(username=USERNAME) + except auth_models.User.DoesNotExist: + print '*' * 80 + print 'Creating test user -- login: %s, password: %s' % (USERNAME, PASSWORD) + print '*' * 80 + assert auth_models.User.objects.create_superuser(USERNAME, 'x@x.com', PASSWORD) + else: + print 'Test user already exists. -- login: %s, password: %s' % (USERNAME, PASSWORD) + signals.post_syncdb.disconnect( + create_superuser, + sender=auth_models, + dispatch_uid='django.contrib.auth.management.create_superuser') + signals.post_syncdb.connect(create_testuser, + sender=auth_models, dispatch_uid='common.models.create_testuser') diff --git a/apps/common/conf/settings.py b/apps/common/conf/settings.py index 7e22f83d27..b1ed61dead 100644 --- a/apps/common/conf/settings.py +++ b/apps/common/conf/settings.py @@ -31,3 +31,27 @@ DEFAULT_PAGE_ORIENTATION = register_setting( global_name=u'COMMON_DEFAULT_PAGE_ORIENTATION', default=PAGE_ORIENTATION_PORTRAIT, ) + +register_setting( + namespace=u'common', + module=u'common.conf.settings', + name=u'AUTO_CREATE_ADMIN', + global_name=u'COMMON_AUTO_CREATE_ADMIN', + default=True, +) + +register_setting( + namespace=u'common', + module=u'common.conf.settings', + name=u'AUTO_ADMIN_USERNAME', + global_name=u'COMMON_AUTO_ADMIN_USERNAME', + default=u'admin', +) + +register_setting( + namespace=u'common', + module=u'common.conf.settings', + name=u'AUTO_ADMIN_PASSWORD', + global_name=u'COMMON_AUTO_ADMIN_PASSWORD', + default=u'admin', +)