Skip to main content

Versionned attachment for AnyBlok

Project description

Python versions Build status Coverage Version status Documentation Status

AnyBlok attachment

Improve AnyBlok to add attachment and report system.

Blok Dependancies Description
attachment   Stock and historize Document
report attachment Core of the reporting engine for AnyBlok. This blok add helper to generate a Document, but it is not a templating engine.
report-format attachment report Simple templating engine, based on str.format(...)
wkhtml2pdf attachment report Add Model add method to convert HTML 2 PDF.
attachment-postgres attachment Add Model add method to convert HTML 2 PDF.

AnyBlok / Attachment is released under the terms of the Mozilla Public License.

See the latest documentation

Front Matter

Information about the AnyBlok / Attachment project.

Project Homepage

AnyBlok is hosted on github - the main project page is at Source code is tracked here using GIT.

Releases and project status are available on Pypi at

The most recent published version of this documentation should be at

Project Status

AnyBlok with attachment is currently in beta status and is expected to be fairly stable. Users should take care to report bugs and missing features on an as-needed basis. It should be expected that the development version may be required for proper implementation of recently repaired issues in between releases;


Install released versions of AnyBlok from the Python package index with pip or a similar tool:

pip install anyblok_attachment

Installation via source distribution is via the script:

python install

Installation will add the anyblok commands to the environment.

Unit Test

Run the test with nose:

pip install nose
nosetests anyblok_attachment/tests


AnyBlok / Attachment works with Python 3.5 and later. The install process will ensure that AnyBlok is installed, in addition to other dependencies. The latest version of them is strongly recommended.


Jean-Sébastien Suzanne


Anybox team:

  • Jean-Sébastien Suzanne

Sensee team:

  • Franck Bret
  • Hugo Quezada


2.1.0 (2020-05-05)

  • Removed Python 3.4 capability
  • Removed Python 3.5 capability
  • Refactored unittest, replaced nose by pytest
  • Added attachment_postgres blok, only for postgresql driver, the LargeBinary column is replaced by LargeObject column

2.0.0 (2018-11-28)

  • Removed the sequence created by the document. Replaced it by a simple counter on latest document


You can use this script before migration to update the database:

CREATE FUNCTION update_attachment() RETURNS void AS $$
        -- declarations
        target RECORD;
        FOR target IN select uuid, version from attachment_document where version_number is null LOOP
            UPDATE attachment_document SET version_number = CAST(substring(target.version from '..$') as Integer) WHERE uuid = target.uuid AND version = target.version;
        END LOOP;
$$ LANGUAGE plpgsql;

CREATE FUNCTION update_sequence() RETURNS void AS $$
        -- declarations
        seq RECORD;
        FOR seq IN select id, seq_name from system_sequence where code ilike 'Attachment.Document#%' LOOP
            EXECUTE 'DROP SEQUENCE ' || quote_ident(seq.seq_name);
            DELETE FROM system_sequence where id =;
        END LOOP;
$$ LANGUAGE plpgsql;

ALTER TABLE attachment_document DROP CONSTRAINT anyblok_pk_attachment_document;
ALTER TABLE attachment_document ADD COLUMN version_number INTEGER;
select update_attachment();
select update_sequence();
ALTER TABLE attachment_document ADD PRIMARY KEY (uuid, version_number);
UPDATE system_blok SET installed_version = '2.0.0' WHERE name = 'attachment';
DROP FUNCTION update_attachment();
DROP FUNCTION update_sequence();

1.2.0 (2018-09-14)

  • Allow to get another field to represent the file
  • PR #4: Added a column name on the template to identify them easyly (@GohuHQ)
  • PR #3: Fixed option name for wkhtmltopdf (@GohuHQ)

1.1.1 (2018-06-05)

  • Fix the mixins come from anyblok_mixins

1.1.0 (2018-05-16)

  • [ADD] add Mixin Mixin.LatestDocument and Mixin.VersionedDocument to help the developer to get latest_document or versioned_document

1.0.2 (2018-02-24)

  • [REF] Anyblok 0.17.0 changed setter to add application and application groups, So I had to adapt the existing to use new setter

1.0.1 (2018-01-11)

  • [FIX] Mixin.WkHtml2Pdf check also if the configuration changed for Template.check_if_file_must_be_generated

1.0.0 (2018-01-10)

  • [ADD] attachment blok: stock versionned file
  • [ADD] report blok: create versionned file from template
  • [ADD] report-format blok: template type
  • [ADD] wkhtml2pdf blok: convert html to pdf in the template

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for anyblok_attachment, version 2.1.0
Filename, size File type Python version Upload date Hashes
Filename, size anyblok_attachment-2.1.0-py3-none-any.whl (52.6 kB) File type Wheel Python version 3.7 Upload date Hashes View
Filename, size anyblok_attachment-2.1.0.tar.gz (24.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page