{ "info": { "author": "Florent Messa", "author_email": "florent.messa@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Topic :: Utilities" ], "description": "django-metadata\n===============\n\nAttach metadata to any Django models using redis.\n\n.. image:: https://secure.travis-ci.org/thoas/django-metadata.png?branch=master\n :alt: Build Status\n :target: http://travis-ci.org/thoas/django-metadata\n\nInstallation\n------------\n\nEither check out the package from GitHub_ or it pull from a release via PyPI::\n\n pip install django-metadata\n\nUsage\n-----\n\nWith ``django-metadata`` you can attach metadata to any Django models, you will\nbe able to link keys and theirs values to any instances.\n\nCurrently only Redis_ is supported with only redis-py_ as backend.\n\nLet's say you have this model:\n\n.. code-block:: python\n\n # models.py\n\n from django.db import models\n\n class User(models.Model):\n username = models.CharField(max_length=150)\n\nNow you have to attach the ``MetadataMixin`` to your model:\n\n.. code-block:: python\n\n # models.py\n\n from django.db import models\n\n from metadata.mixins import MetadataMixin\n\n class User(MetadataMixin, models.Model):\n username = models.CharField(max_length=150)\n\n\nYou can customize the way ``django-metadata`` is storing your values by providing\na ``metadata_key`` property to your model:\n\n.. code-block:: python\n\n # models.py\n\n from django.db import models\n\n from metadata.mixins import MetadataMixin\n\n class User(MetadataMixin, models.Model):\n username = models.CharField(max_length=150)\n\n def metadata_key(self):\n return 'metadata:utilisateur:%d' % self.pk\n\n\nBy default, the schema will be ``metadata:%(lowerclassname)s:%(primary_key)s``.\n\nNow we have connected our model to the mixin we can play with the API.\n\nThe API of ``MetadataContainer`` follows the same principes as ``dict``.\n\nAdding keys\n...........\n\n.. code-block:: python\n\n >>> from myapp.models import User\n >>> user = User.objects.create(username='thoas')\n >>> user.metadata['mail_signup_sent'] = 1\n >>> user = User.objects.get(username='thoas')\n >>> user.metadata['mail_signup_sent']\n 1\n >>> user.metadata = {'mail_signup_sent': 0}\n >>> user.metadata['mail_signup_sent']\n 0\n\n\nRemoving keys\n.............\n\nYou can either removing a key by setting its value to ``None`` or use the ``del``\noperator.\n\n.. code-block:: python\n\n >>> del user.metadata['key']\n >>> user.metadata['key']\n Traceback (most recent call last):\n ...\n KeyError: 'key'\n >>> user.metadata.get('key', None)\n None\n >>> user.metadata['foo'] = 'bar'\n >>> user.metadata['foo'] = None\n >>> user.metadata['foo']\n Traceback (most recent call last):\n ...\n KeyError: 'foo'\n >>> user.metadata.get('foo', None)\n None\n >>> user.metadata['key'] = 'value'\n >>> user.metadata['foo'] = 'bar'\n >>> user.metadata = {'foo': None}\n >>> user.metadata['foo']\n Traceback (most recent call last):\n ...\n KeyError: 'foo'\n >>> user.metadata['key']\n value\n\nIterating keys\n..............\n\n.. code-block:: python\n\n >>> 'value' in user.metadata\n True\n >>> user.metadata.values()\n ['value']\n >>> user.metadata.keys()\n ['key']\n >>> user.metadata.items()\n [('key', 'value')]\n\nIncrementing keys\n.................\n\nAs we are using Redis as storing engine you can use some of its nice features:\n\n.. code-block:: python\n\n >>> user.metadata.incr('counter')\n >>> user.metadata['counter']\n 1\n >>> user.metadata.incr('counter', 2)\n >>> user.metadata['counter']\n 3\n\nInspiration\n-----------\n\n``django-metadata`` comes from an original idea of twidi_.\n\n.. _GitHub: https://github.com/thoas/django-metadata\n.. _redis-py: https://github.com/andymccurdy/redis-py\n.. _Redis: http://redis.io/\n.. _twidi: https://github.com/twidi", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/thoas/django-metadata", "keywords": "django,libraries,settings,redis,metadata", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-metadata", "package_url": "https://pypi.org/project/django-metadata/", "platform": "any", "project_url": "https://pypi.org/project/django-metadata/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/thoas/django-metadata" }, "release_url": "https://pypi.org/project/django-metadata/0.2.0/", "requires_dist": null, "requires_python": null, "summary": "Attach metadata to any Django models using redis", "version": "0.2.0" }, "last_serial": 5444591, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "6282e6539f97f5ad0d597ba6074899bb", "sha256": "f42922e77adb8ccfa00820a278fdc07134b01ebbfd1c83aed00f4254006a3e84" }, "downloads": -1, "filename": "django-metadata-0.1.0.tar.gz", "has_sig": true, "md5_digest": "6282e6539f97f5ad0d597ba6074899bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6092, "upload_time": "2014-10-01T14:50:30", "url": "https://files.pythonhosted.org/packages/14/db/e5d54f335619e8c2f984a1fe241e3bebc22319f30153d88cb7e0635445c7/django-metadata-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c8440c16bcad51b2eb2e8ded7d7d767e", "sha256": "e95ee6ae448611ef5898972197fb439c80a505230757f74d664f5d48154c14a7" }, "downloads": -1, "filename": "django-metadata-0.1.1.tar.gz", "has_sig": true, "md5_digest": "c8440c16bcad51b2eb2e8ded7d7d767e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6194, "upload_time": "2015-03-18T14:44:42", "url": "https://files.pythonhosted.org/packages/45/ba/688cc1060de56c09d24a1f58255a7087990db55eca9bb321c9cc9496eb07/django-metadata-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "187992c9db526617c54cdbf0356ee40d", "sha256": "7a110cbfd769d4bc8de8587f279630d5d8d0c1e65c1379ae0b2933762bf8f2fe" }, "downloads": -1, "filename": "django-metadata-0.1.2.tar.gz", "has_sig": true, "md5_digest": "187992c9db526617c54cdbf0356ee40d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6287, "upload_time": "2015-04-02T11:55:55", "url": "https://files.pythonhosted.org/packages/6a/33/302cca978493fc813a06b2aaea35e8be6ee768991167db797eeb4270034b/django-metadata-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "ac2c92ea16e6666329ad3b468fd6bdf3", "sha256": "934bf3324ac2d93f318a4c8c4c4dffc86e9b6cd5099f5e783c361aaacb47aad4" }, "downloads": -1, "filename": "django-metadata-0.1.3.tar.gz", "has_sig": true, "md5_digest": "ac2c92ea16e6666329ad3b468fd6bdf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6071, "upload_time": "2015-12-21T15:06:30", "url": "https://files.pythonhosted.org/packages/f5/9f/3fcccd46eda239ff5a7bc92897aa49d6d126cb441a240edf9630fe3c99af/django-metadata-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "62e26f800c116a305e899e321c82b164", "sha256": "23f0653c74b3c6098e088febd13326bc66bf3a47f17b26dff2cd4463c5f94525" }, "downloads": -1, "filename": "django-metadata-0.1.4.tar.gz", "has_sig": true, "md5_digest": "62e26f800c116a305e899e321c82b164", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6240, "upload_time": "2016-03-30T15:35:28", "url": "https://files.pythonhosted.org/packages/d2/af/0dadf341c1c18b73a8a9d0a84df10d75b12bf0711bc58a9cdd7fc303f904/django-metadata-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "007d0632d19bac25f075010807643b2f", "sha256": "7814011ef8e6201553fc9ba37e31b9cdd5fbe5de6520afc0948ab1bd10ec0e1e" }, "downloads": -1, "filename": "django-metadata-0.1.5.tar.gz", "has_sig": true, "md5_digest": "007d0632d19bac25f075010807643b2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7672, "upload_time": "2016-03-31T08:19:25", "url": "https://files.pythonhosted.org/packages/49/ae/451f52011b8f38ab92ad2c6a2d8c4b82f215d5b7681d57ce26b4df53de9a/django-metadata-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "95f3558633f338d6d2c2cf969cd4236c", "sha256": "b6a886a6bf6af623c39aa97e80c28dd5aa0d73f7cd08bfb301a684e1cc100695" }, "downloads": -1, "filename": "django-metadata-0.2.0.tar.gz", "has_sig": true, "md5_digest": "95f3558633f338d6d2c2cf969cd4236c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7678, "upload_time": "2016-10-10T21:35:18", "url": "https://files.pythonhosted.org/packages/26/22/33d415beb1dea307aadb6f91fd0f175db5e118f98ed1acfce01b8d846b1d/django-metadata-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "95f3558633f338d6d2c2cf969cd4236c", "sha256": "b6a886a6bf6af623c39aa97e80c28dd5aa0d73f7cd08bfb301a684e1cc100695" }, "downloads": -1, "filename": "django-metadata-0.2.0.tar.gz", "has_sig": true, "md5_digest": "95f3558633f338d6d2c2cf969cd4236c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7678, "upload_time": "2016-10-10T21:35:18", "url": "https://files.pythonhosted.org/packages/26/22/33d415beb1dea307aadb6f91fd0f175db5e118f98ed1acfce01b8d846b1d/django-metadata-0.2.0.tar.gz" } ] }