{ "info": { "author": "jssuzanne", "author_email": "jssuzanne@anybox.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. This file is a part of the AnyBlok / Attachment project\n..\n.. Copyright (C) 2017 Jean-Sebastien SUZANNE \n..\n.. This Source Code Form is subject to the terms of the Mozilla Public License,\n.. v. 2.0. If a copy of the MPL was not distributed with this file,You can\n.. obtain one at http://mozilla.org/MPL/2.0/.\n\n.. image:: https://travis-ci.org/AnyBlok/anyblok_attachment.svg?branch=master\n :target: https://travis-ci.org/AnyBlok/anyblok_attachment\n :alt: Build status\n\n.. image:: https://coveralls.io/repos/github/AnyBlok/anyblok_attachment/badge.svg?branch=master\n :target: https://coveralls.io/github/AnyBlok/anyblok_attachment?branch=master\n :alt: Coverage\n\n.. image:: https://img.shields.io/pypi/v/anyblok_attachment.svg\n :target: https://pypi.python.org/pypi/anyblok_attachment/\n :alt: Version status\n\n.. image:: https://readthedocs.org/projects/anyblok-attachment/badge/?version=latest\n :alt: Documentation Status\n :scale: 100%\n :target: https://doc.anyblok-attachment.anyblok.org/?badge=latest\n\n\nAnyBlok attachment\n==================\n\nImprove `AnyBlok `_ to add attachment and report\nsystem.\n\n+-----------------------+-------------------+---------------------------------------------------------+\n| Blok | Dependancies | Description |\n+=======================+===================+=========================================================+\n| **attachment** | | Stock and historize Document |\n+-----------------------+-------------------+---------------------------------------------------------+\n| **report** | **attachment** | Core of the reporting engine for AnyBlok. This blok |\n| | | add helper to generate a Document, but it is not a |\n| | | templating engine. |\n+-----------------------+-------------------+---------------------------------------------------------+\n| **report-format** | **attachment** | Simple templating engine, based on ``str.format(...)`` |\n| | **report** | |\n+-----------------------+-------------------+---------------------------------------------------------+\n| **wkhtml2pdf** | **attachment** | Add Model add method to convert HTML 2 PDF. |\n| | **report** | |\n+-----------------------+-------------------+---------------------------------------------------------+\n\n\nAnyBlok / Attachment is released under the terms of the `Mozilla Public License`.\n\nSee the `latest documentation `_\n\n.. This file is a part of the AnyBlok / Attachment project\n..\n.. Copyright (C) 2017 Jean-Sebastien SUZANNE \n..\n.. This Source Code Form is subject to the terms of the Mozilla Public License,\n.. v. 2.0. If a copy of the MPL was not distributed with this file,You can\n.. obtain one at http://mozilla.org/MPL/2.0/.\n\nFront Matter\n============\n\nInformation about the AnyBlok / Attachment project.\n\nProject Homepage\n----------------\n\nAnyBlok is hosted on `github `_ - the main project\npage is at https://github.com/AnyBlok/anyblok_attachment. Source code is\ntracked here using `GIT `_.\n\nReleases and project status are available on Pypi at\nhttp://pypi.python.org/pypi/anyblok_attachment.\n\nThe most recent published version of this documentation should be at\nhttp://doc.anyblok-attachment.anyblok.org.\n\nProject Status\n--------------\n\nAnyBlok with attachment is currently in beta status and is expected to be fairly\nstable. Users should take care to report bugs and missing features on an as-needed\nbasis. It should be expected that the development version may be required\nfor proper implementation of recently repaired issues in between releases;\n\nInstallation\n------------\n\nInstall released versions of AnyBlok from the Python package index with\n`pip `_ or a similar tool::\n\n pip install anyblok_attachment\n\nInstallation via source distribution is via the ``setup.py`` script::\n\n python setup.py install\n\nInstallation will add the ``anyblok`` commands to the environment.\n\nUnit Test\n---------\n\nRun the test with ``nose``::\n\n pip install nose\n nosetests anyblok_attachment/tests\n\nDependencies\n------------\n\nAnyBlok / Attachment works with **Python 3.3** and later. The install process will\nensure that `AnyBlok `_ is installed, in addition to other \ndependencies. The latest version of them is strongly recommended.\n\nAuthor\n------\n\nJean-S\u00e9bastien Suzanne\n\nContributors\n------------\n\n`Anybox `_ team:\n\n* Jean-S\u00e9bastien Suzanne\n\n`Sensee `_ team:\n\n* Franck Bret\n* Hugo Quezada\n\nBugs\n----\n\nBugs and feature enhancements to AnyBlok should be reported on the `Issue\ntracker `_.\n\n.. This file is a part of the AnyBlok / Attachment project\n..\n.. Copyright (C) 2017 Jean-Sebastien SUZANNE \n.. Copyright (C) 2018 Jean-Sebastien SUZANNE \n..\n.. This Source Code Form is subject to the terms of the Mozilla Public License,\n.. v. 2.0. If a copy of the MPL was not distributed with this file,You can\n.. obtain one at http://mozilla.org/MPL/2.0/.\n\n.. contents::\n\nCHANGELOG\n=========\n\n2.0.0 (2018-11-28)\n------------------\n\n* Removed the sequence created by the document. Replaced it by a simple counter on latest document\n\n.. note::\n\n You can use this script before migration to update the database::\n\n CREATE FUNCTION update_attachment() RETURNS void AS $$\n DECLARE\n -- declarations\n target RECORD;\n BEGIN\n FOR target IN select uuid, version from attachment_document where version_number is null LOOP\n UPDATE attachment_document SET version_number = CAST(substring(target.version from '..$') as Integer) WHERE uuid = target.uuid AND version = target.version;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n\n CREATE FUNCTION update_sequence() RETURNS void AS $$\n DECLARE\n -- declarations\n seq RECORD;\n BEGIN\n FOR seq IN select id, seq_name from system_sequence where code ilike 'Attachment.Document#%' LOOP\n EXECUTE 'DROP SEQUENCE ' || quote_ident(seq.seq_name);\n DELETE FROM system_sequence where id = seq.id;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n\n ALTER TABLE attachment_document DROP CONSTRAINT anyblok_pk_attachment_document;\n ALTER TABLE attachment_document ADD COLUMN version_number INTEGER;\n select update_attachment();\n select update_sequence();\n ALTER TABLE attachment_document ADD PRIMARY KEY (uuid, version_number);\n UPDATE system_blok SET installed_version = '2.0.0' WHERE name = 'attachment';\n DROP FUNCTION update_attachment();\n DROP FUNCTION update_sequence();\n\n\n1.2.0 (2018-09-14)\n------------------\n\n* Allow to get another field to represent the file\n* PR #4: Added a column name on the template to identify them easyly (@GohuHQ)\n* PR #3: Fixed option name for wkhtmltopdf (@GohuHQ)\n\n1.1.1 (2018-06-05)\n------------------\n\n* Fix the mixins come from **anyblok_mixins**\n\n1.1.0 (2018-05-16)\n------------------\n\n* [ADD] add Mixin ``Mixin.LatestDocument`` and ``Mixin.VersionedDocument``\n to help the developer to get **latest_document** or **versioned_document**\n\n1.0.2 (2018-02-24)\n------------------\n\n* [REF] Anyblok 0.17.0 changed setter to add application and application \n groups, So I had to adapt the existing to use new setter\n\n1.0.1 (2018-01-11)\n------------------\n\n* [FIX] ``Mixin.WkHtml2Pdf`` check also if the configuration changed for \n **Template.check_if_file_must_be_generated**\n\n1.0.0 (2018-01-10)\n------------------\n\n* [ADD] **attachment** blok: stock versionned file\n* [ADD] **report** blok: create versionned file from template\n* [ADD] **report-format** blok: template type\n* [ADD] **wkhtml2pdf** blok: convert html to pdf in the template\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://docs.anyblok-attachment.anyblok.org/2.0.0", "keywords": "attachment", "license": "", "maintainer": "", "maintainer_email": "", "name": "anyblok_attachment", "package_url": "https://pypi.org/project/anyblok_attachment/", "platform": "", "project_url": "https://pypi.org/project/anyblok_attachment/", "project_urls": { "Homepage": "http://docs.anyblok-attachment.anyblok.org/2.0.0" }, "release_url": "https://pypi.org/project/anyblok_attachment/2.0.0/", "requires_dist": null, "requires_python": "", "summary": "Versionned attachment for AnyBlok", "version": "2.0.0" }, "last_serial": 4537500, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "1da0022f4f5b3259c90ddfa55c2e0c6f", "sha256": "b74447008eafd57b02288be3388059028b97903e7460471584a1796b8c42100c" }, "downloads": -1, "filename": "anyblok_attachment-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1da0022f4f5b3259c90ddfa55c2e0c6f", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 50893, "upload_time": "2018-01-10T10:26:14", "url": "https://files.pythonhosted.org/packages/8e/19/a966e186bc6fa053448f2c79a196930195abe788ed4fe9ce450044f61200/anyblok_attachment-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0d86b0e87f208176f6483aeef486f2a", "sha256": "0878b660981a51632821ba50411841547c74c2bd1db736b4170e1c91085d52d1" }, "downloads": -1, "filename": "anyblok_attachment-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d0d86b0e87f208176f6483aeef486f2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23006, "upload_time": "2018-01-10T10:26:06", "url": "https://files.pythonhosted.org/packages/f5/56/6d76a77d60759f5fbf06d09f6abbf20c555b96a928efc24fec47529bce5f/anyblok_attachment-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "03cabbf277099064fb3ea0de091f2839", "sha256": "72a386df5f207d322fb58094f8f1747c5101a0fe83153b2e744a0f1d4fbc4a24" }, "downloads": -1, "filename": "anyblok_attachment-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "03cabbf277099064fb3ea0de091f2839", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 51323, "upload_time": "2018-01-11T13:27:31", "url": "https://files.pythonhosted.org/packages/ca/5d/c942f1d009fae2f48e38a1dfe65f2cc63564cc0c536dcf9f6ea6540733b0/anyblok_attachment-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7876e6a60152f8d596f06c93a8705f30", "sha256": "890bd34b3f82d6754199f24722a4b0790771d813dcd4e28750dcc3ea285d2f10" }, "downloads": -1, "filename": "anyblok_attachment-1.0.1.tar.gz", "has_sig": false, "md5_digest": "7876e6a60152f8d596f06c93a8705f30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23380, "upload_time": "2018-01-11T13:27:27", "url": "https://files.pythonhosted.org/packages/4b/96/cd23cf8ac9dea32f2db22bdc2a16d21f32c8d86011e5d06b2764c852dbc9/anyblok_attachment-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "3ce774918f8a2ac9e5fcf412722c22b5", "sha256": "15e415ba1ce4ab56a3375103a99e3ddfd41f8474d2d08969b08182be8b2da4db" }, "downloads": -1, "filename": "anyblok_attachment-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3ce774918f8a2ac9e5fcf412722c22b5", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 46107, "upload_time": "2018-02-24T14:01:21", "url": "https://files.pythonhosted.org/packages/84/5d/03cb1bd481b14aa114cee100681e47de0a11a809ee14d4e9bf7c10743f05/anyblok_attachment-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ff9913d5b302550da3314cfcf7fdbc2", "sha256": "32ebb8699d223cd97a92ab2e87135f51b3944f1044b70750580beed97219df22" }, "downloads": -1, "filename": "anyblok_attachment-1.0.2.tar.gz", "has_sig": false, "md5_digest": "1ff9913d5b302550da3314cfcf7fdbc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18098, "upload_time": "2018-02-24T14:01:18", "url": "https://files.pythonhosted.org/packages/4c/df/2b6c47bc369844f76d638b4c6bb2b96427a15ab25d0af7d179ac51440032/anyblok_attachment-1.0.2.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "047d0cd0b263dd1b84df7b3ce46a5132", "sha256": "bbe7ef6c062ecd3724935eea16bf2a51c3fb24ad576c29647d28626f4f2247a2" }, "downloads": -1, "filename": "anyblok_attachment-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "047d0cd0b263dd1b84df7b3ce46a5132", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 47670, "upload_time": "2018-05-16T16:12:44", "url": "https://files.pythonhosted.org/packages/9d/87/cada7fdbe04d6d4bcbd0f780b72c6f4d0f2aa4668b5b483bc0a9ac521e20/anyblok_attachment-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a885d863b07e51f353e9111db7ee7bb", "sha256": "718378ae7c611d6d6623ea464af5914a41514bb612913e71a1abbc148bf669d3" }, "downloads": -1, "filename": "anyblok_attachment-1.1.0.tar.gz", "has_sig": false, "md5_digest": "8a885d863b07e51f353e9111db7ee7bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19093, "upload_time": "2018-05-16T16:12:42", "url": "https://files.pythonhosted.org/packages/53/9e/7df8f4a0e72de26db047b1fbeac49379fadcbe712c25b8f1a9e91bc2d73f/anyblok_attachment-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "aaebd8152c7d64394f984c2e503e15a6", "sha256": "a9f1cd7b1d365f8c55cfbfc1318243ac3d768995b677bffe9489455a5eb9871d" }, "downloads": -1, "filename": "anyblok_attachment-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "aaebd8152c7d64394f984c2e503e15a6", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 47707, "upload_time": "2018-06-05T09:30:55", "url": "https://files.pythonhosted.org/packages/ce/b4/bf7b98c41856c9e702699054351e22a5c7622c374f9a738ce3082d01d3fe/anyblok_attachment-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "645ef789f0a75bbf721de5348dc8a333", "sha256": "21f53365171f2a56cfa908c9e4cc30a741c7b405475a70d52650fced70893eb9" }, "downloads": -1, "filename": "anyblok_attachment-1.1.1.tar.gz", "has_sig": false, "md5_digest": "645ef789f0a75bbf721de5348dc8a333", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19182, "upload_time": "2018-06-05T09:30:52", "url": "https://files.pythonhosted.org/packages/ef/c9/b2d27eacee2d2f4208f88566f873c30e5fc8a782bdd300e7fcf2eef91e5b/anyblok_attachment-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7cdfe612dfd7d79c51de8bca2325efe3", "sha256": "b9509c4e222e281321d13454a1f4700556a1defea273ea41ad0b5f03ac595ab5" }, "downloads": -1, "filename": "anyblok_attachment-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7cdfe612dfd7d79c51de8bca2325efe3", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 48325, "upload_time": "2018-09-14T14:54:33", "url": "https://files.pythonhosted.org/packages/6c/62/124e7f5db91c2651bf0841c4e3a0280d95aa7b5f0004eb66b8d79f6890ff/anyblok_attachment-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "58f82cb1ff2f051cc8a3fe9efa2d2185", "sha256": "05aa0e99addda2556e9cd63d13532b0b097ca8617ec230348ccb36eb459920c9" }, "downloads": -1, "filename": "anyblok_attachment-1.2.0.tar.gz", "has_sig": false, "md5_digest": "58f82cb1ff2f051cc8a3fe9efa2d2185", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19875, "upload_time": "2018-09-14T14:54:31", "url": "https://files.pythonhosted.org/packages/cf/bc/03ff4fb917a3637d264e5a0cc96011cd5071ed60712c86e5f9f020850bda/anyblok_attachment-1.2.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "5fb73843f6ac8465b9069b62483b21f2", "sha256": "f5fe870ac50e2ebb2ff63378ef117ff804528e1dd4ed3033afe39a9076bbbaf4" }, "downloads": -1, "filename": "anyblok_attachment-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5fb73843f6ac8465b9069b62483b21f2", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 49484, "upload_time": "2018-11-28T08:21:21", "url": "https://files.pythonhosted.org/packages/08/97/319d850ab82fd7b322683d7e9e91905cc0ec217aa75b1cf6e54545be8326/anyblok_attachment-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38928c30a58fb7471bb05fc8d833ff1e", "sha256": "21249035a7559a5bea0f47109e32535ef1ee9d5d6c7b45900ed3598d3fd9b73a" }, "downloads": -1, "filename": "anyblok_attachment-2.0.0.tar.gz", "has_sig": false, "md5_digest": "38928c30a58fb7471bb05fc8d833ff1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21061, "upload_time": "2018-11-28T08:21:18", "url": "https://files.pythonhosted.org/packages/d7/fb/291932800f3dc562f1627cdd7ba56ec0dc25060dc54d82455b67f5a88ad8/anyblok_attachment-2.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5fb73843f6ac8465b9069b62483b21f2", "sha256": "f5fe870ac50e2ebb2ff63378ef117ff804528e1dd4ed3033afe39a9076bbbaf4" }, "downloads": -1, "filename": "anyblok_attachment-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5fb73843f6ac8465b9069b62483b21f2", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 49484, "upload_time": "2018-11-28T08:21:21", "url": "https://files.pythonhosted.org/packages/08/97/319d850ab82fd7b322683d7e9e91905cc0ec217aa75b1cf6e54545be8326/anyblok_attachment-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38928c30a58fb7471bb05fc8d833ff1e", "sha256": "21249035a7559a5bea0f47109e32535ef1ee9d5d6c7b45900ed3598d3fd9b73a" }, "downloads": -1, "filename": "anyblok_attachment-2.0.0.tar.gz", "has_sig": false, "md5_digest": "38928c30a58fb7471bb05fc8d833ff1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21061, "upload_time": "2018-11-28T08:21:18", "url": "https://files.pythonhosted.org/packages/d7/fb/291932800f3dc562f1627cdd7ba56ec0dc25060dc54d82455b67f5a88ad8/anyblok_attachment-2.0.0.tar.gz" } ] }