{ "info": { "author": "Stephen Goodman", "author_email": "stephen.goodman@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "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 :: 3.5" ], "description": "=============================\nbitfield_manager\n=============================\n\n.. image:: https://badge.fury.io/py/django-bitfield-manager.svg\n :target: https://badge.fury.io/py/django-bitfield-manager\n\n.. image:: https://travis-ci.org/goodmase/django-bitfield-manager.svg?branch=master\n :target: https://travis-ci.org/goodmase/django-bitfield-manager\n\n.. image:: https://codecov.io/gh/goodmase/django-bitfield-manager/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/goodmase/django-bitfield-manager\n\n.. image:: https://readthedocs.org/projects/django-bitfield-manager/badge/?version=latest\n :target: http://django-bitfield-manager.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nAutomatic bitfield management for Django Models.\n\n\nQuickstart\n----------\n\nInstall bitfield_manager::\n\n pip install django-bitfield-manager\n\nAdd it to your `INSTALLED_APPS`:\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n 'bitfield_manager',\n ...\n )\n\n\nUsage\n--------\nFirst you'll need a parent model with a status field\n\n.. code-block:: python\n\n from django.db import models\n from bitfield_manager.models import ParentBitfieldModel, ChildBitfieldModelMixin\n\n\n class ParentExample(ParentBitfieldModel):\n status = models.BigIntegerField()\n\n def __str__(self): # __unicode__ on Python 2\n return \"status: %i\" % self.status\n\nThen for all models you want django-bitfield-manager to manage add the BitfieldMeta with a list of parent models.\nThe list of parent models takes in a tuple. The first field is the source that will be modified. The\nsource should be a BigIntegerField or BitField (if using django-bitfield). The 2nd field\nis the bitflag to use (i.e. 0 will be 1 << 0, 1 will be 1 << 1, etc.)\n\n.. code-block:: python\n\n class ChildExample1(ChildBitfieldModelMixin, models.Model):\n parent = models.ForeignKey('ParentExample', null=True)\n\n class BitfieldMeta:\n parent_models = [('parent', 'status', 0)]\n\n class ChildExample2(ChildBitfieldModelMixin, models.Model):\n parent = models.ForeignKey('ParentExample', null=True)\n\n class BitfieldMeta:\n parent_models = [('parent.status', 1)]\n\nNow when creating/deleting child models the parent status should update\n\n.. code-block:: python\n\n # create the model\n p = ParentExample.objects.create(status=0)\n p2 = ParentExample.objects.create(status=0)\n # add a child p.status is now 1\n c1 = ChildExample1.objects.create(parent=p)\n\n # add the other child. p.status is now 3\n c2 = ChildExample2.objects.create(parent=p)\n\n # deleting a child will refresh the status. p.status is now 2\n c1.delete()\n\n # updates or mass deletes will require manual refresh\n # p.status will be 2 and p2.status will be 0\n ChildExample2.objects.filter(parent=p).update(parent=p2)\n\n # trigger a manual refresh. p.status is now correct with a status of 0\n p.force_status_refresh()\n\n # if you know the related models modified you can specify them\n # p2.status is now 2\n p2.force_status_refresh(related_models=[ChildExample2])\n\n # force status refresh will work with models multiple levels deep. Specify the search_depth to search\n # more than 1 level deep\n p2.force_status_refresh(search_depth=2)\n\n\n\nFeatures\n--------\n\n* Allows for automatic bitfield management for Django Models.\n* Will update the status when models are added or deleted\n* Supports multi-level relationships (use dot syntax)\n* Supports django-bitfield\n\nRunning Tests\n-------------\n\nDoes the code actually work?\n\n::\n\n source /bin/activate\n (myenv) $ pip install tox\n (myenv) $ tox\n\nCredits\n-------\n\nTools used in rendering this package:\n\n* Cookiecutter_\n* `cookiecutter-djangopackage`_\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage\n\n\n\n\nHistory\n-------\n0.3.0 (2017-01-31)\n++++++++++++++++++\n* Added example\n* Changed the parent_models models tuple from ('parent', 'child', 0) to ('parent.child', 0)\n* additional unit tests\n* bug fixes\n\n0.2.0 (2017-01-27)\n++++++++++++++++++\n\n* Added django-bitfield support\n* No longer uses signals\n* Added mixin for child models (ChildBitfieldModelMixin)\n* Added support for one-to-one and limited support for m2m fields\n* Added support for models multiple levels deep (using dot syntax)\n\n\n0.1.0 (2017-01-18)\n++++++++++++++++++\n\n* First release on PyPI.", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/goodmase/django-bitfield-manager", "keywords": "django-bitfield-manager", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "django-bitfield-manager", "package_url": "https://pypi.org/project/django-bitfield-manager/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-bitfield-manager/", "project_urls": { "Homepage": "https://github.com/goodmase/django-bitfield-manager" }, "release_url": "https://pypi.org/project/django-bitfield-manager/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "Automatically manage bitfields in django models", "version": "0.3.1" }, "last_serial": 2610240, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "b2a54eed9e1181e8d0916edfa856bf18", "sha256": "ba535f4d077fc5fdc7ada3009ba1b4b008c51a5d560405eded9d4c67cf2f3c3a" }, "downloads": -1, "filename": "django-bitfield-manager-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b2a54eed9e1181e8d0916edfa856bf18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6327, "upload_time": "2017-01-31T21:31:26", "url": "https://files.pythonhosted.org/packages/75/61/6b279ee302cbfa73d603bc580367c408a21d822a3d4d38abbcd555600a70/django-bitfield-manager-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "4539d147b3f8932bf0f19f39bb7e033f", "sha256": "39b192312193023f7d44a38fd1dc40bce732892192af4a4986f1113490241615" }, "downloads": -1, "filename": "django-bitfield-manager-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4539d147b3f8932bf0f19f39bb7e033f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7833, "upload_time": "2017-01-31T21:31:12", "url": "https://files.pythonhosted.org/packages/88/6d/78f7ced4f7456491e225a0593bdb3ea91db6fec987c6efc29c4da7bc439e/django-bitfield-manager-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "fb353b6b52e93ddc1f365daa1664fd55", "sha256": "a52ec01fa25d5a269c12d5fbd9507fbd310c4ed5397559c5d516704545826234" }, "downloads": -1, "filename": "django-bitfield-manager-0.3.0.tar.gz", "has_sig": false, "md5_digest": "fb353b6b52e93ddc1f365daa1664fd55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7636, "upload_time": "2017-01-31T21:30:49", "url": "https://files.pythonhosted.org/packages/67/b8/1e72e81289aeba38bcb9ec8b37f121bee5324dcdca9bc943c08df5a00bfb/django-bitfield-manager-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "4612bd8bd116b12e498f6745f9ad80a7", "sha256": "95c43cd0a1734d4314ce0eaedf0a65622cf2d0e637293b34cc9bab32fcc6abe4" }, "downloads": -1, "filename": "django-bitfield-manager-0.3.1.tar.gz", "has_sig": false, "md5_digest": "4612bd8bd116b12e498f6745f9ad80a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7637, "upload_time": "2017-01-31T21:26:51", "url": "https://files.pythonhosted.org/packages/bd/a2/031cce9b682cf38f2e92d805a54bd24ad6c2660906f1da2f1941dcc7cd55/django-bitfield-manager-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4612bd8bd116b12e498f6745f9ad80a7", "sha256": "95c43cd0a1734d4314ce0eaedf0a65622cf2d0e637293b34cc9bab32fcc6abe4" }, "downloads": -1, "filename": "django-bitfield-manager-0.3.1.tar.gz", "has_sig": false, "md5_digest": "4612bd8bd116b12e498f6745f9ad80a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7637, "upload_time": "2017-01-31T21:26:51", "url": "https://files.pythonhosted.org/packages/bd/a2/031cce9b682cf38f2e92d805a54bd24ad6c2660906f1da2f1941dcc7cd55/django-bitfield-manager-0.3.1.tar.gz" } ] }