{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Framework :: Django :: 1.11", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6" ], "description": "Django Super Deduper\n====================\n\n|Build status| |codecov| |Python version|\n\nA collection of classes and utilities to aid in de-duping Django model\ninstances.\n\nRequirements\n------------\n\n- Python 3.6\n- Django 1.11\n\nInstall\n-------\n\n``pip install django-super-deduper``\n\nUsage\n-----\n\nMerging Duplicate Instances\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default any `empty\nvalues `__\non the primary object will take the value from the duplicates.\nAdditionally, any related one-to-one, one-to-many, and many-to-many\nrelated objects will be updated to reference the primary object.\n\n.. code:: python\n\n > from django_super_deduper.merge import MergedModelInstance\n > primary_object = Model.objects.create(attr_A=None, attr_B='')\n > alias_object_1 = Model.objects.create(attr_A=X)\n > alias_object_2 = Model.objects.create(attr_B=Y)\n > merged_object = MergedModelInstance.create(primary_object, [alias_object_1, alias_object_2])\n > merged_object.attr_A\n X\n > merged_object.attr_B\n Y\n\nImprovements\n------------\n\n- Support multiple merging strategies\n- Recursive merging of related one-to-one objects\n\nLogging\n-------\n\nThis package does have some rudimentary logging for debugging purposes.\nAdd this snippet to your Django logging settings to enable it:\n\n.. code:: python\n\n LOGGING = {\n 'loggers': {\n 'django_super_deduper': {\n 'handlers': ['console'],\n 'level': 'DEBUG',\n },\n },\n }\n\nReferences\n----------\n\n- https://djangosnippets.org/snippets/2283/\n- https://stackoverflow.com/questions/3393378/django-merging-objects\n\n.. |Build status| image:: https://badge.buildkite.com/9895056b294e7f1a8893b9ef75bb743f3933fc3264e23eeeb2.svg\n :target: https://buildkite.com/mighty/django-super-deduper\n.. |codecov| image:: https://codecov.io/gh/mighty-justice/django-super-deduper/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/mighty-justice/django-super-deduper\n.. |Python version| image:: https://img.shields.io/pypi/pyversions/django-super-deduper.svg\n :target: https://pypi.python.org/pypi/django-super-deduper\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mighty-justice/django-super-deduper", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-super-deduper", "package_url": "https://pypi.org/project/django-super-deduper/", "platform": "", "project_url": "https://pypi.org/project/django-super-deduper/", "project_urls": { "Homepage": "https://github.com/mighty-justice/django-super-deduper" }, "release_url": "https://pypi.org/project/django-super-deduper/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "Utilities for deduping Django model instances", "version": "0.1.2" }, "last_serial": 5263879, "releases": { "0.0.5": [ { "comment_text": "", "digests": { "md5": "407b69400a12aec4f36ae832a4027dc9", "sha256": "324ab4658faaef3d8adca0f00f951a3da062505970415d6148c53cb9981cb548" }, "downloads": -1, "filename": "django-super-deduper-0.0.5.tar.gz", "has_sig": false, "md5_digest": "407b69400a12aec4f36ae832a4027dc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3344, "upload_time": "2017-10-02T15:50:38", "url": "https://files.pythonhosted.org/packages/12/43/40835a8aec0d627f8dc9094a0e7b328f3edb950388aa5f4940b4f70b57e9/django-super-deduper-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "61ffa8996fc45a6dfa075c4b1490b9ab", "sha256": "c90c9db28bf13b2c1ff59ff376634bc037cb858c2c5e278474a97200a5d34d47" }, "downloads": -1, "filename": "django-super-deduper-0.0.6.tar.gz", "has_sig": false, "md5_digest": "61ffa8996fc45a6dfa075c4b1490b9ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3477, "upload_time": "2018-07-02T23:28:31", "url": "https://files.pythonhosted.org/packages/ee/a5/956a5763aaf8c97ebe249b3d3fc0fd9c33f827ea033608e73d143dab2fdf/django-super-deduper-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "4f0abb99d66405c67c2c942ebaad38a0", "sha256": "ac8608ef0e61a3ea8ad29611ad28adc5c8ae8579e225c7d78ca6b47cffd07f4c" }, "downloads": -1, "filename": "django-super-deduper-0.0.7.tar.gz", "has_sig": false, "md5_digest": "4f0abb99d66405c67c2c942ebaad38a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3709, "upload_time": "2018-07-02T23:31:29", "url": "https://files.pythonhosted.org/packages/ce/fa/e035ae09cc26fdfdf4e298fb48049110412ac4175fc69e5ea78059b5b9a5/django-super-deduper-0.0.7.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "970f324b8c6905d2b3111d1b69f715fb", "sha256": "82760060cb87f7038dd501497eba512535804962d09007836b5ac05ab924b811" }, "downloads": -1, "filename": "django-super-deduper-0.1.0.tar.gz", "has_sig": false, "md5_digest": "970f324b8c6905d2b3111d1b69f715fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8973, "upload_time": "2019-01-31T20:37:00", "url": "https://files.pythonhosted.org/packages/14/7d/edb2e68397a515a77fb9b5e46d3852158e07ae0def3e474d9718688689f0/django-super-deduper-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9a8a43203843518e9096d66ca16594b4", "sha256": "5bac14d512f9930b62de97c61621541a7c07cdd52d8ccbfed88c7cd5358ae53a" }, "downloads": -1, "filename": "django-super-deduper-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9a8a43203843518e9096d66ca16594b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8348, "upload_time": "2019-04-23T17:56:32", "url": "https://files.pythonhosted.org/packages/de/36/39b3a794b8c749a7d7e724e487874d6b6023ecfc91d9a1bcc607e24c0dd3/django-super-deduper-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ee9f98e697c62a39f5ca1e7103ec4f2a", "sha256": "8402b755b09aa613a7ded2112a912431c1fc8731a2f3a99f11b1e63b9b5f60e3" }, "downloads": -1, "filename": "django-super-deduper-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ee9f98e697c62a39f5ca1e7103ec4f2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8614, "upload_time": "2019-05-13T19:05:34", "url": "https://files.pythonhosted.org/packages/10/9f/489eb374645732bbe1f98942ec928b774fde57c180439fc883cf1fce0dd2/django-super-deduper-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ee9f98e697c62a39f5ca1e7103ec4f2a", "sha256": "8402b755b09aa613a7ded2112a912431c1fc8731a2f3a99f11b1e63b9b5f60e3" }, "downloads": -1, "filename": "django-super-deduper-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ee9f98e697c62a39f5ca1e7103ec4f2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8614, "upload_time": "2019-05-13T19:05:34", "url": "https://files.pythonhosted.org/packages/10/9f/489eb374645732bbe1f98942ec928b774fde57c180439fc883cf1fce0dd2/django-super-deduper-0.1.2.tar.gz" } ] }