{ "info": { "author": "podhmo", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: Implementation :: CPython" ], "description": "django-treeform\n========================================\n\n.. code:: python\n\n from django import forms\n from django_treeform import TreeForm, SequenceNode, Sequence\n\n class CharacteristicForm(TreeForm):\n id = forms.IntegerField()\n name = forms.CharField()\n rating = forms.CharField()\n\n class PersonForm(TreeForm):\n id = forms.IntegerField()\n name = forms.CharField()\n phone = forms.CharField()\n Charecteristics = SequenceNode(CharacteristicForm)\n\n params = [{\n \"id\": 1,\n \"name\": \"abc\",\n \"phone\": \"12345\",\n \"Charecteristics\": [\n {\n \"id\": 1,\n \"name\": \"Good Looking\",\n \"rating\": \"Average\",\n },\n {\n \"id\": 2,\n \"name\": \"Smart\",\n \"rating\": \"Excellent\",\n }\n ]\n },\n {\n \"id\": 2,\n \"name\": \"abc\",\n \"phone\": \"12345\",\n \"Charecteristics\": [\n {\n \"id\": 1,\n \"name\": \"Good Looking\",\n \"rating\": \"Average\",\n },\n {\n \"id\": 2,\n \"name\": \"Smart\",\n \"rating\": \"Excellent\",\n }\n ]\n }]\n form = Sequence(PersonForm)(params)\n print(form.is_valid()) # => True\n\nmore nested forms\n\n.. code:: python\n\n from django import forms\n from django_treeform import SequenceNode, TreeForm\n\n class ItemForm(forms.Form):\n name = forms.CharField()\n\n\n class NestedForm(TreeForm):\n class a(TreeForm):\n class b(TreeForm):\n class c(TreeForm):\n class d(TreeForm):\n class e(TreeForm):\n items = SequenceNode(ItemForm)\n\n params = {\n \"a\": {\"b\": {\"c\": {\"d\": {\"e\": {\"items\": [{\"name\": \"A\"}, {\"name\": \"B\"}]}}}}}\n }\n formlike = NestedForm(params)\n\n print(formlike.is_valid()) # => True\n expected = {'a': {'b': {'c': {'d': {'e': {'items': [{'name': 'A'}, {'name': 'B'}]}}}}}}\n assert formlike.cleaned_data == expected\n assert formlike.errors == {'a': {'b': {'c': {'d': {'e': {'items': [{}, {}]}}}}}}\n\ncustom validation\n\n.. code:: python\n\n class PointForm(forms.Form):\n x = forms.IntegerField()\n y = forms.IntegerField()\n\n\n class PointPairForm(TreeForm):\n left = Node(PointForm)\n right = Node(PointForm)\n\n def clean(self):\n if self.has_error():\n return\n if self.cleaned_data[\"left\"][\"x\"] < self.cleaned_data[\"right\"][\"x\"]:\n raise forms.ValidationError(\"oops\")\n\n params = {\"left\": {\"x\": 10, \"y\": 20}, \"right\": {\"x\": 20, \"y\": \"20\"}}\n formlike = PointPairForm(params)\n print(formlike.is_valid() # => False\n print(formlike.errors) # => {\"left\": {}, \"right\": {}, \"__all__\": [\"oops\"]}", "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/podhmo/djang-treeform", "keywords": "django form validation tree", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-treeform", "package_url": "https://pypi.org/project/django-treeform/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-treeform/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/podhmo/djang-treeform" }, "release_url": "https://pypi.org/project/django-treeform/0.1/", "requires_dist": null, "requires_python": null, "summary": "-", "version": "0.1" }, "last_serial": 1336288, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "43456bdcb885a5ec6bd2b34b9ec09774", "sha256": "eea1ad5bc5129058616a76912380862e6790bfd78e4c3ab497ca2da27000c7ea" }, "downloads": -1, "filename": "django-treeform-0.1.tar.gz", "has_sig": false, "md5_digest": "43456bdcb885a5ec6bd2b34b9ec09774", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4777, "upload_time": "2014-12-08T22:18:38", "url": "https://files.pythonhosted.org/packages/87/00/c9672e08ce65481de4903c20cdcd6f2d77a15b803e544f1a5077bbf4d261/django-treeform-0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "43456bdcb885a5ec6bd2b34b9ec09774", "sha256": "eea1ad5bc5129058616a76912380862e6790bfd78e4c3ab497ca2da27000c7ea" }, "downloads": -1, "filename": "django-treeform-0.1.tar.gz", "has_sig": false, "md5_digest": "43456bdcb885a5ec6bd2b34b9ec09774", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4777, "upload_time": "2014-12-08T22:18:38", "url": "https://files.pythonhosted.org/packages/87/00/c9672e08ce65481de4903c20cdcd6f2d77a15b803e544f1a5077bbf4d261/django-treeform-0.1.tar.gz" } ] }