{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "## Librairie \"outil\" pour SQLAlchemy et Flask\n\n[![pytest](https://github.com/PnX-SI/Utils-Flask-SQLAlchemy/actions/workflows/pytest.yml/badge.svg)](https://github.com/PnX-SI/Utils-Flask-SQLAlchemy/actions/workflows/pytest.yml)\n[![codecov](https://codecov.io/gh/PnX-SI/Utils-Flask-SQLAlchemy/branch/master/graph/badge.svg?token=R81RR3V5RI)](https://codecov.io/gh/PnX-SI/Utils-Flask-SQLAlchemy)\n\nCette librairie fournit des d\u00e9corateurs pour faciliter le d\u00e9veloppement avec Flask et SQLAlchemy. \n\nPaquet Python : https://pypi.org/project/utils-flask-sqlalchemy/.\n\nElle est compos\u00e9e de trois outils principaux :\n\n### Les serialisers\n\nLe d\u00e9corateur de classe ``@serializable`` permet la s\u00e9rialisation JSON d'objets Python issus des classes SQLAlchemy. Il rajoute dynamiquement une m\u00e9thode ``as_dict()`` aux classes qu'il d\u00e9core. Cette m\u00e9thode transforme l'objet de la classe en dictionnaire en transformant les types Python non compatibles avec le format JSON. Pour cela, elle se base sur les types des colonnes d\u00e9crits dans le mod\u00e8le SQLAlchemy.\n\nLe d\u00e9corateur ``@serializable`` peut \u00eatre utilis\u00e9 tel quel, ou \u00eatre appel\u00e9 avec les arguments suivants :\n\n- ``exclude`` (iterable, default=()). Sp\u00e9cifie les colonnes qui doivent \u00eatre exclues lors de la s\u00e9rialisation. Par d\u00e9faut, toutes les colonnes sont s\u00e9rialis\u00e9es.\n \nLa m\u00e9thode ``as_dict()`` contient les param\u00e8tre suivants :\n\n- ``recursif`` (boolean, default = False) : contr\u00f4le si la serialisation doit s\u00e9rialiser les mod\u00e8les enfants (relationships) de mani\u00e8re recursive\n- ``columns`` (iterable, default=()). Sp\u00e9cifie les colonnes qui doivent \u00eatre pr\u00e9sentes dans le dictionnaire en sortie. Si non sp\u00e9cifi\u00e9, le comportement par d\u00e9faut du d\u00e9corateur est adopt\u00e9.\n- ``relationships`` (iterable, default=()). Sp\u00e9cifie les relationnships qui doivent \u00eatre pr\u00e9sentes dans le dictionnaire en sortie. Par d\u00e9faut toutes les relationships sont prises si ``recursif=True``.\n\n### Les r\u00e9ponses\n\nLe fichier contient des d\u00e9corateurs de route Flask :\n\n- Le d\u00e9corateur ``@json_resp`` transforme l'objet retourn\u00e9 par la fonction en JSON. Renvoie une 404 si la valeur retourn\u00e9e par la fonction est None ou un tableau vide\n- Le d\u00e9corateur ``@json_resp_accept_empty_list`` transforme l'objet retourn\u00e9 par la fonction en JSON. Renvoie une 404 si la valeur retourn\u00e9e par la fonction est None et 200 si c'est un tableau vide\n- Le d\u00e9corateur ``@csv_resp`` tranforme l'objet retourn\u00e9 par la fonction en fichier CSV. La fonction doit retourner un tuple de ce format ``(file_name, data, columns, separator)``\n\n### Le mapping \u00e0 la vol\u00e9e\n\nLe fichier ``generic`` contient les classes ``GenericTable`` et ``GenericQuery`` permettant de faire des requ\u00eates sans d\u00e9finir de mod\u00e8le au pr\u00e9alable.\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/PnX-SI/Utils-Flask-SQLAlchemy", "keywords": "", "license": "", "maintainer": "Parcs nationaux des \u00c9crins et des C\u00e9vennes", "maintainer_email": "geonature@ecrins-parcnational.fr", "name": "utils-flask-sqlalchemy", "package_url": "https://pypi.org/project/utils-flask-sqlalchemy/", "platform": "", "project_url": "https://pypi.org/project/utils-flask-sqlalchemy/", "project_urls": { "Homepage": "https://github.com/PnX-SI/Utils-Flask-SQLAlchemy" }, "release_url": "https://pypi.org/project/utils-flask-sqlalchemy/0.2.6/", "requires_dist": [ "flask", "flask-sqlalchemy", "marshmallow", "python-dateutil", "pytest ; extra == 'tests'", "geoalchemy2 ; extra == 'tests'", "shapely ; extra == 'tests'", "jsonschema ; extra == 'tests'", "flask-marshmallow ; extra == 'tests'", "marshmallow-sqlalchemy ; extra == 'tests'" ], "requires_python": "", "summary": "Python lib of tools for Flask and SQLAlchemy", "version": "0.2.6", "yanked": false, "yanked_reason": null }, "last_serial": 12551874, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a9c9e8e2dbe0890314b2584a8e6c7a38", "sha256": "6b197c688478bc93144290f9eb218241cae63a18f8adb805e5af06debacf4393" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a9c9e8e2dbe0890314b2584a8e6c7a38", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16390, "upload_time": "2019-10-17T08:25:50", "upload_time_iso_8601": "2019-10-17T08:25:50.629258Z", "url": "https://files.pythonhosted.org/packages/ed/04/edfce4eb20d5156435b1a87db70b3039a28896947fc3bcc1f8da4783e34c/utils_flask_sqlalchemy-0.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c2eea715f8150047494d9c533c9650af", "sha256": "a8e59191dfb5db9235265c2be1197fee7132a9322e0c86674fd8995ef0df3863" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c2eea715f8150047494d9c533c9650af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3530, "upload_time": "2019-10-17T08:25:53", "upload_time_iso_8601": "2019-10-17T08:25:53.434778Z", "url": "https://files.pythonhosted.org/packages/6c/a1/098cfe280787f12b25697d621092b2bcf3506aa8461f771d71f7598d2b27/utils-flask-sqlalchemy-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "bf88eefdf727b7ea366c971ca9fa7b7c", "sha256": "5fd6cb4d563c95770fb4e1fd92ef8771778e5edc234c1cc9ce842c1d78500e34" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bf88eefdf727b7ea366c971ca9fa7b7c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20329, "upload_time": "2019-10-23T08:02:40", "upload_time_iso_8601": "2019-10-23T08:02:40.004158Z", "url": "https://files.pythonhosted.org/packages/89/a4/75cbb07c185f014c371e124c9d76280fabcb59dab407727f16d14b0c7be3/utils_flask_sqlalchemy-0.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "3f7c51ef0a2807e272c1aceecc6f1d3e", "sha256": "7d58dd1d8bc77bc0833cf3ce4a2ed2f5fa2a3030faca9bd577776bf8bc0bd555" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3f7c51ef0a2807e272c1aceecc6f1d3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6743, "upload_time": "2019-10-23T08:02:42", "upload_time_iso_8601": "2019-10-23T08:02:42.654962Z", "url": "https://files.pythonhosted.org/packages/fe/2e/128d81b336484ae66356588499190c03cc562e1681ae48f1522abc737cf9/utils-flask-sqlalchemy-0.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d03b25e936b9d4594181230b7097e366", "sha256": "eb999124dc21c761f54bb99cc2575fa5c83bb8f6cd921d8b8544958c580ad544" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d03b25e936b9d4594181230b7097e366", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20982, "upload_time": "2019-12-18T09:04:59", "upload_time_iso_8601": "2019-12-18T09:04:59.023632Z", "url": "https://files.pythonhosted.org/packages/1a/95/573acee6d6158a3913ca383f30924f8d04fa7bfc682f35e666394ae2333d/utils_flask_sqlalchemy-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "16c3f6c0a448d57ba06a086d4aca9c33", "sha256": "4b54b59584028009e8887d8482668c86b3c37c197538880fc85c5ea0ea5d34f3" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "16c3f6c0a448d57ba06a086d4aca9c33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7396, "upload_time": "2019-12-18T09:05:02", "upload_time_iso_8601": "2019-12-18T09:05:02.286143Z", "url": "https://files.pythonhosted.org/packages/6b/31/392e97505bcdb518780b05b0591995ebb5a60092a96e4cc870a3d343593f/utils-flask-sqlalchemy-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a01a848b4cdc08ab724f0dda5f7ac608", "sha256": "777a8a609a3da536c236d04fef5b51c60521ff710fba57023947ead3fb9f3d90" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a01a848b4cdc08ab724f0dda5f7ac608", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10850, "upload_time": "2020-06-17T14:00:49", "upload_time_iso_8601": "2020-06-17T14:00:49.161529Z", "url": "https://files.pythonhosted.org/packages/e0/6d/d628ab639c838333934cabb7601020d890035a6f1ad53ed790625ea9f9ff/utils_flask_sqlalchemy-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "5d09f9f31b259f8699162b6d1d0d050c", "sha256": "751778bf3509beec83def147f6573afa29278885920937e945cd4d388a3d4d00" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5d09f9f31b259f8699162b6d1d0d050c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7913, "upload_time": "2020-06-17T14:00:50", "upload_time_iso_8601": "2020-06-17T14:00:50.506779Z", "url": "https://files.pythonhosted.org/packages/fc/d9/33d625d202ef122c652bc13809d088795d6c023f41c7d024ab095dc346fd/utils-flask-sqlalchemy-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b6164cbf0e22aa92e12d19fdceae77cc", "sha256": "2a1c3b1769b2ecb778337b64ca8894317773f816836f1109d3c0a12b3c386ea1" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b6164cbf0e22aa92e12d19fdceae77cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21964, "upload_time": "2020-09-17T13:31:13", "upload_time_iso_8601": "2020-09-17T13:31:13.078600Z", "url": "https://files.pythonhosted.org/packages/87/1c/77b9fe5c25c8b277229fe2fbc38a2a261a9de18d581d54648007bde73b8c/utils_flask_sqlalchemy-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "38295e64000a7fdc8f0dbab93d2a0008", "sha256": "59137f5f0395933872f49743c22c3bdd8c98cc4265f7e5ba1be4317cba49b949" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.1.2.tar.gz", "has_sig": false, "md5_digest": "38295e64000a7fdc8f0dbab93d2a0008", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9111, "upload_time": "2020-09-17T13:31:18", "upload_time_iso_8601": "2020-09-17T13:31:18.273544Z", "url": "https://files.pythonhosted.org/packages/c3/91/abdf60daf876a8cae91c46697c0406063dfa87f9d5861b3138fd18779168/utils-flask-sqlalchemy-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "480ef4d1eb7d34ca38e6dd4a967e55ca", "sha256": "93e18bb565358698ac37cafb85103d6a2c8a2b58f3162756c6c019340c059d66" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "480ef4d1eb7d34ca38e6dd4a967e55ca", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22289, "upload_time": "2021-01-27T13:29:45", "upload_time_iso_8601": "2021-01-27T13:29:45.904888Z", "url": "https://files.pythonhosted.org/packages/e6/89/dc9c48bd174a74b301aa8aeec746fb33ae4c6ae2be10bb32c489f4b09d65/utils_flask_sqlalchemy-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "34628f0df1e25a8118699e253f6c8a16", "sha256": "d7a55c6ba8dc63d21af6374bdbbf3ce4b305aa4ce6890eb23734be0972c0f344" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.1.3.tar.gz", "has_sig": false, "md5_digest": "34628f0df1e25a8118699e253f6c8a16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9607, "upload_time": "2021-01-27T13:29:47", "upload_time_iso_8601": "2021-01-27T13:29:47.924937Z", "url": "https://files.pythonhosted.org/packages/db/9d/5a70f660d603de660977e678c3d7cab15c0ae78fdffa19491b0c76c09b05/utils-flask-sqlalchemy-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "9a193390b164d2dcde963d11c1b542ff", "sha256": "492069002e16fbb7cf81e865aead9e3e518022e6f0e2536360daeea7357e6e5c" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9a193390b164d2dcde963d11c1b542ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22302, "upload_time": "2021-02-03T15:21:36", "upload_time_iso_8601": "2021-02-03T15:21:36.226891Z", "url": "https://files.pythonhosted.org/packages/7f/60/20f8b897518baa0804d350952bd543747179a9b62c65ae363744060ce564/utils_flask_sqlalchemy-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "37ad9464782550c269417a4eebccc722", "sha256": "7dee6f774a30346cab581dfa871cf911b3ee3873346d7a48960b1580f5e76cde" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.1.4.tar.gz", "has_sig": false, "md5_digest": "37ad9464782550c269417a4eebccc722", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9637, "upload_time": "2021-02-03T15:21:40", "upload_time_iso_8601": "2021-02-03T15:21:40.727339Z", "url": "https://files.pythonhosted.org/packages/89/82/6a5e5ab5e6d9d2287dd9ae025daae28394257df8a84ff858e18becead51e/utils-flask-sqlalchemy-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "1edaed40e1ee8f7cfd80ce2df11a92c7", "sha256": "fb83028357013fbead355fc239b9ce53bc9877b03ebd4f0aabb2e85bb71a1ef2" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "1edaed40e1ee8f7cfd80ce2df11a92c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33473, "upload_time": "2022-01-12T11:50:42", "upload_time_iso_8601": "2022-01-12T11:50:42.774837Z", "url": "https://files.pythonhosted.org/packages/36/99/6f9ac6058f834fdad01f00013e781d1372a948d7471170d9c40814abeab4/utils_flask_sqlalchemy-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "becb53971679fde8d1b256a76d104df3", "sha256": "b1c0d88ad9db2eb23c7d2aaac07a01db80ffb9f147a00c77b43c0cac98dcb19c" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.2.6.tar.gz", "has_sig": false, "md5_digest": "becb53971679fde8d1b256a76d104df3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31432, "upload_time": "2022-01-12T11:50:44", "upload_time_iso_8601": "2022-01-12T11:50:44.008812Z", "url": "https://files.pythonhosted.org/packages/56/01/269185ee9c1c7e27f23d4799278014daa170dcc0486f2978782077409702/utils-flask-sqlalchemy-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1edaed40e1ee8f7cfd80ce2df11a92c7", "sha256": "fb83028357013fbead355fc239b9ce53bc9877b03ebd4f0aabb2e85bb71a1ef2" }, "downloads": -1, "filename": "utils_flask_sqlalchemy-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "1edaed40e1ee8f7cfd80ce2df11a92c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33473, "upload_time": "2022-01-12T11:50:42", "upload_time_iso_8601": "2022-01-12T11:50:42.774837Z", "url": "https://files.pythonhosted.org/packages/36/99/6f9ac6058f834fdad01f00013e781d1372a948d7471170d9c40814abeab4/utils_flask_sqlalchemy-0.2.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "becb53971679fde8d1b256a76d104df3", "sha256": "b1c0d88ad9db2eb23c7d2aaac07a01db80ffb9f147a00c77b43c0cac98dcb19c" }, "downloads": -1, "filename": "utils-flask-sqlalchemy-0.2.6.tar.gz", "has_sig": false, "md5_digest": "becb53971679fde8d1b256a76d104df3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31432, "upload_time": "2022-01-12T11:50:44", "upload_time_iso_8601": "2022-01-12T11:50:44.008812Z", "url": "https://files.pythonhosted.org/packages/56/01/269185ee9c1c7e27f23d4799278014daa170dcc0486f2978782077409702/utils-flask-sqlalchemy-0.2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }