Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Gently push content from development to production. This is a public domain work of the US Government.
Branch: master

Merge pull request #62 from dlapiduz/licensing

Add licensing information
latest commit 16fbb7ec75
@cmc333333 cmc333333 authored
Failed to load latest commit information.
src Simplified the pushing process
.gitignore PEP8 cleanup
AUTHORS Add licensing information Add licensing information
COPYING.txt Add licensing information Organizing code into a proper python package
README.markdown Update README.markdown Add licensing information


Nudge is a Django app that lets you selectively push content from one Django server (we'll call this "staging") to another ("production").

When staging code, you might find it necessary to preview that code with real data. You might also use your staging-side Django admin as your primary content creation environment, in order to beef up security on your production end.

If you do either of these, moving content from staging to production requires copying your entire database from one server to another. Nudge fixes this. Nudge will let you move new and modified content from staging to production. As content is created, deleted, and modified in staging, Nudge will keep track of it. When you are ready to move that content to production, create a batch. Add whatever content necessary to that batch; ignore the content that is not yet ready to be sent to production. Save the batch and deploy it. The content in the batch will be immediately available in your production environment.

Nudge was inspired by the RAMP plugin for WordPress and wouldn't be possible without the incredible django-reversion version control extension.

You should understand how Reversion works before proceeding with nudge, and any models you'll want to use with Nudge should be enabled for Reversion.


  1. Install nudge with 'pip install django-nudge'
  2. add 'nudge' to your INSTALLED_APPS
  3. add nudge to your URL configuration, on your both servers: like: url(r'^nudge-api/', include('nudge.urls')),
  4. run syncdb

Using Nudge

  1. Use your favorite method of enabling django-reversion for your models.
  2. generate a key by running ./ new_nudge_key. Set this to NUDGE_KEY in both (staging and production)
  3. in the staging, set NUDGE_REMOTE_ADDRESS to the 'nudge-api' URL of your production server 'http://somehost/nudge-api/'
  4. in the staging, set NUDGE_SELECTIVE to a list any models that you want to use with Nudge (and are already being managed by reversion), like ['jobmanager.job', 'knowledgebase.question']
Something went wrong with that request. Please try again.