Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close
To install:

sudo setup.py install

*add fullhistory middleware

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
    'fullhistory.fullhistory.FullHistoryMiddleware',
)

* add fullhistory to installed apps:

INSTALLED_APPS = (
    'fullhistory',
)

* In your models.py, select the models you want to have fullhistory:

from fullhistory import register_model
register_model(SKU)
register_model(Order)
register_model(OrderItem)

Known Issues
 * Many to Many fields don't automatically record changes. Adjustments have been made in the admin model to compensate for this. However, changes done outside the admin that are not adjusted may exhibit a delayed recording. (Django Ticket #5390)
 * Files are not preserved, just their path.
 * (Django 1.0 only) The FullHistory field does not work as expected with Non-abstract model inheritence, primarly for objects the have inherited another's FullHistory field (Django Ticket #9546)
 * FullHistory truncates microseconds for DateTimeFields
 * DateTimeFields are deserialized as strings
 * Model proxies is inefficient, likely to create duplicate history entries. Will be fixed.

Notes
 * Records for models that use Non-abstract inheritence are stored seperately per table. This has to do with the current implementation of serialization in Django. Also parent tables are capable of being independently modified of their inherited children.
 * Fullhistory for Non-abstract Model inheritence is slightly less performant as it follows the parental field.
 * QuerySet methods delete() and update() do not trigger signals and thus are outside of fullhistory
 * FullHistory Admin functionality is limited in Django 1.0


Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.