{ "info": { "author": "Dillon Bowen", "author_email": "dsbowen@wharton.upenn.edu", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "Flask-Download-Btn defines a [SQLALchemy Mixin](https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html) for creating [Bootstrap](https://getbootstrap.com/) download buttons in a [Flask](https://palletsprojects.com/p/flask/) application.\n\nIts features include:\n\n1. **Automatic enabling and disabling.** A download button is automatically disabled on click and re-enabled on download completion.\n2. **CSRF protection.** The download button checks for a CSRF authentication token to ensure the client has permission to download the requested file.\n3. **Web form handling.** Download buttons are responsive to web forms.\n4. **Pre-download operations.** Download buttons can easily perform operations before files are downloaded, making it easy to create temporary download files.\n5. **Progress bar.** Update your clients on download progress with server sent events.\n\n## Installation\n\n```\n$ pip install flask-download-btn\n```\n\n## Quickstart\n\nOur folder structure will look like:\n\n```\ntemplates/\n index.html\napp.py\n```\n\nIn `templates/index.html`, paste the following Jinja template:\n\n```html\n\n \n \n \n \n \n \n \n {{ download_btn.script() }}\n \n \n \n {{ download_btn.btn.render() }}\n {{ download_btn.render_progress() }}\n \n\n```\n\nIn `app.py`:\n\n```python\nfrom flask_download_btn import DownloadBtnManager, DownloadBtnMixin\n\nfrom flask import Flask, render_template, session\nfrom flask_sqlalchemy import SQLAlchemy\nfrom sqlalchemy.ext.orderinglist import ordering_list\n\napp = Flask(__name__)\napp.config['SECRET_KEY'] = 'secret'\napp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'\napp.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False\ndb = SQLAlchemy(app)\n# initialize download button manager with application and database\ndownload_btn_manager = DownloadBtnManager(app, db=db)\n\n# create download button model and register it with the manager\n@DownloadBtnManager.register\nclass DownloadBtn(DownloadBtnMixin, db.Model):\n id = db.Column(db.Integer, primary_key=True)\n\n# create the database and clear the session when the app starts\n@app.before_first_request\ndef before_first_request():\n db.create_all()\n session.clear()\n\nHELLO_WORLD_URL = 'https://test-bucket2357.s3.us-east-2.amazonaws.com/hello_world.txt'\n\n# basic use\n@app.route('/')\ndef index():\n btn = DownloadBtn()\n btn.downloads = [(HELLO_WORLD_URL, 'hello_world.txt')]\n db.session.commit()\n return render_template('index.html', download_btn=btn)\n```\n\nRun the app with:\n\n```\n$ python app.py\n```\n\nAnd navigate to . Click the download button to download a text file with `'Hello, World!'`.\n\n## Citation\n\n```\n@software{bowen2020flask-download-btn,\n author = {Dillon Bowen},\n title = {Flask-Download-Btn},\n url = {https://dsbowen.github.io/flask-download-btn/},\n date = {2020-06-17},\n}\n```\n\n## License\n\nUsers must cite this package in any publications which use it.\n\nIt is licensed with the MIT [License](https://github.com/dsbowen/flask-download-btn/blob/master/LICENSE).\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://dsbowen.github.io/flask-download-btn/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "flask-download-btn", "package_url": "https://pypi.org/project/flask-download-btn/", "platform": "", "project_url": "https://pypi.org/project/flask-download-btn/", "project_urls": { "Homepage": "https://dsbowen.github.io/flask-download-btn/" }, "release_url": "https://pypi.org/project/flask-download-btn/0.0.22/", "requires_dist": [ "flask (>=1.1.1)", "flask-sqlalchemy (>=2.4.1)", "sqlalchemy (>=1.3.12)", "sqlalchemy-modelid (>=0.0.3)", "sqlalchemy-mutable (>=0.0.10)" ], "requires_python": ">=3.6", "summary": "Defines a SQLALchemy Mixin for creating Bootstrap download buttons in a Flask application.", "version": "0.0.22", "yanked": false, "yanked_reason": null }, "last_serial": 8533364, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "715a5758d00bdfd4efa8a3662b0ebb9b", "sha256": "a7ac24749ded3738412262d51d5e0f00e450cc8363f07612d29c9970d0581419" }, "downloads": -1, "filename": "flask_download_btn-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "715a5758d00bdfd4efa8a3662b0ebb9b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10562, "upload_time": "2019-10-30T20:25:41", "upload_time_iso_8601": "2019-10-30T20:25:41.830889Z", "url": "https://files.pythonhosted.org/packages/3b/54/f260e868a2477dac535753fab65b75ce84fa06a1cbb54473a86c73f8f1cc/flask_download_btn-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c48cff9a02a2911e94d57c8366a38ee9", "sha256": "927c303234733f9269c9dc299b715d19ed4ecc664e3fdc6922cf5955bc66f546" }, "downloads": -1, "filename": "flask-download-btn-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c48cff9a02a2911e94d57c8366a38ee9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8492, "upload_time": "2019-10-30T20:25:44", "upload_time_iso_8601": "2019-10-30T20:25:44.107716Z", "url": "https://files.pythonhosted.org/packages/94/09/130528504a0d6c0b1315910939b574ba627ab0d851b701234c42d3251bba/flask-download-btn-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "a4432aca7b5b1f6bae5b43b2bb299655", "sha256": "798ebcc6d189e595aeeedcbe9dbadb216f32fbc3050011c942c601417c8dcc2f" }, "downloads": -1, "filename": "flask_download_btn-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "a4432aca7b5b1f6bae5b43b2bb299655", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9803, "upload_time": "2019-11-15T03:20:15", "upload_time_iso_8601": "2019-11-15T03:20:15.910866Z", "url": "https://files.pythonhosted.org/packages/db/da/c284cee440180da742dc596fd7dafecdc18f245a59a22687fa57e2f1b846/flask_download_btn-0.0.10-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "717e73f8e9c09f073364f0aec2db2569", "sha256": "86f5a746646b468fb41e8693ba1018e51a726514135700f0565178d9af026556" }, "downloads": -1, "filename": "flask-download-btn-0.0.10.tar.gz", "has_sig": false, "md5_digest": "717e73f8e9c09f073364f0aec2db2569", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7381, "upload_time": "2019-11-15T03:20:17", "upload_time_iso_8601": "2019-11-15T03:20:17.298864Z", "url": "https://files.pythonhosted.org/packages/5f/54/9c37d789e10440bc3bc41debef0bca043d1d979363b0679a30a6a4cb527d/flask-download-btn-0.0.10.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "c907e0c2e5572c52ea198b75151269fd", "sha256": "f4aa6652dda9dfe58116b49e6c6ab6952be164b8922b94f847565ddba9a3585b" }, "downloads": -1, "filename": "flask_download_btn-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "c907e0c2e5572c52ea198b75151269fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9812, "upload_time": "2019-11-15T03:49:30", "upload_time_iso_8601": "2019-11-15T03:49:30.766339Z", "url": "https://files.pythonhosted.org/packages/51/fa/989be590f69545e0d72013af8cff21a30abd8de3c85c39c7d3f021af4cb7/flask_download_btn-0.0.11-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f1cf56ee6bc0f1b52d43fb9d17c67c78", "sha256": "76d340a87a52c5a14cfc60aa0a9f15536aded10c6dc937a952710035261c5362" }, "downloads": -1, "filename": "flask-download-btn-0.0.11.tar.gz", "has_sig": false, "md5_digest": "f1cf56ee6bc0f1b52d43fb9d17c67c78", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7392, "upload_time": "2019-11-15T03:49:32", "upload_time_iso_8601": "2019-11-15T03:49:32.896951Z", "url": "https://files.pythonhosted.org/packages/78/3e/635ee2db2a523f69b5dfcac5c36ff4192eb58c4dbb66a0cfaa1d9982fca4/flask-download-btn-0.0.11.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "cb56589ccb5fb012104c436e564cc4d2", "sha256": "dd3d6e7a833283e334ac62676d28dab9028dc53ed85d51c658e6298aec4f8741" }, "downloads": -1, "filename": "flask_download_btn-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "cb56589ccb5fb012104c436e564cc4d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9808, "upload_time": "2019-11-20T01:17:43", "upload_time_iso_8601": "2019-11-20T01:17:43.794782Z", "url": "https://files.pythonhosted.org/packages/ca/9b/6b425d5bdb3712d702e7e5c82e9b62a3061b630745eb29e0f3cba6339335/flask_download_btn-0.0.12-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5e92b4a0ed9764a6d500fa722ee461e2", "sha256": "725370ad75df0dd8fae5073a9229ec138e38d9256db63594fac345825b52bc3b" }, "downloads": -1, "filename": "flask-download-btn-0.0.12.tar.gz", "has_sig": false, "md5_digest": "5e92b4a0ed9764a6d500fa722ee461e2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7390, "upload_time": "2019-11-20T01:17:46", "upload_time_iso_8601": "2019-11-20T01:17:46.991066Z", "url": "https://files.pythonhosted.org/packages/aa/56/dca1b8d47f181b48269155677d3ba12d189fc75de32dc122f2dcf7e230b0/flask-download-btn-0.0.12.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "7927a40f4a1806b08d7b97d4b5b5dbab", "sha256": "9dea276abc8961c111a588401a6f5a8f15c7f5996bbb8d4081352779c02fe4dc" }, "downloads": -1, "filename": "flask_download_btn-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "7927a40f4a1806b08d7b97d4b5b5dbab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9825, "upload_time": "2019-11-21T15:26:08", "upload_time_iso_8601": "2019-11-21T15:26:08.772251Z", "url": "https://files.pythonhosted.org/packages/07/00/c910b8bc7224cbd72c1658d30768314e8310d89a246bf6d7a70f9a4a4781/flask_download_btn-0.0.13-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e84ef07763a74aae20fbe120f6903ea1", "sha256": "6f775b6f281c20e26995c74ad6016ffda014bf06b96e1a7d6d54555021f752e6" }, "downloads": -1, "filename": "flask-download-btn-0.0.13.tar.gz", "has_sig": false, "md5_digest": "e84ef07763a74aae20fbe120f6903ea1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7403, "upload_time": "2019-11-21T15:26:10", "upload_time_iso_8601": "2019-11-21T15:26:10.377274Z", "url": "https://files.pythonhosted.org/packages/0d/ee/a58586f30237621a179e16550b0c3b32f428b015b72fae477cad848aeb45/flask-download-btn-0.0.13.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "f80c723e413945ae8256d6861c38b4ab", "sha256": "46ddd6d4a92691db37ed2e07d9e63ac514a6e2ef7d1b9285c863a8be69c63a82" }, "downloads": -1, "filename": "flask_download_btn-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "f80c723e413945ae8256d6861c38b4ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9830, "upload_time": "2019-11-30T01:34:27", "upload_time_iso_8601": "2019-11-30T01:34:27.151018Z", "url": "https://files.pythonhosted.org/packages/b5/5b/06172bb97143c6bc336e6c4bcbad9bb39a4d3225fed09d14b682f746f845/flask_download_btn-0.0.14-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fccab548055f9bde3307a7f2d8ca1c3d", "sha256": "7b619abf58a677b37779a150cd5d48b201630c184051ea2b67019ba6fe70348d" }, "downloads": -1, "filename": "flask-download-btn-0.0.14.tar.gz", "has_sig": false, "md5_digest": "fccab548055f9bde3307a7f2d8ca1c3d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7410, "upload_time": "2019-11-30T01:34:28", "upload_time_iso_8601": "2019-11-30T01:34:28.709373Z", "url": "https://files.pythonhosted.org/packages/23/9c/321df9e89c168026ccc0522053ea8da9e09272c1d8df06538da8554100dd/flask-download-btn-0.0.14.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "e56ef5c5b94c3c07403f4348015af5c6", "sha256": "cfc509b3d1a7abc03465551a27a18993818b013fb1651dbb046c304913a486e7" }, "downloads": -1, "filename": "flask_download_btn-0.0.16-py3-none-any.whl", "has_sig": false, "md5_digest": "e56ef5c5b94c3c07403f4348015af5c6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9617, "upload_time": "2020-01-01T15:57:12", "upload_time_iso_8601": "2020-01-01T15:57:12.113832Z", "url": "https://files.pythonhosted.org/packages/cf/e2/389af24f9346dff70fb8f94e2bb106522b3b227f806e300e49da65cc798c/flask_download_btn-0.0.16-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e510d9df9080e0fdc035fc80e9f296b7", "sha256": "47428039989975c1c65f32253d1a7e94408a0cce37297e95391b557da09ef72b" }, "downloads": -1, "filename": "flask-download-btn-0.0.16.tar.gz", "has_sig": false, "md5_digest": "e510d9df9080e0fdc035fc80e9f296b7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7220, "upload_time": "2020-01-01T15:57:13", "upload_time_iso_8601": "2020-01-01T15:57:13.313062Z", "url": "https://files.pythonhosted.org/packages/03/88/8923ccb8d7c2eadf68d1e1c880019ac2dd4908aa61453ebcae2b1939dd15/flask-download-btn-0.0.16.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "7595ff3381cc94a17bd294ebf9b4b4b7", "sha256": "148ebe49e4f57593f646e24cca949ef18ebc8ba9b8e373374bcbf6386b23e46f" }, "downloads": -1, "filename": "flask_download_btn-0.0.17-py3-none-any.whl", "has_sig": false, "md5_digest": "7595ff3381cc94a17bd294ebf9b4b4b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9707, "upload_time": "2020-01-18T17:44:00", "upload_time_iso_8601": "2020-01-18T17:44:00.923359Z", "url": "https://files.pythonhosted.org/packages/e3/43/1506ed3d74ef81f5ff376ce014e503bd2ccf08502c0b885465d6cc374b5c/flask_download_btn-0.0.17-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "69543710b3bd9be6e3b5dc53e063c568", "sha256": "e45fe4373d5bca4fab6d1a0ae48a90d028829b9abefaf68139fd83901c7e7b6e" }, "downloads": -1, "filename": "flask-download-btn-0.0.17.tar.gz", "has_sig": false, "md5_digest": "69543710b3bd9be6e3b5dc53e063c568", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7366, "upload_time": "2020-01-18T17:44:02", "upload_time_iso_8601": "2020-01-18T17:44:02.450969Z", "url": "https://files.pythonhosted.org/packages/8c/95/c6b3b2b2c467c5724f5929c25d6da2f6ab2eda5c10bfaa84335e22da08fe/flask-download-btn-0.0.17.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.18": [ { "comment_text": "", "digests": { "md5": "a87e0f0a6a3e50316f72d1e18a20a767", "sha256": "3c384e24c99c532ceb3ceb3d7433e484a088be24afc7da6bd41c0ec2dc7847c1" }, "downloads": -1, "filename": "flask_download_btn-0.0.18-py3-none-any.whl", "has_sig": false, "md5_digest": "a87e0f0a6a3e50316f72d1e18a20a767", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9703, "upload_time": "2020-02-07T23:16:43", "upload_time_iso_8601": "2020-02-07T23:16:43.626009Z", "url": "https://files.pythonhosted.org/packages/0b/25/0a6884ee4977cd57932e59111b7f197e13495fbb16f901b7f2227d945f0d/flask_download_btn-0.0.18-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "0.0.19": [ { "comment_text": "", "digests": { "md5": "bbf03e4c99121c719bcedc91eaa28ce4", "sha256": "523d81d0a7014d68895f9ee9d0eaafa98b79a6c74ea0b4f03a81246f3296b9ee" }, "downloads": -1, "filename": "flask_download_btn-0.0.19-py3-none-any.whl", "has_sig": false, "md5_digest": "bbf03e4c99121c719bcedc91eaa28ce4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 11779, "upload_time": "2020-06-17T17:26:25", "upload_time_iso_8601": "2020-06-17T17:26:25.099203Z", "url": "https://files.pythonhosted.org/packages/90/23/f3ba8512d7006259ca41390ae1bb6d9910d8e0ad51f93624861e17b94e01/flask_download_btn-0.0.19-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "05e0e162db4f8cfb7d322da5aa93ee04", "sha256": "c752245a725b8a56b7d4264afa1da131f3445cdb0df60df081347ead1a3bad2b" }, "downloads": -1, "filename": "flask-download-btn-0.0.19.tar.gz", "has_sig": false, "md5_digest": "05e0e162db4f8cfb7d322da5aa93ee04", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10719, "upload_time": "2020-06-17T17:26:26", "upload_time_iso_8601": "2020-06-17T17:26:26.383237Z", "url": "https://files.pythonhosted.org/packages/c4/33/41363b7a1c94af59c9496475d7c0fa31d6fb4da04d34a67e5e673e3e0cc9/flask-download-btn-0.0.19.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "9da7ebf7dbe0d3aa5a1f2f796bb62013", "sha256": "008de0aaab0c2cae299315b46afe90548adb6979c38739790274cc995b7a5aa5" }, "downloads": -1, "filename": "flask_download_btn-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9da7ebf7dbe0d3aa5a1f2f796bb62013", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10587, "upload_time": "2019-11-04T22:28:14", "upload_time_iso_8601": "2019-11-04T22:28:14.938561Z", "url": "https://files.pythonhosted.org/packages/a4/29/20752aba8ce0014fa6bc2175455484fb2019a2d2e0f10ed947d3f8df1985/flask_download_btn-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "cf3f6def880165d1c1bbbed7f4f153fc", "sha256": "ede73c71f27f4e7e782c870f0cc59630e2192fd8c8cfe9dbe8dfb50c902c14b1" }, "downloads": -1, "filename": "flask-download-btn-0.0.2.tar.gz", "has_sig": false, "md5_digest": "cf3f6def880165d1c1bbbed7f4f153fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8514, "upload_time": "2019-11-04T22:28:17", "upload_time_iso_8601": "2019-11-04T22:28:17.350233Z", "url": "https://files.pythonhosted.org/packages/83/21/5f6d65ad4740012a261717e092a398ff95e5862711ce6c15fea5c23e8379/flask-download-btn-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.20": [ { "comment_text": "", "digests": { "md5": "98b10f6dff16871af0c7f8d572c2291c", "sha256": "8cd1bea34f454880d2bb5e38875a26693683ea0a7e9be3bae0c845950b13081e" }, "downloads": -1, "filename": "flask_download_btn-0.0.20-py3-none-any.whl", "has_sig": false, "md5_digest": "98b10f6dff16871af0c7f8d572c2291c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 11768, "upload_time": "2020-06-17T17:38:12", "upload_time_iso_8601": "2020-06-17T17:38:12.709802Z", "url": "https://files.pythonhosted.org/packages/c0/04/b5f4511a3c52014fcbf01433831d43c535dbb6a98ef6bf2df4c098b3b6d9/flask_download_btn-0.0.20-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0244fe743c2db956ecd171c212d5b395", "sha256": "2a6a4f9f861ebc73126d72968cf6d8440c50b3916ebc1426b6d3f96db053d894" }, "downloads": -1, "filename": "flask-download-btn-0.0.20.tar.gz", "has_sig": false, "md5_digest": "0244fe743c2db956ecd171c212d5b395", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10677, "upload_time": "2020-06-17T17:38:13", "upload_time_iso_8601": "2020-06-17T17:38:13.919064Z", "url": "https://files.pythonhosted.org/packages/3a/b4/baac2540b7ef884b350c6a11271af9bffb15268db796c812e57664e0a130/flask-download-btn-0.0.20.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.21": [ { "comment_text": "", "digests": { "md5": "aec4aa22a1fbe2808dee15eeed2bf5b3", "sha256": "7433724867e2b25ae247b14bf1f7bb6020f846521e65dbc5fc8e39d9e02faee8" }, "downloads": -1, "filename": "flask_download_btn-0.0.21-py3-none-any.whl", "has_sig": false, "md5_digest": "aec4aa22a1fbe2808dee15eeed2bf5b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 11790, "upload_time": "2020-07-10T01:55:08", "upload_time_iso_8601": "2020-07-10T01:55:08.304381Z", "url": "https://files.pythonhosted.org/packages/fb/e8/2a67d93ef080c1e0c3b5b8f3eea61d62eda7594ed1e122fe16dceec54208/flask_download_btn-0.0.21-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f065227b0e1f17264334dbecf6994b61", "sha256": "dbe88b5838e0e1bb82810d7477e92a817f547c561ecc1779ef677db43f44c85f" }, "downloads": -1, "filename": "flask-download-btn-0.0.21.tar.gz", "has_sig": false, "md5_digest": "f065227b0e1f17264334dbecf6994b61", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10705, "upload_time": "2020-07-10T01:55:09", "upload_time_iso_8601": "2020-07-10T01:55:09.446307Z", "url": "https://files.pythonhosted.org/packages/5e/75/a0ad21d1127d545d572fe52f194fa237e20c2d0eac9d1651d56f64ab1984/flask-download-btn-0.0.21.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.22": [ { "comment_text": "", "digests": { "md5": "031f44099e46d55336869f1ac6b69c6a", "sha256": "59eae4e1ae21b700682e343e1c704e9adfad3029043682fe9cc361cebae487ac" }, "downloads": -1, "filename": "flask_download_btn-0.0.22-py3-none-any.whl", "has_sig": false, "md5_digest": "031f44099e46d55336869f1ac6b69c6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 11940, "upload_time": "2020-10-29T15:18:57", "upload_time_iso_8601": "2020-10-29T15:18:57.086778Z", "url": "https://files.pythonhosted.org/packages/16/6a/067769cb61e794d0d317c3ad1a8516a42a9dc6c07d8fdc9dbe3065463686/flask_download_btn-0.0.22-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f297f1343d7a4bae71956f5496cbce39", "sha256": "54e95fcc02ad61e147d995b162e0ed6b62300acd51da7124908d11bd3def2122" }, "downloads": -1, "filename": "flask-download-btn-0.0.22.tar.gz", "has_sig": false, "md5_digest": "f297f1343d7a4bae71956f5496cbce39", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10947, "upload_time": "2020-10-29T15:18:58", "upload_time_iso_8601": "2020-10-29T15:18:58.907279Z", "url": "https://files.pythonhosted.org/packages/5b/74/edfeeccb66c7d3a3cc82c06a1d6647d5d0dbd60d0f092c42f25896b58828/flask-download-btn-0.0.22.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "ea228c56bd9a0fbdfba0042818649f96", "sha256": "fc07358d55ada1612c6f31e78cf0f9cda64b266aaecfdafbb384793bd298e890" }, "downloads": -1, "filename": "flask_download_btn-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ea228c56bd9a0fbdfba0042818649f96", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10525, "upload_time": "2019-11-10T15:31:37", "upload_time_iso_8601": "2019-11-10T15:31:37.683184Z", "url": "https://files.pythonhosted.org/packages/f5/98/1de281e485b194b9fec6455e0ae6096bac55ae10e3144fb18ee20f873334/flask_download_btn-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "16bdc2abf700d58a3808b4b16600aac7", "sha256": "fa7bad64d7c004e5d4718f1be588bc53fcf2788f13af3c8e9ebf73347c7d8688" }, "downloads": -1, "filename": "flask-download-btn-0.0.3.tar.gz", "has_sig": false, "md5_digest": "16bdc2abf700d58a3808b4b16600aac7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8424, "upload_time": "2019-11-10T15:31:41", "upload_time_iso_8601": "2019-11-10T15:31:41.305417Z", "url": "https://files.pythonhosted.org/packages/cd/0d/f8d8ec620a561419caf88ebdb9bd2ac7290142452cb8834c6a3ccd739501/flask-download-btn-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3c6f077697e1c480275d8a62881710cc", "sha256": "1332819923a84effa1cd15eb20340322c42d1321fa48f3c52857cf482e54a993" }, "downloads": -1, "filename": "flask_download_btn-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3c6f077697e1c480275d8a62881710cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10701, "upload_time": "2019-11-11T05:15:00", "upload_time_iso_8601": "2019-11-11T05:15:00.734425Z", "url": "https://files.pythonhosted.org/packages/76/fd/49d4e65d992b8458a565c344a95aa64c7915cc0f71312236da85db728c50/flask_download_btn-0.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "26bd53f77c04bc6e3800500b02cab043", "sha256": "e9b0bb0eb79fd18fd5980785258305860d8eaa7c798c7866439a010d4286d61f" }, "downloads": -1, "filename": "flask-download-btn-0.0.4.tar.gz", "has_sig": false, "md5_digest": "26bd53f77c04bc6e3800500b02cab043", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8597, "upload_time": "2019-11-11T05:15:04", "upload_time_iso_8601": "2019-11-11T05:15:04.630779Z", "url": "https://files.pythonhosted.org/packages/a4/7b/cdced7bc1950c308e53a34dcca384c37ccb2677a930f086da76ae789d941/flask-download-btn-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "414703815fe40f59df3416c98102d8e5", "sha256": "8da78ac1c7b42be7c6d73562ab1eab89827c168ef3d20a642932cb2d3930b179" }, "downloads": -1, "filename": "flask_download_btn-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "414703815fe40f59df3416c98102d8e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10765, "upload_time": "2019-11-11T06:01:38", "upload_time_iso_8601": "2019-11-11T06:01:38.414571Z", "url": "https://files.pythonhosted.org/packages/8e/53/6d3e97a3bbebb6a8b0a996d42c85e7ec5d724ec75da97d8cf084714f5313/flask_download_btn-0.0.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4f837e53e23de9e378b7013acc84143f", "sha256": "4375bb6e4e0a8aa2f9a5867b2d59d74dda3512f4fd230195ab9785d48562e603" }, "downloads": -1, "filename": "flask-download-btn-0.0.5.tar.gz", "has_sig": false, "md5_digest": "4f837e53e23de9e378b7013acc84143f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8651, "upload_time": "2019-11-11T06:01:40", "upload_time_iso_8601": "2019-11-11T06:01:40.113356Z", "url": "https://files.pythonhosted.org/packages/72/54/65fccbe3a80b39c86ba61e00893aa46b6d098b3c449517d186f6e24dac5d/flask-download-btn-0.0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "e376abde4093c1f1ba8353f1fc3fb662", "sha256": "27ffd26585700d87f60a8c0f0d8c59f508addeba585a34921279a4ac3c16cc7f" }, "downloads": -1, "filename": "flask_download_btn-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "e376abde4093c1f1ba8353f1fc3fb662", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 10675, "upload_time": "2019-11-11T06:50:27", "upload_time_iso_8601": "2019-11-11T06:50:27.781716Z", "url": "https://files.pythonhosted.org/packages/a3/be/472a8888beea0d66caa64e60b28a3004ac16c36acda71d220a40eae25bef/flask_download_btn-0.0.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "68ef56eadf9d52ed4ef89dec9ace12cf", "sha256": "913cf81052d60b3b945dede253fc207cfd2802899b2a7ad89abcc1837dd0f6da" }, "downloads": -1, "filename": "flask-download-btn-0.0.6.tar.gz", "has_sig": false, "md5_digest": "68ef56eadf9d52ed4ef89dec9ace12cf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 8595, "upload_time": "2019-11-11T06:50:29", "upload_time_iso_8601": "2019-11-11T06:50:29.227775Z", "url": "https://files.pythonhosted.org/packages/39/22/1ad0ed7064f8919ee2dd97971579415cfc1c98df109520d8d2234501c245/flask-download-btn-0.0.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c439aff66d3cd5c5959b21a4c79585ee", "sha256": "79067778b68cba48c4713b89c41399cda541e473a5155dea859c1d1809246f97" }, "downloads": -1, "filename": "flask_download_btn-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "c439aff66d3cd5c5959b21a4c79585ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9818, "upload_time": "2019-11-12T23:08:31", "upload_time_iso_8601": "2019-11-12T23:08:31.260856Z", "url": "https://files.pythonhosted.org/packages/12/27/518c4103a687cd46022070c2c0fcec1b8c67dae4b30525d1bbd67fa79ba3/flask_download_btn-0.0.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "bee3a12a43dc0996c4436ae6baa74326", "sha256": "f11e2de636b2293eea69029f21567db9fb07dbab7c3ed9c99a1f340bf5f901f0" }, "downloads": -1, "filename": "flask-download-btn-0.0.7.tar.gz", "has_sig": false, "md5_digest": "bee3a12a43dc0996c4436ae6baa74326", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7406, "upload_time": "2019-11-12T23:08:33", "upload_time_iso_8601": "2019-11-12T23:08:33.252690Z", "url": "https://files.pythonhosted.org/packages/f0/1c/ade844476d427cdd4a529db7fecbb852ef35a7d11a8deb75e63510079166/flask-download-btn-0.0.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "89036f2ae5c3516a0fa9d154d290d065", "sha256": "9cafe0a4170342db49d7b709475711feb0569295c91e90c9c70c43e1e5f5649a" }, "downloads": -1, "filename": "flask_download_btn-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "89036f2ae5c3516a0fa9d154d290d065", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9804, "upload_time": "2019-11-14T20:49:43", "upload_time_iso_8601": "2019-11-14T20:49:43.816641Z", "url": "https://files.pythonhosted.org/packages/3e/53/cca777ac4c10c6274664f12cd8396afc39c16b25c3f5c324397ba961312b/flask_download_btn-0.0.8-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e149d2394e93dc05d9f6d119d2488e3d", "sha256": "7bf8591e63e2dbe35f2a9cce247c710072bda856047a80dd93bbfda649313dee" }, "downloads": -1, "filename": "flask-download-btn-0.0.8.tar.gz", "has_sig": false, "md5_digest": "e149d2394e93dc05d9f6d119d2488e3d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7375, "upload_time": "2019-11-14T20:49:45", "upload_time_iso_8601": "2019-11-14T20:49:45.052934Z", "url": "https://files.pythonhosted.org/packages/a2/ed/5e8730b2620a72426eff89f4e4d1f354b988b7e33b1847bd30c0e2442737/flask-download-btn-0.0.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "03dae85db1c4da4b3fefde29c5e22f5a", "sha256": "78b622b4f771823a83263cd51d6c73c3013a0d533b4c5a8f5f7bea7d05a24a45" }, "downloads": -1, "filename": "flask_download_btn-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "03dae85db1c4da4b3fefde29c5e22f5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 9808, "upload_time": "2019-11-14T22:17:17", "upload_time_iso_8601": "2019-11-14T22:17:17.738850Z", "url": "https://files.pythonhosted.org/packages/ed/86/1abb0b23fc75cd82c72fa8f0eb790d379f55835630b8e254b54c21738a34/flask_download_btn-0.0.9-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "49b18df8409b140d910889208d38a257", "sha256": "320c90e7b33140635b971619c885c19d3d41a98b388cdc3e0f9716550686a9ef" }, "downloads": -1, "filename": "flask-download-btn-0.0.9.tar.gz", "has_sig": false, "md5_digest": "49b18df8409b140d910889208d38a257", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7392, "upload_time": "2019-11-14T22:17:18", "upload_time_iso_8601": "2019-11-14T22:17:18.970002Z", "url": "https://files.pythonhosted.org/packages/1d/93/a29dd9d0351a631a9d928af45a2d46dc2ac51f19f9941c1a8037d52406ba/flask-download-btn-0.0.9.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "031f44099e46d55336869f1ac6b69c6a", "sha256": "59eae4e1ae21b700682e343e1c704e9adfad3029043682fe9cc361cebae487ac" }, "downloads": -1, "filename": "flask_download_btn-0.0.22-py3-none-any.whl", "has_sig": false, "md5_digest": "031f44099e46d55336869f1ac6b69c6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 11940, "upload_time": "2020-10-29T15:18:57", "upload_time_iso_8601": "2020-10-29T15:18:57.086778Z", "url": "https://files.pythonhosted.org/packages/16/6a/067769cb61e794d0d317c3ad1a8516a42a9dc6c07d8fdc9dbe3065463686/flask_download_btn-0.0.22-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f297f1343d7a4bae71956f5496cbce39", "sha256": "54e95fcc02ad61e147d995b162e0ed6b62300acd51da7124908d11bd3def2122" }, "downloads": -1, "filename": "flask-download-btn-0.0.22.tar.gz", "has_sig": false, "md5_digest": "f297f1343d7a4bae71956f5496cbce39", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10947, "upload_time": "2020-10-29T15:18:58", "upload_time_iso_8601": "2020-10-29T15:18:58.907279Z", "url": "https://files.pythonhosted.org/packages/5b/74/edfeeccb66c7d3a3cc82c06a1d6647d5d0dbd60d0f092c42f25896b58828/flask-download-btn-0.0.22.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }