{ "info": { "author": "kenny1992", "author_email": "apolevki09@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Capybara forms\nDynamic Django forms and filters using JSON schema.\n\nIf you have 2 models: Category and Entry.\nAnd some entry features depends on it's category.\nUsing this library, you will obtain easy-to-configure\nschema with form, filter and entry fields generators.\nAlso, it can work with model fields.\n\n# Quick start\n1. Define your models\n```python\nfrom django.db import models\nfrom capybara_forms.models import CapybaraFormsCategory, CapybaraFormsModel\n\n\nclass Category(CapybaraFormsCategory):\n title = models.CharField(max_length=100)\n\nclass Advert(CapybaraFormsModel(Category)):\n # Global model fields\n title = models.CharField(max_length=100)\n price = models.PositiveSmallIntegerField()\n # Rest fields will be stored in JSON 'data' field\n```\n\n2. Write schema for category 'Cats'\n```json\n[\n {\n \"name\": \"breed\",\n \"type\": \"string\",\n \"required\": true,\n \"display_name\": \"Breed\",\n \"placeholder\": \"Enter breed of your cat\"\n },\n {\n \"name\": \"year\",\n \"type\": \"number\",\n \"required\": true,\n \"max_value\": 2020,\n \"min_value\": 1980,\n \"placeholder\": \"Enter birth year of your cat\",\n \"display_name\": \"Birth year\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"number\",\n \"placeholder\": \"Enter the weight of your cat\",\n \"display_name\": \"Weight\"\n },\n {\n \"name\": \"height\",\n \"type\": \"number\",\n \"placeholder\": \"Height (only placeholder, without display name)\"\n },\n {\n \"type\": \"color\",\n \"display_name\": \"Cat's color\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\",\n \"placeholder\": \"Enter cat nickname\",\n \"display_name\": \"Name\"\n },\n {\n \"name\": \"vaccinated\",\n \"type\": \"checkbox\",\n \"display_name\": \"is vaccinated\"\n }\n]\n```\n\n3. Create form. It's a basic rendering object\n```python\nfrom django import forms\nfrom capybara_forms.forms import CapybaraFormsModelForm\nfrom .models import Advert\n\n\nclass AdvertForm(CapybaraFormsModelForm):\n # This fields from model will be rendered using form.render_form\n fields_in_model = ['title', 'price']\n\n # For custom placeholder\n title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Enter title'}))\n\n class Meta:\n model = Advert\n fields = ('title', 'price')\n```\n\n4. Use this form in your view\n```python\nfrom django.shortcuts import render, get_object_or_404, redirect\n\nfrom .models import Category\nfrom .forms import AdvertForm\n\n\ndef add(request, category_id):\n category = get_object_or_404(Category, pk=category_id)\n if request.method == 'POST':\n form = AdvertForm(category, request.POST.dict())\n if form.is_valid():\n form.save()\n return redirect('/{0}/'.format(category_id))\n else:\n form = AdvertForm(category)\n\n return render(request, 'add.html', {\n 'form': form,\n })\n```\n\n5. Render form in your template.\nNote, that library uses [parsley](http://parsleyjs.org/)\nfor validation. All dependencies listed below\n```html\n
\n {% csrf_token %}\n {{ form.render_form | safe }}\n\n \n
\n```\n\nResult form:
\n![Form image](images/form_image.png)\n\nResult filter, with similar schema, plus some in-form configuration:
\n![Filter image](images/filter_image.png)\n\n\n# Dependencies\n1. [Django](https://www.djangoproject.com/)\n2. [jQuery](https://jquery.com/) (version 3.3.1 included)\n3. [JSON editor](http://jsoneditoronline.org/) \n(version 5.9.6 included)\n4. [parsley](http://parsleyjs.org/) (version 2.8.1 included)\n\n# Documentation and full example\nSee [readthedocs](capybara-forms.readthedocs.io) for\nAPI, advanced usage cases, parameters definition\nand more information \n\nSee [example project](https://github.com/kenny1992/capybara_forms_example) \nfor all features, used in worked application\n\n\n# Slogan\n> _With goal to simplify, with love to capybaras_\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kenny1992/capybara_forms", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "capybara-forms", "package_url": "https://pypi.org/project/capybara-forms/", "platform": "", "project_url": "https://pypi.org/project/capybara-forms/", "project_urls": { "Homepage": "https://github.com/kenny1992/capybara_forms" }, "release_url": "https://pypi.org/project/capybara-forms/0.0.2/", "requires_dist": [ "Django" ], "requires_python": "", "summary": "Dynamic Django forms and filters using JSON schema", "version": "0.0.2" }, "last_serial": 4657191, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "d01adfcc9878eb918d16a1050bd1edfd", "sha256": "4f5610197811910c8647b46acd938ee3ceb54107fbb6a7bcf5cd2239aaedd470" }, "downloads": -1, "filename": "capybara_forms-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d01adfcc9878eb918d16a1050bd1edfd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 244282, "upload_time": "2019-01-03T17:43:54", "url": "https://files.pythonhosted.org/packages/3a/cd/5085f39867e944ed146aab179eb1c5dc867a718f1ac30fb1bbc8e75e3818/capybara_forms-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d94df38d7633e3911e1c61da61bddb8a", "sha256": "fbde67ae0ec667df3da5c61d48a8a5014584d49fa5ce2db0e0282071e495837e" }, "downloads": -1, "filename": "capybara_forms-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d94df38d7633e3911e1c61da61bddb8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 234442, "upload_time": "2019-01-03T17:43:57", "url": "https://files.pythonhosted.org/packages/73/05/aeb406575fdc31a7f1e4db504760c8d0e5d6b0aa080555e08dcc2658dee4/capybara_forms-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d01adfcc9878eb918d16a1050bd1edfd", "sha256": "4f5610197811910c8647b46acd938ee3ceb54107fbb6a7bcf5cd2239aaedd470" }, "downloads": -1, "filename": "capybara_forms-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d01adfcc9878eb918d16a1050bd1edfd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 244282, "upload_time": "2019-01-03T17:43:54", "url": "https://files.pythonhosted.org/packages/3a/cd/5085f39867e944ed146aab179eb1c5dc867a718f1ac30fb1bbc8e75e3818/capybara_forms-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d94df38d7633e3911e1c61da61bddb8a", "sha256": "fbde67ae0ec667df3da5c61d48a8a5014584d49fa5ce2db0e0282071e495837e" }, "downloads": -1, "filename": "capybara_forms-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d94df38d7633e3911e1c61da61bddb8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 234442, "upload_time": "2019-01-03T17:43:57", "url": "https://files.pythonhosted.org/packages/73/05/aeb406575fdc31a7f1e4db504760c8d0e5d6b0aa080555e08dcc2658dee4/capybara_forms-0.0.2.tar.gz" } ] }