{ "info": { "author": "Rick Vause", "author_email": "rvause@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python" ], "description": "==============\ndjango-changes\n==============\n\nA utility to store and access information about changes on objects in a Django\nproject.\n\n|TravisButton|_\n\n\nInstallation\n============\n\n``pip install django-changes``\n\nAdd to your Python path or ``setup.py install`` and add ``'changes'`` to your\n``INSTALLED_APPS`` setting.\n\n\nUsage\n=====\n\nYou can use by importing the helper::\n\n from changes import changes\n # ...\n changes.add_change(someobj, who=request.user)\n\nOr by using the object directly::\n\n from changes.models import Change\n # ...\n Change.objects.add_change_for_object(someobj, why='Because')\n\n\nTo get a queryset of changes that were added for an objects::\n\n changes.get_changes_for(someobj)\n\nor::\n\n Change.objects.get_changes_for_object(someobj)\n\n\nTo get a queryset of changes that were made by a user::\n\n changes.get_changes_by(someuser)\n\nor::\n\n Change.objects.get_changes_by_user(someuser)\n\n\nYou can also do things like this::\n\n Change.objects.all().by_user(someuser)\n changes.get_changes_for(someobj).anonymous()\n\n\nIncluded is a 'Mixin' for your models that you expect to be recording changes\non a lot that will give you the reverse relation ``changes``::\n\n from changes.models import ChangesMixin\n # ...\n class SomeModel(ChangesMixin, models.Model)\n\nThis mixin will give you some helpful methods::\n\n somemodelinstance.add_change(why='Time for change')\n somemodelinstance.get_changes()\n\nYou can also add a change when saving::\n\n somemodelinstance.save(changed=True, who=someuser, why='Changing')\n\nThe default behaviour is to not save a change::\n\n somemodelinstance.save()\n\nThe mixin also omits a signal, ``change_added`` when a change is added for the\nobject.\n\n\nSee the source code for more.\n\n\nNeed Help?\n==========\n\nEmail: rvause@gmail.com\n\nGithub: https://github.com/rvause/django-changes\n\n\n.. |TravisButton| image:: https://travis-ci.org/rvause/django-changes.png?branch=master\n.. _TravisButton: https://travis-ci.org/rvause/django-changes", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rvause/django-changes", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "django-changes", "package_url": "https://pypi.org/project/django-changes/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-changes/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rvause/django-changes" }, "release_url": "https://pypi.org/project/django-changes/0.2.2/", "requires_dist": null, "requires_python": null, "summary": "A utility to store and access information about changes on objects in a Django\nproject.", "version": "0.2.2" }, "last_serial": 808170, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "ef5010fca8d77ca727bfd62e1f4c93f9", "sha256": "02c2ecefc018daad2ad96d3675046831948873d3eacddfcce19f49afc4c14f9c" }, "downloads": -1, "filename": "django-changes-0.1.tar.gz", "has_sig": false, "md5_digest": "ef5010fca8d77ca727bfd62e1f4c93f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4012, "upload_time": "2013-03-15T15:19:07", "url": "https://files.pythonhosted.org/packages/ba/7e/611a7743b2521177c842f6f9f40581235fa0f71fbbaaa8bc3885dbe27572/django-changes-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2ff8ca59eeb4c0d744926dff0e7ddf44", "sha256": "f8a76a847d1c150cc2bac9248180aa3e3baa4a7c8390fea6a99f205d1db05092" }, "downloads": -1, "filename": "django-changes-0.2.tar.gz", "has_sig": false, "md5_digest": "2ff8ca59eeb4c0d744926dff0e7ddf44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5070, "upload_time": "2013-03-22T13:27:02", "url": "https://files.pythonhosted.org/packages/c2/e3/0c0264c6a5ddb2b18b7d356b0ef454e2e7c2abf8e81e77c30df1fd82c80f/django-changes-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "fc2ee2af5d5c391610bf0dd05ece2f8e", "sha256": "ba85cef9f40d44c1df5f2c28d2f1f1dc4b8335a2ade1ed195248dece3846bad1" }, "downloads": -1, "filename": "django-changes-0.2.1.tar.gz", "has_sig": false, "md5_digest": "fc2ee2af5d5c391610bf0dd05ece2f8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5176, "upload_time": "2013-06-28T14:06:07", "url": "https://files.pythonhosted.org/packages/89/5a/1dbcdd78e264538d2c234d4c2bc94cbbad35dc4b81cd83d35eeb9a6232e8/django-changes-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "56880be4def1aa22b0c6e4ad2c62ddc2", "sha256": "a755faaf6f671b88c533027fb0bd37e3dfab0a554ce7351983b98b977ab84257" }, "downloads": -1, "filename": "django-changes-0.2.2.tar.gz", "has_sig": false, "md5_digest": "56880be4def1aa22b0c6e4ad2c62ddc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5393, "upload_time": "2013-07-04T15:03:11", "url": "https://files.pythonhosted.org/packages/83/5c/0616dcf627d7d5a5d02df8881c6b6532fe4daddf02ade34662ddff3278e6/django-changes-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "56880be4def1aa22b0c6e4ad2c62ddc2", "sha256": "a755faaf6f671b88c533027fb0bd37e3dfab0a554ce7351983b98b977ab84257" }, "downloads": -1, "filename": "django-changes-0.2.2.tar.gz", "has_sig": false, "md5_digest": "56880be4def1aa22b0c6e4ad2c62ddc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5393, "upload_time": "2013-07-04T15:03:11", "url": "https://files.pythonhosted.org/packages/83/5c/0616dcf627d7d5a5d02df8881c6b6532fe4daddf02ade34662ddff3278e6/django-changes-0.2.2.tar.gz" } ] }