{ "info": { "author": "Incuna", "author_email": "admin@incuna.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Testing" ], "description": "# django-model-logging\n\nLogging for changes made to Django model instances.\n\n## Installation\n\n`pip install django-model-logging`\n\nAdd `model_logging` to your `INSTALLED_APPS`.\n\n## Usage\n\n#### Low-level use\n\n```python\nfrom model_logging.models import LogEntry\n\nLogEntry.objects.log(\n log_entry_creator,\n operation,\n model,\n user,\n json_data,\n)\n```\n\nThe parameters are as follows:\n\n* `log_entry_creator`: The user who made this change.\n* `operation`: One of `LogEntry.OPERATION_ADDED`, `LogEntry.OPERATION_REMOVED`,\nor `LogEntry.OPERATION_MODIFIED`.\n* `model`: The path to the model being logged (e.g. 'users.models.User').\n* `user`: The user to which the model instance belongs.\n* `json_data`: A full or partial JSON representation of data on the model instance.\n\n#### Medium-level use\n\nTo add methods to a view(set) that can be used to straightforwardly log changes:\n\n```python\nfrom model_logging.views import LoggingMethodMixin\n\nclass AViewOrViewset(LoggingMethodMixin, ModelViewSet):\n def _get_logging_user(self):\n # Override this method to return a suitable\n # value for the `user` parameter above.\n return self.instance.user # or similar\n\n def extra_data(self):\n # Overriding this isn't mandatory, it's just a hook\n return {'any additional data': 'you wish to log'}\n```\n\nThe class now has access to the following:\n\n```python\ndef log(self, operation, data):\n # A simplified version of LogEntry.objects.log,\n # with some parameters pre-filled. The return\n # value of extra_data() will be added to the\n # supplied data.\n\ndef _log_on_create(self, serializer):\n # Log a LogEntry.OPERATION_ADDED change, using\n # the log() method above.\n\ndef _log_on_update(self, serializer):\n # Log a LogEntry.OPERATION_MODIFIED change, using\n # the log() method above.\n\ndef _log_on_destroy(self, instance):\n # Log a LogEntry.OPERATION_DELETED change, using\n # the log() method above.\n```\n\nMore abstract still:\n\n#### High-level use\n\nA viewset can log its own changes!\n\n```python\nfrom model_logging.views import LoggingViewSetMixin\n\nclass AVeryShinyViewSet(LoggingViewSetMixin, ModelViewSet):\n def _get_logging_user(self):\n # Override this method to return a suitable\n # value for the `user` parameter above.\n return self.instance.user # or similar\n\n def extra_data(self):\n # Overriding this isn't mandatory, it's just a hook\n return {'any additional data': 'you wish to log'}\n```\n\nThis mixin is a wrapper around `LoggingMethodMixin` that calls the appropriate logging\nmethods during `perform_create`, `perform_update` and `perform_destroy`.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/incuna/django-model-logging/", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django-model-logging", "package_url": "https://pypi.org/project/django-model-logging/", "platform": "", "project_url": "https://pypi.org/project/django-model-logging/", "project_urls": { "Homepage": "https://github.com/incuna/django-model-logging/" }, "release_url": "https://pypi.org/project/django-model-logging/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "Generic and secure logging for changes to Django model instances", "version": "1.0.0" }, "last_serial": 2678349, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c34c21f6c0fbf7b129ae938ec860dc5d", "sha256": "04b4a2a6e8edf2d94f57e298137b42df2c71ba49a187a5ff4edda87eba35403f" }, "downloads": -1, "filename": "django_model_logging-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c34c21f6c0fbf7b129ae938ec860dc5d", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 12505, "upload_time": "2015-10-06T15:12:51", "url": "https://files.pythonhosted.org/packages/81/56/d1d02b5c2e65fee2560c178bf188863b8e52431cf889ac079523cd8f122b/django_model_logging-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da1ea67401f5f03980bb77d3b666d7a4", "sha256": "492eef3a5b2e1b6d26c10d0986dc91aa913609ad412a75dd037bbe659d337336" }, "downloads": -1, "filename": "django-model-logging-0.1.0.tar.gz", "has_sig": false, "md5_digest": "da1ea67401f5f03980bb77d3b666d7a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7862, "upload_time": "2015-10-06T15:12:46", "url": "https://files.pythonhosted.org/packages/45/7a/99e4b3627e9fe2b803fd633facdcef00d52ddbfd50f824ffbd98b77f713f/django-model-logging-0.1.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "ca12b55aad85d620ece2ada02711983c", "sha256": "8da4ee4657ef9b479f0af4e0e13cf5cf0865a667b7ff4df41dff60e280ccf283" }, "downloads": -1, "filename": "django_model_logging-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ca12b55aad85d620ece2ada02711983c", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14713, "upload_time": "2017-03-02T15:05:16", "url": "https://files.pythonhosted.org/packages/fa/d9/b0b7c3d35c51933050ef0a75b3a1e9e96740aa1073f38721b8433447a195/django_model_logging-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52de910be7d270d4c86e4c60352c2240", "sha256": "8da3778cfca27db504ca19bf4db96ba7fd133a6349322f73793aff5125230542" }, "downloads": -1, "filename": "django-model-logging-1.0.0.tar.gz", "has_sig": false, "md5_digest": "52de910be7d270d4c86e4c60352c2240", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8492, "upload_time": "2017-03-02T15:05:14", "url": "https://files.pythonhosted.org/packages/7a/54/c2be3c01c0b8ba6e112a6348d90b46d899e7e7223121275812b7243f3c54/django-model-logging-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ca12b55aad85d620ece2ada02711983c", "sha256": "8da4ee4657ef9b479f0af4e0e13cf5cf0865a667b7ff4df41dff60e280ccf283" }, "downloads": -1, "filename": "django_model_logging-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ca12b55aad85d620ece2ada02711983c", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 14713, "upload_time": "2017-03-02T15:05:16", "url": "https://files.pythonhosted.org/packages/fa/d9/b0b7c3d35c51933050ef0a75b3a1e9e96740aa1073f38721b8433447a195/django_model_logging-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52de910be7d270d4c86e4c60352c2240", "sha256": "8da3778cfca27db504ca19bf4db96ba7fd133a6349322f73793aff5125230542" }, "downloads": -1, "filename": "django-model-logging-1.0.0.tar.gz", "has_sig": false, "md5_digest": "52de910be7d270d4c86e4c60352c2240", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8492, "upload_time": "2017-03-02T15:05:14", "url": "https://files.pythonhosted.org/packages/7a/54/c2be3c01c0b8ba6e112a6348d90b46d899e7e7223121275812b7243f3c54/django-model-logging-1.0.0.tar.gz" } ] }