{ "info": { "author": "Adam Haney", "author_email": "adam.haney@getbellhops.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP" ], "description": "django-ondelta\n==============\n\nA django model mixin that makes it easy to react to field value\nchanges on models. Supports an API similar to the model clean method.\n\n\nQuick Start\n-----------\n\nGiven that I have the model\n\n class MyModel(models.Model):\n mai_field = models.CharField()\n other_field = models.BooleanField()\n\nAnd I want to be notified when mai_field's value is changed and\npersisted I would simply need to modify my model to include a\n`ondelta_mai_field` method.\n\n from ondelta.models import OnDeltaMixin\n\n class MyModel(OnDeltaMixin):\n mai_field = models.CharField()\n other_field = models.BooleanField()\n\n def ondelta_mai_field(self, old_value, new_value):\n print(\"mai field had the value of {}\".format(old_value))\n print(\"but after we called save it had the value of {}\".format(new_value))\n\nThis is the easiest method to watch a single field for changes, but\nwhat if we want to perform an action that has an aggregate view\nof all of the fields that were changed? `OnDeltaMixin` provides an\n`ondelta_all` method for these cases; it is only called once for\neach save.\n\n from ondelta.models import OnDeltaMixin\n\n class MyModel(OnDeltaMixin):\n mai_field = models.CharField()\n other_field = models.BooleanField()\n\n ondelta_all(self, fields_changed):\n if 'mai_field' in fields_changed and 'other_field' in fields_changed:\n print(\"Both fields changed during this save!\")\n\n\nUnsupported Field Types\n-----------------------\n\nSome field types are not supported: `ManyToManyField`, reverse `ManyToManyField`,\nreverse `ForeignKey`, and reverse `OneToOneField` relations. If you create an\n`ondelta_field_name` method for one of these fields, it will **not** be called when\nthat field is changed.\n\n\nHelp\n----\n\nI like to help people as much as possible who are using my libraries,\nthe easiest way to get my attention is to tweet @adamhaney or open an\nissue. As long as I'm able I'll help with any issues you have.", "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/adamhaney/django-ondelta", "keywords": "Django,observer", "license": "LGPL", "maintainer": null, "maintainer_email": null, "name": "ondelta", "package_url": "https://pypi.org/project/ondelta/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ondelta/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/adamhaney/django-ondelta" }, "release_url": "https://pypi.org/project/ondelta/0.6.0/", "requires_dist": null, "requires_python": null, "summary": "A mixin that allows models to register methods that are notified when their values change,or register a method that is notified of all changes. Basically, OnDeltaMixin implementsthe observer pattern.", "version": "0.6.0" }, "last_serial": 2215078, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "2a1d8f063f00a37f7291d5c2e846954d", "sha256": "3fad72e9e51a1b830d6b3e9ca2f20e343e7e2de6dbc1aa395560d1a1a77ca11a" }, "downloads": -1, "filename": "ondelta-0.1.tar.gz", "has_sig": false, "md5_digest": "2a1d8f063f00a37f7291d5c2e846954d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2647, "upload_time": "2013-10-28T17:38:33", "url": "https://files.pythonhosted.org/packages/a4/5d/82304e85843fe8b0f57be4f308e0608f085bd8a744f0603e99e12cf261b0/ondelta-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2d1336bacadd8dd0fc824b2e95133c8f", "sha256": "08a04d26a8cd48532b97fedc0ddd49bcfdcbcca7c72d93af396614bef873ac40" }, "downloads": -1, "filename": "ondelta-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2d1336bacadd8dd0fc824b2e95133c8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2648, "upload_time": "2013-10-28T17:39:02", "url": "https://files.pythonhosted.org/packages/7f/fe/2653d82e4c1f6f77a0a81662ba64c6a70ae3418a3f5995832f32b78ca094/ondelta-0.1.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "b08a9bbf6ce64e9dbb2b0d1078c411cb", "sha256": "6053cd227064c719da82cf897d7755c798b0f2888709e27bf8b01ca4d42594ab" }, "downloads": -1, "filename": "ondelta-0.1.3.tar.gz", "has_sig": false, "md5_digest": "b08a9bbf6ce64e9dbb2b0d1078c411cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2760, "upload_time": "2013-10-28T17:53:58", "url": "https://files.pythonhosted.org/packages/d7/39/2a3f3851b258d7b05b4da529682099e03c65e92cf5023c3ea09b9aeb0f17/ondelta-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f4b0c516919d5f7894d17754eebf5d12", "sha256": "fc0f3e6d309f6fa3491615855633bdd8d08f0d27f4584000a575b7e2c483f49e" }, "downloads": -1, "filename": "ondelta-0.1.4.tar.gz", "has_sig": false, "md5_digest": "f4b0c516919d5f7894d17754eebf5d12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2756, "upload_time": "2013-10-28T17:55:14", "url": "https://files.pythonhosted.org/packages/35/63/36c15d9b8bea130c395d60c9ff57dd8210de1c4ce4f3f467f533f23351a6/ondelta-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "40cedf27214a52b04233b85bd896c276", "sha256": "de614a642491ebed8cd21d4cbc13c574aa5b9eb25e86d3f071b399f384ade3cb" }, "downloads": -1, "filename": "ondelta-0.1.5.tar.gz", "has_sig": false, "md5_digest": "40cedf27214a52b04233b85bd896c276", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2754, "upload_time": "2013-10-28T17:59:59", "url": "https://files.pythonhosted.org/packages/e6/35/90416c5a35e0fb1f1b6502cb3a612e707dac3d90ae88a1242e23dd10af48/ondelta-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d72c9fd5147b983c43f9ae29827c7870", "sha256": "4404e65cf70938b0e5d0feee291af415543719b560c5f74619b7bccd8a4ae21a" }, "downloads": -1, "filename": "ondelta-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d72c9fd5147b983c43f9ae29827c7870", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2844, "upload_time": "2013-10-28T20:19:02", "url": "https://files.pythonhosted.org/packages/45/52/72eb2c03d44940267049cf608949a0aca046003a479cd8e4a39b62bf15a3/ondelta-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "built for Darwin-13.0.0", "digests": { "md5": "1dee09b89ec614964e68f13044bdbb04", "sha256": "e0c1c629c7a91f4fb7d35de7c0ca69277475447f6372b994149a8b8ce5298708" }, "downloads": -1, "filename": "ondelta-0.2.1.macosx-10.8-x86_64.tar.gz", "has_sig": false, "md5_digest": "1dee09b89ec614964e68f13044bdbb04", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 3931, "upload_time": "2013-11-22T02:27:25", "url": "https://files.pythonhosted.org/packages/03/a8/3c247d35f7d8144b108c0c3d14ffec8fa657ecb257618f37b9da02fab11a/ondelta-0.2.1.macosx-10.8-x86_64.tar.gz" } ], "0.2.2": [], "0.3.0": [ { "comment_text": "", "digests": { "md5": "f1c0cdfe39f7be163a987a6feb42de7d", "sha256": "581e34fbafd67926586e6b739e8a1727f0d28b85315947bb3c0ed3930a9a2df3" }, "downloads": -1, "filename": "ondelta-0.3.0.tar.gz", "has_sig": false, "md5_digest": "f1c0cdfe39f7be163a987a6feb42de7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3270, "upload_time": "2014-07-01T13:38:08", "url": "https://files.pythonhosted.org/packages/5c/76/c87861ccb6b1cf268a7d4c742110764c19c1447a559733a5b2334ff75750/ondelta-0.3.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "22e493cb55a65c6f205f176fa4764a71", "sha256": "270181d49c70cad1b298597a7d28ff89c7be1a4a8a85a984124e2901b2159e6f" }, "downloads": -1, "filename": "ondelta-0.5.0.tar.gz", "has_sig": false, "md5_digest": "22e493cb55a65c6f205f176fa4764a71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3511, "upload_time": "2015-02-20T15:19:59", "url": "https://files.pythonhosted.org/packages/34/a4/dcde5e78286463942044a76327d2d6bbbf9a5039cc13411d7b1f8b9b5a4e/ondelta-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "built for Darwin-15.5.0", "digests": { "md5": "041c12c026f338698ed1e090ffeeb828", "sha256": "4ee0f7ceebaa0e37b0d6a6b12620bd43d8e518b18f5d36d3facb18c714588037" }, "downloads": -1, "filename": "ondelta-0.6.0.macosx-10.11-intel.tar.gz", "has_sig": false, "md5_digest": "041c12c026f338698ed1e090ffeeb828", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 4669, "upload_time": "2016-07-11T20:01:59", "url": "https://files.pythonhosted.org/packages/38/bc/c6ed04b2e1c84717a9f0a7ed13a2a507a5d04a7d8cc89f789d8f843c0f40/ondelta-0.6.0.macosx-10.11-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "b571b8e66e9b00063e5a38ae3d026e6c", "sha256": "aba5307502afb16c9d0c166cef5aa5a7771b8130b147cd6b927802d0ddcb8c91" }, "downloads": -1, "filename": "ondelta-0.6.0.tar.gz", "has_sig": false, "md5_digest": "b571b8e66e9b00063e5a38ae3d026e6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3610, "upload_time": "2016-07-11T20:01:11", "url": "https://files.pythonhosted.org/packages/52/17/36603a69e523d351f593b6bdc917ff9a6553ce4b0d3a75e6fc4667a1c39d/ondelta-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "built for Darwin-15.5.0", "digests": { "md5": "041c12c026f338698ed1e090ffeeb828", "sha256": "4ee0f7ceebaa0e37b0d6a6b12620bd43d8e518b18f5d36d3facb18c714588037" }, "downloads": -1, "filename": "ondelta-0.6.0.macosx-10.11-intel.tar.gz", "has_sig": false, "md5_digest": "041c12c026f338698ed1e090ffeeb828", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 4669, "upload_time": "2016-07-11T20:01:59", "url": "https://files.pythonhosted.org/packages/38/bc/c6ed04b2e1c84717a9f0a7ed13a2a507a5d04a7d8cc89f789d8f843c0f40/ondelta-0.6.0.macosx-10.11-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "b571b8e66e9b00063e5a38ae3d026e6c", "sha256": "aba5307502afb16c9d0c166cef5aa5a7771b8130b147cd6b927802d0ddcb8c91" }, "downloads": -1, "filename": "ondelta-0.6.0.tar.gz", "has_sig": false, "md5_digest": "b571b8e66e9b00063e5a38ae3d026e6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3610, "upload_time": "2016-07-11T20:01:11", "url": "https://files.pythonhosted.org/packages/52/17/36603a69e523d351f593b6bdc917ff9a6553ce4b0d3a75e6fc4667a1c39d/ondelta-0.6.0.tar.gz" } ] }