On 10/14/2012 03:47 PM, Joshua Russo wrote:
I have project that I have been working and I was contemplating open sourcing it but I ran into a little hang up. How to handle the database authentication. The settings file obviously needs to be included but I don't want to advertise the production database login. How is this generally handled?

Also, are there procedures that need to be followed to "properly" open source a project, or is it really just choosing a licence and dubbing it so?

Hi Joshua,

You would have the same issue if you have a staging process where you go from development, testing, and production. We handle that by having a local_config.py that is not checked into the Mercurial repo. At the top of settings.py, we have code that looks like this:

import local_settings as LOCAL_SETTINGS

######### The following variables are defined in local_settings.py 
##############

DEBUG = LOCAL_SETTINGS.DEBUG
ADMINS = LOCAL_SETTINGS.ADMINS

DATABASES = {
    'default': {
       'ENGINE': LOCAL_SETTINGS.DATABASES['default']['ENGINE'],
        'NAME': LOCAL_SETTINGS.DATABASES['default']['NAME'],
        'USER': LOCAL_SETTINGS.DATABASES['default']['USER'],
        'PASSWORD': LOCAL_SETTINGS.DATABASES['default']['PASSWORD'],
        'HOST': LOCAL_SETTINGS.DATABASES['default']['HOST'],
        'PORT': LOCAL_SETTINGS.DATABASES['default']['PORT'],
    }
}

TIME_ZONE = LOCAL_SETTINGS.TIME_ZONE
SECRET_KEY = LOCAL_SETTINGS.SECRET_KEY

DEFAULT_FROM_EMAIL = LOCAL_SETTINGS.DEFAULT_FROM_EMAIL
EMAIL_HOST = LOCAL_SETTINGS.EMAIL_HOST
EMAIL_PORT = LOCAL_SETTINGS.EMAIL_PORT
EMAIL_HOST_USER = LOCAL_SETTINGS.EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = LOCAL_SETTINGS.EMAIL_HOST_PASSWORD
EMAIL_USE_TLS = LOCAL_SETTINGS.EMAIL_USE_TLS

CONTACT_EMAIL = LOCAL_SETTINGS.CONTACT_EMAIL

INTERNAL_IPS = LOCAL_SETTINGS.INTERNAL_IPS

######### End of variables defined in local_settings.py ##############

local_settings.py can vary from instance of the application to another and those sensitive things like passwords are never kept under revision control. settings.py is consistent regardless of whether it's a development, testing, or production deployment. If you find yourself having to change things in settings.py if you deploy onto another server, chances are it should be factored out into local_settings.py and imported into settings.py as above.

--
Regards,

Clifford Ilkay
Dinamis
1419-3230 Yonge St.
Toronto, ON
Canada  M4N 3P6

<http://dinamis.com>
+1 416-410-3326

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to