{ "info": { "author": "Tanner Netterville", "author_email": "tannern@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Django Delta Logger\n\nA django app that provides a model class that records changes in django models.\n\n\n## Installation\n\n### Get the Package\n\n```\npip install django_delta_logger\n```\n\n### Update the Django Settings\n\nAdd `django_delta_logger` to the `INSTALLED_APPS` list.\n\n```\nINSTALLED_APPS=[\n # ...\n 'django_delta_logger',\n # ...\n]\n```\n\nMake sure `JSON_ENCODER` is set in the django settings. A reasonable default is provided and is directly importable into an existing settings file.\n\n```\nfrom django_delta_logger.settings import JSON_ENCODER\n```\n\n## Usage\n\nDjango_delta_logger's primary API is a context manager:\n\n```\nfrom django_delta_logger.delta_logger import DeltaLogger\n\nwith DeltaLogger(SomeDjangoModel, SomeOtherDjangoModel):\n foo = SomeDjangoModel(name='foo')\n foo.save()\n```\n\n## Log Results\n\nAccess the history of a model instance from the `DeltaEvent` model.\n\n```\nfrom django_delta_logger.models import DeltaEvent\n\ninstance = SomeModel.objects.get(pk=1)\nevents = DeltaEvent.objects.get_for_instance(instance).all()\n\nfor event in events:\n print(event.event_time, event.event_type, event.event_data)\n```\n\n```\nfrom django_delta_logger.models import DeltaEvent\n\nevents = DeltaEvent.objects.get_for_model(SomeDjangoModel).all()\n\nfor event in events:\n print(event.event_time, event.event_type, event.event_data)\n```\n\n### The Risks of Concurrency\n\nTracking the `dirtyness` of a model instance field is performant but can lead to inaccurate log data when one\nmodel instance is edited in multiple threads/processes/servers.\n\nWhen data accuracy in a concurrent environment is worth the performance cost of a fetch-before-write:\n\n```\nfrom django_delta_logger.delta_logger import DeltaLogger\n\nwith DeltaLogger(SomeDjangoModel, concurrent=True):\n foo = SomeDjangoModel(name='foo')\n foo.save()\n```\n\n## Test Suite\n\n`python setup.py test`\n\n\n## License\n\nThis software is published under the MIT License. See the `LICENSE` file\nfor details.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-delta-logger", "package_url": "https://pypi.org/project/django-delta-logger/", "platform": "", "project_url": "https://pypi.org/project/django-delta-logger/", "project_urls": null, "release_url": "https://pypi.org/project/django-delta-logger/0.1.1/", "requires_dist": [ "django (>=2.2)" ], "requires_python": "", "summary": "Model instance change logging for django models.", "version": "0.1.1" }, "last_serial": 5652580, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "991c4be69974d82527594483c1d7d555", "sha256": "e57ff017292c7566f70810f2de389aee91b467ce33dec6c622ee0b51d5b88e48" }, "downloads": -1, "filename": "django_delta_logger-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "991c4be69974d82527594483c1d7d555", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8053, "upload_time": "2019-08-08T19:58:40", "url": "https://files.pythonhosted.org/packages/15/c3/0a658bf4934ca11ab162929f0e2f478bcf5ca302c0f9ccab5996218e894a/django_delta_logger-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b87db6da3a7773832912f92e96c39c7", "sha256": "1c39e93c325b146b17bf1adbe61e7bc3255a6e99062847e7279358d460857509" }, "downloads": -1, "filename": "django_delta_logger-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6b87db6da3a7773832912f92e96c39c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5013, "upload_time": "2019-08-08T19:58:42", "url": "https://files.pythonhosted.org/packages/65/f6/738ef464c761a834db5df826056699d9aaee43c4ed92ee40af34f5c94b7e/django_delta_logger-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "6a15f1ad1f5a72d8da1ace50f8965f02", "sha256": "ce14c750ce50cd141b0dc22403835e7f3f7b5f6d51ab91fc066586df203b33cb" }, "downloads": -1, "filename": "django_delta_logger-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6a15f1ad1f5a72d8da1ace50f8965f02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8078, "upload_time": "2019-08-08T22:29:41", "url": "https://files.pythonhosted.org/packages/55/cd/616eca825d492de8b8a7a202c390241b515aea626da0ec941350e914a619/django_delta_logger-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d679be0b096fe727b4a015a3c0e89f4", "sha256": "45cfedc680a9fecdbf2c71293c25635ddc27ca461bbcb08c174959bdb78cf89a" }, "downloads": -1, "filename": "django_delta_logger-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6d679be0b096fe727b4a015a3c0e89f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5045, "upload_time": "2019-08-08T22:29:43", "url": "https://files.pythonhosted.org/packages/a4/f1/d650e8de597f5fe0f5034fb7ae89951e2c38c850c34a04a64112dadc2799/django_delta_logger-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6a15f1ad1f5a72d8da1ace50f8965f02", "sha256": "ce14c750ce50cd141b0dc22403835e7f3f7b5f6d51ab91fc066586df203b33cb" }, "downloads": -1, "filename": "django_delta_logger-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6a15f1ad1f5a72d8da1ace50f8965f02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8078, "upload_time": "2019-08-08T22:29:41", "url": "https://files.pythonhosted.org/packages/55/cd/616eca825d492de8b8a7a202c390241b515aea626da0ec941350e914a619/django_delta_logger-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d679be0b096fe727b4a015a3c0e89f4", "sha256": "45cfedc680a9fecdbf2c71293c25635ddc27ca461bbcb08c174959bdb78cf89a" }, "downloads": -1, "filename": "django_delta_logger-0.1.1.tar.gz", "has_sig": false, "md5_digest": "6d679be0b096fe727b4a015a3c0e89f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5045, "upload_time": "2019-08-08T22:29:43", "url": "https://files.pythonhosted.org/packages/a4/f1/d650e8de597f5fe0f5034fb7ae89951e2c38c850c34a04a64112dadc2799/django_delta_logger-0.1.1.tar.gz" } ] }