{ "info": { "author": "Joachim Jablon", "author_email": "joachim.jablon@people-doc.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "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.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "=============================\nDjango Readonly Field\n=============================\n\n.. image:: https://badge.fury.io/py/django-readonly-field.png\n :target: https://pypi.org/pypi/django-readonly-field\n\n.. image:: https://travis-ci.org/peopledoc/django-readonly-field.png?branch=master\n :target: https://travis-ci.org/peopledoc/django-readonly-field\n\n.. image:: https://img.shields.io/codecov/c/github/peopledoc/django-readonly-field/master.svg\n :target: https://codecov.io/github/peopledoc/django-readonly-field?branch=master\n\nMake Django model fields readonly. In other words, make it so that Django will\nread from your fields in your database, but never try to write them. It can be\nuseful if your fields are populated by triggers or something.\n\nRequirements\n------------\n\n+ **Postgresql only**\n+ Django, obviously. v1.11+ (until proven otherwise)\n+ Running under Python 2.7 or 3.5+\n\nDocumentation\n-------------\n\nThe full documentation is at https://django-readonly-field.readthedocs.org.\n\nQuickstart\n----------\n\nInstall Django Readonly Field::\n\n pip install django-readonly-field\n\nIn your ``settings.py`` :\n\n.. code-block:: python\n\n INSTALLED_APPS = [\n # ...\n \"django_readonly_field\",\n ]\n\nIn the model where you want some fields to be read-only:\n\n.. code-block:: python\n\n class Spaceship(models.Model):\n name = models.CharField(max_length=100)\n color = models.CharField(max_length=16)\n\n class ReadonlyMeta:\n readonly = [\"color\"]\n\nThat's it. Now, Django won't try to write the ``color`` field on the database.\n\n\nWarning\n-------\n\nDjango won't try to write those fields. Consequence is that your Database\n**must** be ok with Django not writing those fields. They should either\nbe nullable or have a database default or be filled by a trigger, otherwise\nyou will get an ``IntegrityError``.\n\nDon't forget that Django model field defaults won't become database defaults.\nYou might have to write an SQL migration for this.\n\n\nRunning Tests\n--------------\n\nYou will need an usable Postgresql database in ordre to test the project.\n\n::\n\n source /bin/activate\n export DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME\n (myenv) $ pip install -r requirements_test.txt\n\nRun tests for a specific version\n\n::\n\n (myenv) $ python runtests.py\n\n\nRun tests for all versions (if tox is installed globally, you don't need a\nvirtual environment)\n\n::\n\n $ tox\n\nUsing the project\n-----------------\n\nMany operations are documented in the Makefile. For more information, use:\n\n::\n\n $ make help\n\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-------\n\n1.0.5 (2019-04-23)\n++++++++++++++++++\n\n- Run tests for Django 2.2 and Python 3.5, 3.6 and 3.7\n\n1.0.4 (2018-12-17)\n++++++++++++++++++\n\n- Drop support of Python 3.4\n- Confirm support of Python 3.7\n- Drop support of Django 1.8\n- Drop support of Django 1.9\n- Drop support of Django 1.10\n- Confirm support of Django 2.0\n- Confirm support of Django 2.1\n\n\n1.0.3 (2018-04-26)\n++++++++++++++++++\n\n- Python 3.6 support\n- Multiple databases support\n- Github organization changed to \"peopledoc\"\n\n\n1.0.2 (2017-09-22)\n++++++++++++++++++\n\n* Added tests for Django 1.11\n\n1.0.1 (2016-10-19)\n++++++++++++++++++\n\n* Added support for Python 3.4 and current Django stable\n* Fix a thread bug that would make the package usable only for test and not for real :/\n\n1.0.0 (2016-09-15)\n++++++++++++++++++\n\n* First stable version\n\n0.2.0 (2016-09-14)\n++++++++++++++++++\n\n* Rationalized the writing of readonly (vs read-only)\n* Defined default app config\n\n0.1.1 (2016-09-13)\n++++++++++++++++++\n\n* CI improvements\n* Code linting\n\n\n0.1.0 (2016-09-02)\n++++++++++++++++++\n\n* First release on PyPI.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/peopledoc/django-readonly-field", "keywords": "django-readonly-field", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-readonly-field", "package_url": "https://pypi.org/project/django-readonly-field/", "platform": "", "project_url": "https://pypi.org/project/django-readonly-field/", "project_urls": { "Homepage": "https://github.com/peopledoc/django-readonly-field" }, "release_url": "https://pypi.org/project/django-readonly-field/1.0.5/", "requires_dist": [ "Django (>=1.11)" ], "requires_python": "", "summary": "Make Django model fields readonly", "version": "1.0.5" }, "last_serial": 5176271, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1a2548d67c61e4c92edc4223810075ed", "sha256": "85362e1f3ea7715dbea226572f3f0337f6f22c08dc6f55f0a052823ebdcb9344" }, "downloads": -1, "filename": "django_readonly_field-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1a2548d67c61e4c92edc4223810075ed", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6033, "upload_time": "2016-09-05T05:57:01", "url": "https://files.pythonhosted.org/packages/2b/37/33c6762f16a963ababb438400284d7861f9baf8098b2f5e5ddf4655ab092/django_readonly_field-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efdc168175305b1b96adcd81fbcbb751", "sha256": "d6619bb1110bd605a676ded46e90dca1366f20696cc5141f45f9793a07db037d" }, "downloads": -1, "filename": "django-readonly-field-0.1.0.tar.gz", "has_sig": false, "md5_digest": "efdc168175305b1b96adcd81fbcbb751", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6087, "upload_time": "2016-09-05T05:56:51", "url": "https://files.pythonhosted.org/packages/65/78/a578c06676ae9c95cd2ec7c48edbf5da92584c605e4164560c55af1c31b3/django-readonly-field-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "cdcc99d5fcdfa76c8a6c2c4caf331989", "sha256": "d09e2f09dab2fec63bc4bd859ffb2f12dad9539e4b0e9d5abcd0213a27a78420" }, "downloads": -1, "filename": "django_readonly_field-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cdcc99d5fcdfa76c8a6c2c4caf331989", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6172, "upload_time": "2016-09-13T13:14:06", "url": "https://files.pythonhosted.org/packages/81/db/d9c5c24a2d79ce434ce3c83e663c0979df31a198af9256a768296c5cbfa4/django_readonly_field-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d0ff7b9dc7463910c64812df54d2cb1", "sha256": "f2d2f9d609127417e0dfbb35ca9daddd6ceb2b285b2065468c78568e5e9f457a" }, "downloads": -1, "filename": "django-readonly-field-0.1.1.tar.gz", "has_sig": false, "md5_digest": "2d0ff7b9dc7463910c64812df54d2cb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6199, "upload_time": "2016-09-13T13:13:54", "url": "https://files.pythonhosted.org/packages/fe/da/d9dff7df22123c5305f7690825b92ee5589838488e4ea0371c0b1891655d/django-readonly-field-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "50d1a880bb29296552215a7cb6582673", "sha256": "cb40311002bfdaac196f0f8ecc1445ddd1b347c375006c89811c573fc876b3c0" }, "downloads": -1, "filename": "django_readonly_field-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "50d1a880bb29296552215a7cb6582673", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6505, "upload_time": "2016-09-14T14:31:03", "url": "https://files.pythonhosted.org/packages/9b/b8/a4ee5cd3fbc0d4e9b58cb17600461f378732a711a40ea1a18eea2d9447d1/django_readonly_field-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73fdccb04111d4d69c7e7ea346de38a8", "sha256": "d51e7aa8aa9de3c183c5d02e84d328532b7593a8c33635eae24308870af62599" }, "downloads": -1, "filename": "django-readonly-field-0.2.0.tar.gz", "has_sig": false, "md5_digest": "73fdccb04111d4d69c7e7ea346de38a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6559, "upload_time": "2016-09-14T14:30:49", "url": "https://files.pythonhosted.org/packages/e6/11/ebfa70b21fe1112ac86a1e5a47d4ea797ee0515e3955c3642c1d29288b9e/django-readonly-field-0.2.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "4501124ec043d2b0fa752cfb8fb58c83", "sha256": "58f748ff43096207eca592c20c645e561f79e67b8ef88f1452e1a18100ea4c82" }, "downloads": -1, "filename": "django_readonly_field-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4501124ec043d2b0fa752cfb8fb58c83", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6518, "upload_time": "2016-09-15T13:09:25", "url": "https://files.pythonhosted.org/packages/dc/42/c70a06bcd783a3265fa17b867a8e02535181c7d906fa2b44b38df04b89cd/django_readonly_field-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99102ac07a339a31a548b26bc9929805", "sha256": "fdbce2ab6e3789cd544d9506eaa92cbb27f943118e1f2ea0c96659ad60c4c653" }, "downloads": -1, "filename": "django-readonly-field-1.0.0.tar.gz", "has_sig": false, "md5_digest": "99102ac07a339a31a548b26bc9929805", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6555, "upload_time": "2016-09-15T13:09:13", "url": "https://files.pythonhosted.org/packages/f7/d1/ae75d6cb86596e07a2bb63f7b9bc1319346ecfc8edde1bfce68aad075cbe/django-readonly-field-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b8eb576ed97376e13d32b32418896efa", "sha256": "c20b707a492a928b812902c6ddca9cde8a7be424b083c659eac41853c5ce3534" }, "downloads": -1, "filename": "django_readonly_field-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b8eb576ed97376e13d32b32418896efa", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7020, "upload_time": "2016-10-19T19:56:41", "url": "https://files.pythonhosted.org/packages/16/98/d2fcb761d07c25fd28203c8ab1cf3afce0e61913e3d3440fb09ace5960d2/django_readonly_field-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae81f6f89b6abd0d4014d0e27fd82a4c", "sha256": "b610cbd9a09bcfa7d9941da96ec03f6708aed61c33a8bdaf542a9ad9be56432e" }, "downloads": -1, "filename": "django-readonly-field-1.0.1.tar.gz", "has_sig": false, "md5_digest": "ae81f6f89b6abd0d4014d0e27fd82a4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6890, "upload_time": "2016-10-19T19:56:33", "url": "https://files.pythonhosted.org/packages/3d/ac/7a3a3fc8c1a188c6851875d843606e34f15890fa6fbf1c7d0e1987455cee/django-readonly-field-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "79a20057c8bd4dfd28a6b10c1a70fd69", "sha256": "5a3d9d76d94d4f1075e986fa000ba49f224e20a882c6f4466e9082588542ff1e" }, "downloads": -1, "filename": "django_readonly_field-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "79a20057c8bd4dfd28a6b10c1a70fd69", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 7121, "upload_time": "2017-09-22T07:56:44", "url": "https://files.pythonhosted.org/packages/ca/c7/dd7085c595a796f7cc59b4beb172dc9b9dbe768eb9e0b2d8892606ed4b27/django_readonly_field-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fe9aa8b23aa5faf86d173517ef9f79c", "sha256": "624607a13a0658d2deafa0112074e8a7db23008307ed7d4fa895bb664f88ae20" }, "downloads": -1, "filename": "django-readonly-field-1.0.2.tar.gz", "has_sig": false, "md5_digest": "8fe9aa8b23aa5faf86d173517ef9f79c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6897, "upload_time": "2017-09-22T07:56:43", "url": "https://files.pythonhosted.org/packages/46/c1/308511cbd2e408db93d1db6b4066867fe11762ba8b0db66ace1e685f6c23/django-readonly-field-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "799befe467292908d8f6f07a6994b344", "sha256": "568806a123f966257987f1c17037288c3e8eb648f293cef306a49235822aa2a9" }, "downloads": -1, "filename": "django_readonly_field-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "799befe467292908d8f6f07a6994b344", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 7223, "upload_time": "2018-04-26T15:13:22", "url": "https://files.pythonhosted.org/packages/bf/23/902e59bfc5552d8151eb739ed4fafbdba61bb7f7436750a35d675c797695/django_readonly_field-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bf065d360287c7b7d7279545a269b3b", "sha256": "f2afc8e02996aa9e169846bb79fa07df833d5fc2c63149bf29e531bef905fe10" }, "downloads": -1, "filename": "django-readonly-field-1.0.3.tar.gz", "has_sig": false, "md5_digest": "5bf065d360287c7b7d7279545a269b3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6974, "upload_time": "2018-04-26T15:13:21", "url": "https://files.pythonhosted.org/packages/67/e7/c1e3953f6963280357e68af202a8b8f498462372704daa306feb6ab65efe/django-readonly-field-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "3af5c38db866dcc5228a33a364401ba7", "sha256": "9ee3bacb7305cc815c966c754b004e4dbb54fc38f26c917e0189f20cb26a2398" }, "downloads": -1, "filename": "django_readonly_field-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3af5c38db866dcc5228a33a364401ba7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7357, "upload_time": "2018-12-17T14:25:20", "url": "https://files.pythonhosted.org/packages/83/6a/be56daa7913b554ade271e5e7c77d9490bb8685d382926471a6c1f83f9b8/django_readonly_field-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4dc0aca57b4657fb9390070c5e45a2ab", "sha256": "d89ea65ab581f53d3b70c2f6425ade064f27934a68a1128cec5c2ce7afd9210b" }, "downloads": -1, "filename": "django-readonly-field-1.0.4.tar.gz", "has_sig": false, "md5_digest": "4dc0aca57b4657fb9390070c5e45a2ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7054, "upload_time": "2018-12-17T14:25:22", "url": "https://files.pythonhosted.org/packages/6b/72/da9805c7af7c4fe139f6f5961cccb7518bbfed500c67ec4bef293116c508/django-readonly-field-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "64590f36040aeaac95975c94478eed29", "sha256": "d8b7eb152a01c37ec0515b0f1de5657ce9cce733045a74fd661ca55528126e38" }, "downloads": -1, "filename": "django_readonly_field-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64590f36040aeaac95975c94478eed29", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6026, "upload_time": "2019-04-23T09:19:39", "url": "https://files.pythonhosted.org/packages/fe/b1/0a18c9545dc0d9538d27e08e70e02df2f77d37afd8536d6dde71b9c90e88/django_readonly_field-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "787dee8b08dee22a8cccbe9a6e8f375e", "sha256": "eeaca19a20abc48c0a3b323b9f909b9cc6b9bf803ef3a2b4f382c302400c840d" }, "downloads": -1, "filename": "django-readonly-field-1.0.5.tar.gz", "has_sig": false, "md5_digest": "787dee8b08dee22a8cccbe9a6e8f375e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7072, "upload_time": "2019-04-23T09:19:41", "url": "https://files.pythonhosted.org/packages/28/29/ccc82beb29e3fd911232cba0aab520f6a5b71b3f92fb6ca4ee0e0a8f273b/django-readonly-field-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "64590f36040aeaac95975c94478eed29", "sha256": "d8b7eb152a01c37ec0515b0f1de5657ce9cce733045a74fd661ca55528126e38" }, "downloads": -1, "filename": "django_readonly_field-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64590f36040aeaac95975c94478eed29", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6026, "upload_time": "2019-04-23T09:19:39", "url": "https://files.pythonhosted.org/packages/fe/b1/0a18c9545dc0d9538d27e08e70e02df2f77d37afd8536d6dde71b9c90e88/django_readonly_field-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "787dee8b08dee22a8cccbe9a6e8f375e", "sha256": "eeaca19a20abc48c0a3b323b9f909b9cc6b9bf803ef3a2b4f382c302400c840d" }, "downloads": -1, "filename": "django-readonly-field-1.0.5.tar.gz", "has_sig": false, "md5_digest": "787dee8b08dee22a8cccbe9a6e8f375e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7072, "upload_time": "2019-04-23T09:19:41", "url": "https://files.pythonhosted.org/packages/28/29/ccc82beb29e3fd911232cba0aab520f6a5b71b3f92fb6ca4ee0e0a8f273b/django-readonly-field-1.0.5.tar.gz" } ] }