{
"info": {
"author": "S. Andrew Sheppard",
"author_email": "andrew@wq.io",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Web Environment",
"Framework :: Django",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Software Development :: Code Generators",
"Topic :: Text Processing :: Markup :: HTML"
],
"description": "xlsform-converter (xlsconv)\n===========================\n\nxlsform-converter converts surveys defined via the `XLSForm\nstandard `__ into `Django\nmodels `__ and\nHTML5 `Mustache templates `__. This makes\nit possible to re-use the powerful form building tools provided by the\n`Open Data Kit ecosystem `__, while\nleveraging Django's robust support for relational databases like\n`PostgreSQL `__.\n\nxlsform-converter is designed to facilitate the rapid development of\noffline-capable data collection apps via the `wq\nframework `__. The ultimate goal is to provide full\ncompatibility with the form authoring tools provided by `ODK (and\nEnketo, etc.) `__. Note that this is not\nthe same as full XForm compatibility: the client and server components\nof wq (`wq.app `__ and\n`wq.db `__) use a JSON-based `REST\nAPI `__ to exchange data and are not\ndirectly compatible with their ODK Analogues (ODK Collect and ODK\nAggregate, respectively).\n\nFor the database itself, the key distinction from other XLSForm tools\n(including some powered by Django) is that xlsform-converter converts\nthe xlsform fields directly into a Django model definition, rather than\nrepresenting the entire XForm standard within Django. This means that\neach row in an XLSForm \"survey\" tab is mapped to (usually) a single\ncolumn in a simple relational database table. Repeat questions are\nhandled by creating a second model with a ``ForeignKey`` to the parent\nsurvey model.\n\nxlsform-converter also supports a couple of additional \"constraints\"\nthat are not part of the XLSForm standard:\n\n- ``wq:ForeignKey('app.ModelName')``: Create a foreign key to an\n existing Django model (presumably not defined in the spreadsheet).\n This is effectively a more relational version of\n ``select_one_external``.\n- ``wq:initial(3)``: Very similar to ``repeat_count``, but only set for\n new records.\n- ``wq:length(5)``: Text field maximum length (similar to a\n ``string-length`` constraint)\n\n|Latest PyPI Release| |Release Notes| |License| |GitHub Stars| |GitHub\nForks| |GitHub Issues|\n\n|Travis Build Status| |Python Support|\n\nIncluded Templates\n~~~~~~~~~~~~~~~~~~\n\nxlsform-converter uses the following templates to generate Django/wq\nproject files from a given XLSForm.\n\nDjango App Templates\n^^^^^^^^^^^^^^^^^^^^\n\n- ```models.py`` `__\n- ```rest.py`` `__\n (for use with ```wq.db.rest`` `__)\n- ```admin.py`` `__\n (for use with\n ```django.contrib.admin`` `__)\n- ```serializers.py`` `__\n (for use with ``wq.db.rest``)\n\nMustache Templates (for use with `wq `__)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- ```edit.html`` `__\n- ```detail.html`` `__\n- ```list.html`` `__\n- ```popup.html`` `__\n (for use with `wq/map.js `__)\n\nUsage\n~~~~~\n\nIf you are using wq, you may be interested in\n`wq.start `__, which uses\nxlsconv internally for the ``wq addform`` and ``wq maketemplates``\ncommands. Otherwise, you can use xlsconv directly with the following\ncommand-line API:\n\n.. code:: bash\n\n # Recommended: create virtual environment\n # python3 -m venv venv\n # . venv/bin/activate\n\n # Install xlsconv\n pip install xlsconv\n\n # Use the default models.py template\n xls2django my-odk-survey.xls > myapp/models.py\n\n # Use the rest.py template (or admin.py, or serializers.py)\n xls2django my-odk-survey.xls rest > myapp/models.py\n\n # Use a custom template\n xls2django my-odk-survey.xls my_templates/models.py > myapp/models.py\n\n # Use the default edit.html template\n xls2html my-odk-survey.xls > templates/survey_edit.html\n\n # Use the list.html template (or detail.html, or popup.html)\n xls2html my-odk-survey.xls list > templates/survey_list.html\n\n # Use a custom template\n xls2html my-odk-survey.xls my_templates/edit.html > templates/survey_edit.html\n\n.. |Latest PyPI Release| image:: https://img.shields.io/pypi/v/xlsconv.svg\n :target: https://pypi.org/project/xlsconv\n.. |Release Notes| image:: https://img.shields.io/github/release/wq/xlsform-converter.svg\n :target: https://github.com/wq/xlsform-converter/releases\n.. |License| image:: https://img.shields.io/pypi/l/xlsconv.svg\n :target: https://github.com/wq/xlsform-converter/blob/master/LICENSE\n.. |GitHub Stars| image:: https://img.shields.io/github/stars/wq/xlsform-converter.svg\n :target: https://github.com/wq/xlsform-converter/stargazers\n.. |GitHub Forks| image:: https://img.shields.io/github/forks/wq/xlsform-converter.svg\n :target: https://github.com/wq/xlsform-converter/network\n.. |GitHub Issues| image:: https://img.shields.io/github/issues/wq/xlsform-converter.svg\n :target: https://github.com/wq/xlsform-converter/issues\n.. |Travis Build Status| image:: https://img.shields.io/travis/wq/xlsform-converter/master.svg\n :target: https://travis-ci.org/wq/xlsform-converter\n.. |Python Support| image:: https://img.shields.io/pypi/pyversions/xlsconv.svg\n :target: https://pypi.python.org/pypi/xlsconv\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/wq/xlsform-converter",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "xlsconv",
"package_url": "https://pypi.org/project/xlsconv/",
"platform": "",
"project_url": "https://pypi.org/project/xlsconv/",
"project_urls": {
"Homepage": "https://github.com/wq/xlsform-converter"
},
"release_url": "https://pypi.org/project/xlsconv/1.1.0/",
"requires_dist": null,
"requires_python": "",
"summary": "Tool to convert ODK-style XLSForms into Django models and HTML templates for use with wq (https://wq.io/)",
"version": "1.1.0"
},
"last_serial": 3955460,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "8464e74e8c05a1eabcd2e8868fc52427",
"sha256": "fb88f654b8c56a1b4cffe33717edd8c435995b95200c7c30515ae30946002e44"
},
"downloads": -1,
"filename": "xlsconv-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "8464e74e8c05a1eabcd2e8868fc52427",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7014,
"upload_time": "2016-03-23T01:51:22",
"url": "https://files.pythonhosted.org/packages/2a/92/5e5a8403ece14b21846b989bd9dec5a48d03d3d33e8422d6620e18ff1e1c/xlsconv-0.1.0.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "9b7f0dbd3ddb3eebb263eba956b124d3",
"sha256": "fb371c80a94e988f09f8f0975a366febcacd7645abcd0899e525c44dc6817d48"
},
"downloads": -1,
"filename": "xlsconv-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "9b7f0dbd3ddb3eebb263eba956b124d3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11001,
"upload_time": "2016-08-26T19:09:49",
"url": "https://files.pythonhosted.org/packages/f5/18/b60c956452b4399e0bc9aa193c602e547717fb1c9cd7bc22a090204cd06f/xlsconv-0.2.0.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "5b93ad8871ae3e0f6eae37aedb11cba5",
"sha256": "dfc0abe2cd304ba39cd6856e7dc734be756fadee8f7046d618677968879c646b"
},
"downloads": -1,
"filename": "xlsconv-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "5b93ad8871ae3e0f6eae37aedb11cba5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11702,
"upload_time": "2016-11-07T22:30:12",
"url": "https://files.pythonhosted.org/packages/77/ba/5f6f74716d3c8567123722dd4f3128469b6733b35b789e5b895f11cc5735/xlsconv-0.3.0.tar.gz"
}
],
"0.4.0": [
{
"comment_text": "",
"digests": {
"md5": "8898e3ab4b035777dbad8c02133f911f",
"sha256": "4010a943b1f3a40e13f092bdd5cf7e0fc8e4745ed9a1859b34ac13c9f5647c9c"
},
"downloads": -1,
"filename": "xlsconv-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "8898e3ab4b035777dbad8c02133f911f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11904,
"upload_time": "2017-04-04T18:00:38",
"url": "https://files.pythonhosted.org/packages/9e/0c/492735b2061f8b31663974a45e4b17f0c40c35a5858434271fd5b625cb05/xlsconv-0.4.0.tar.gz"
}
],
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "d13aea01a1ebe45f3a741935290b1b08",
"sha256": "f04b77b6e8eced0a3def07deee7d8a843b1d59387bb5262d38d2538f7900b2f8"
},
"downloads": -1,
"filename": "xlsconv-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "d13aea01a1ebe45f3a741935290b1b08",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12078,
"upload_time": "2017-07-24T16:10:52",
"url": "https://files.pythonhosted.org/packages/5e/a3/b059f9b48468445b3cb526c333f51f82d094c6ea55641124f15a82fbc22a/xlsconv-1.0.0.tar.gz"
}
],
"1.1.0": [
{
"comment_text": "",
"digests": {
"md5": "687cfa00d0242b0371dd81b70d1e082a",
"sha256": "5d98ebdb19792eae2efa6d0a59050443f6315b8533f44b7e6e2ad28c71a0d03b"
},
"downloads": -1,
"filename": "xlsconv-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "687cfa00d0242b0371dd81b70d1e082a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12091,
"upload_time": "2018-06-12T21:24:48",
"url": "https://files.pythonhosted.org/packages/b5/72/120f985a926b2fe283ccaade2d7a43e9e915c7f6a24a98107cebe1fb2389/xlsconv-1.1.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "687cfa00d0242b0371dd81b70d1e082a",
"sha256": "5d98ebdb19792eae2efa6d0a59050443f6315b8533f44b7e6e2ad28c71a0d03b"
},
"downloads": -1,
"filename": "xlsconv-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "687cfa00d0242b0371dd81b70d1e082a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12091,
"upload_time": "2018-06-12T21:24:48",
"url": "https://files.pythonhosted.org/packages/b5/72/120f985a926b2fe283ccaade2d7a43e9e915c7f6a24a98107cebe1fb2389/xlsconv-1.1.0.tar.gz"
}
]
}