{ "info": { "author": "Chris Tabor", "author_email": "dxdstudio@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2.7", "Topic :: Software Development" ], "description": "[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1f8f45e92a9b4ed1ab5029ee7a0e5534)](https://www.codacy.com/app/dxdstudio/flask_extras?utm_source=github.com&utm_medium=referral&utm_content=christabor/flask_extras&utm_campaign=badger)\n[![Build Status](https://travis-ci.org/christabor/flask_extras.svg?branch=master)](https://travis-ci.org/christabor/flask_extras)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/christabor/flask_extras/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/christabor/flask_extras/?branch=master)\n[![Code Climate](https://codeclimate.com/github/christabor/flask_extras/badges/gpa.svg)](https://codeclimate.com/github/christabor/flask_extras)\n[![Coverage Status](https://coveralls.io/repos/github/christabor/flask_extras/badge.svg?branch=master)](https://coveralls.io/github/christabor/flask_extras?branch=master)\n[![Code Health](https://landscape.io/github/christabor/flask_extras/master/landscape.svg?style=flat)](https://landscape.io/github/christabor/flask_extras/master)\n\n# Flask Extras\nAssorted useful flask views, blueprints, Jinja2 template filters, and templates/macros.\n\n## Overall setup\n\nAs of `3.4.0`, filters and templates will automatically be registered and available through the following simple command:\n\n```python\nfrom flask_extras import FlaskExtras\napp = Flask('myapp')\nFlaskExtras(app)\n```\n\nFor the old way, check out [this page](wiki/old_setup.md)\n\n## Available features\n\n### Views\n\nImport them like usual:\n\n```python\nfrom flask_extras.views import (\n statuses,\n)\n```\n\n*Note:* each view must have a valid template in your apps templates dir. See each view for the required names and locations.\n\n*Note:* each view has configuration helpers to inject or configure your app. See source for details.\n\n### Macros\n\n**Many more macros** are available. You can use them like so:\n\n```html\n{% from 'macros.html' import list_group, objects2table %}\n```\n\nFor the most comprehensive docs, check out each [macro](flask_extras/macros/). Comment \"docstrings\" are inline using jinja2 comments (these are not rendered in your html).\n\nAlso, check the source and/or output to see what classes are available for style overrides.\n\n### Statuses\n\nProvides views for common status codes. Usage:\n\n```python\napp = statuses.inject_error_views(app)\n```\n\nSee source for more.\n\n### Decorators\n\nSee the source for more. Usage example:\n\n```python\nfrom flask_extras.decorators import require_headers\n\napp.route('/')\n@require_headers(['X-Foo'])\ndef foo():\n pass\n```\n\n\n### Forms\n\n#### WTForm Multi-step wizard\n\nA WTForm extension for handling an arbitrary number of separate forms as a single, multi-step, multi-POST wizard. All state and data are handled by apps' session backend. Building forms is just like you're used to -- simple and intuitive. Just inherit the `MultiStepWizard` class and put a `__forms__` key on it, which is just a list of all the forms you want to use. *Note*: list order matters for your form steps.\n\nUsage example:\n\n```python\nfrom flask.ext.wtf import FlaskForm\n\nfrom flask_extras.forms.wizard import MultiStepWizard\n\n\nclass MultiStepTest1(FlaskForm):\n field1 = StringField(validators=[validators.DataRequired()],)\n field2 = IntegerField(validators=[validators.DataRequired()],)\n\n\nclass MultiStepTest2(FlaskForm):\n field3 = StringField(validators=[validators.DataRequired()],)\n field4 = IntegerField(validators=[validators.DataRequired()],)\n\n\nclass MyCoolForm(MultiStepWizard):\n __forms__ = [\n MultiStepTest1,\n MultiStepTest2,\n ]\n```\n\nand an example route:\n\n```python\nfrom forms import MyCoolForm\n\n@app.route('/', methods=['GET', 'POST'])\ndef index():\n curr_step = request.args.get('curr_step')\n form_kwargs = dict(session_key='mycustomkey')\n if curr_step is not None:\n form_kwargs.update(curr_step=curr_step)\n form = forms.MyCoolForm(**form_kwargs)\n kwargs = dict(form=form)\n if request.method == 'POST':\n if form.validate_on_submit():\n if form.is_complete():\n data = form.alldata(combine_fields=True, flush_after=True)\n flash('Form validated and complete! data = {}'.format(data),\n 'success')\n return jsonify(data)\n else:\n flash('Great job, but not done yet ({} steps remain!).'.format(form.remaining))\n else:\n flash('Invalid form data.', 'error')\n return render_template('index.html', **kwargs)\n```\n\nand an example html page (using the [wtform_form](flask_extras/macros/macros.html) macro also available):\n\n```html\n{% if form.is_complete() %}\n Complete!\n{% else %}\n \n {{ wtform_form(form,\n classes=['form', 'form-horizontal'],\n btn_classes=['btn btn-primary', 'btn-lg'],\n align='right',\n action=url_for('app.index'),\n method='POST',\n reset_btn=False,\n horizontal=True,\n ) }}\n{% endif %}\n```", "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/christabor/flask_extras", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "flask_extras", "package_url": "https://pypi.org/project/flask_extras/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/flask_extras/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/christabor/flask_extras" }, "release_url": "https://pypi.org/project/flask_extras/4.0.3/", "requires_dist": null, "requires_python": null, "summary": "Assorted useful flask views, blueprints, Jinja2 template filters, and templates/macros", "version": "4.0.3" }, "last_serial": 2681268, "releases": { "3.3.0": [ { "comment_text": "", "digests": { "md5": "7419f8bbdd097abcbd13d1f92b3f18be", "sha256": "019a5d9ff1cb9731974b0a0102a7f28ad0f6266b11e0d3853576f4a4c0148fee" }, "downloads": -1, "filename": "flask_extras-3.3.0.tar.gz", "has_sig": false, "md5_digest": "7419f8bbdd097abcbd13d1f92b3f18be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9127, "upload_time": "2016-09-02T02:48:54", "url": "https://files.pythonhosted.org/packages/e6/3b/88c16e2828cc8e0f048e18cb7ac9d8c4d8162b9a009766fff6727f544aa7/flask_extras-3.3.0.tar.gz" } ], "3.4.0": [ { "comment_text": "", "digests": { "md5": "f7aa6f140e14a354acc49c7fb66816e1", "sha256": "3260576a81e6c0063d1c616213655fc675c25af6d07ec3a38112c212cfa2f60e" }, "downloads": -1, "filename": "flask_extras-3.4.0.tar.gz", "has_sig": false, "md5_digest": "f7aa6f140e14a354acc49c7fb66816e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8880, "upload_time": "2016-09-02T03:17:49", "url": "https://files.pythonhosted.org/packages/b1/51/2c545a94050d8a21aa7d207cffe1be0d84a542f8083010ff1e1e3862b7a3/flask_extras-3.4.0.tar.gz" } ], "3.6.1": [ { "comment_text": "", "digests": { "md5": "8d89816e7911b3c6d81e3ec82f8e36f2", "sha256": "12ad9ce599647581ba7d91fa06cc6fa43b391571849c5c530db5eae737490527" }, "downloads": -1, "filename": "flask_extras-3.6.1.tar.gz", "has_sig": false, "md5_digest": "8d89816e7911b3c6d81e3ec82f8e36f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7402, "upload_time": "2016-09-29T22:10:03", "url": "https://files.pythonhosted.org/packages/43/68/0dce3bca254b4fca90feb5d4ad0fd3988c34573fb714fd4db9f5d228aceb/flask_extras-3.6.1.tar.gz" } ], "3.6.2": [ { "comment_text": "", "digests": { "md5": "dbd5833a279137ecee0e4ea2187dad8f", "sha256": "14ec029c6b5bff5691f56627dbb72edeea890ada61b18893a9336495e8306d7e" }, "downloads": -1, "filename": "flask_extras-3.6.2.tar.gz", "has_sig": false, "md5_digest": "dbd5833a279137ecee0e4ea2187dad8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16869, "upload_time": "2016-10-14T21:59:47", "url": "https://files.pythonhosted.org/packages/e7/23/4627544bf235d96543667bd3bd10362392098fb41659be977bcb9d1360ad/flask_extras-3.6.2.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "9ac523da0a51c3f624913dd0a6232b44", "sha256": "eb5e4a279e5b91a0dd5a6c264949221c7b9693d54d9dacc187de7ab93fe93db6" }, "downloads": -1, "filename": "flask_extras-4.0.0.tar.gz", "has_sig": false, "md5_digest": "9ac523da0a51c3f624913dd0a6232b44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28718, "upload_time": "2016-12-15T00:07:26", "url": "https://files.pythonhosted.org/packages/e6/0a/e6fb52248629f3be173f9b0f553c8658cd8c5d1a0a58a7f1609ddbfac7b2/flask_extras-4.0.0.tar.gz" } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "14d54bbafc1fdd95e9e602a5886dfb30", "sha256": "48f1dceb2d133e237a8f041a784312d54846897f0f4ff86fe3ff601d946c2b08" }, "downloads": -1, "filename": "flask_extras-4.0.1.tar.gz", "has_sig": false, "md5_digest": "14d54bbafc1fdd95e9e602a5886dfb30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29974, "upload_time": "2017-01-09T21:44:31", "url": "https://files.pythonhosted.org/packages/0b/5a/59c372b41ee34a3f3731f5e534e0554e5148c00e3502bb72ecc23c748e51/flask_extras-4.0.1.tar.gz" } ], "4.0.2": [ { "comment_text": "", "digests": { "md5": "9cf7dca73c110d7aacb6e6c3794088fc", "sha256": "aeda03adf969d76b39be26c0b5cce7d43d2cbe72ea96f819c5251e913d864f86" }, "downloads": -1, "filename": "flask_extras-4.0.2.tar.gz", "has_sig": false, "md5_digest": "9cf7dca73c110d7aacb6e6c3794088fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29983, "upload_time": "2017-01-09T22:44:36", "url": "https://files.pythonhosted.org/packages/e5/96/cfefbb8067f363e5d378d36c01524bbd81b4069ac8ce4673c7a444b11ede/flask_extras-4.0.2.tar.gz" } ], "4.0.3": [ { "comment_text": "", "digests": { "md5": "e999985359233797f671773c1c3ea5bc", "sha256": "0f8acd380f783cfea2c5d4d98dd2001ed9d0fdef743205a0c9e430e0ce107d12" }, "downloads": -1, "filename": "flask_extras-4.0.3.tar.gz", "has_sig": false, "md5_digest": "e999985359233797f671773c1c3ea5bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39092, "upload_time": "2017-03-03T20:57:33", "url": "https://files.pythonhosted.org/packages/59/04/618b8074a79b572710287cc913d826205938e063cebe1ed7262e192a792d/flask_extras-4.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e999985359233797f671773c1c3ea5bc", "sha256": "0f8acd380f783cfea2c5d4d98dd2001ed9d0fdef743205a0c9e430e0ce107d12" }, "downloads": -1, "filename": "flask_extras-4.0.3.tar.gz", "has_sig": false, "md5_digest": "e999985359233797f671773c1c3ea5bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39092, "upload_time": "2017-03-03T20:57:33", "url": "https://files.pythonhosted.org/packages/59/04/618b8074a79b572710287cc913d826205938e063cebe1ed7262e192a792d/flask_extras-4.0.3.tar.gz" } ] }