diff --git a/.hgignore b/.hgignore index 1b85cd9..913ee1b 100644 --- a/.hgignore +++ b/.hgignore @@ -1,3 +1,6 @@ syntax: glob __pycache__/* locale/convert_de2en.py +build/* +mds_cashbook_media.egg-info/* +dist/* diff --git a/README.rst b/README.rst index ab62e82..1b1abcd 100644 --- a/README.rst +++ b/README.rst @@ -14,6 +14,15 @@ Requires Changes ======= +*6.0.2 - 23.01.2023* + +- add: show image in tab 'image/pdf' + +*6.0.1 - 29.11.2022* + +- fix: exception when image type unknown + *6.0.0 - 14.10.2022* - init + diff --git a/line.py b/line.py index a7a482d..34e32af 100644 --- a/line.py +++ b/line.py @@ -5,7 +5,7 @@ import mimetypes, magic from io import BytesIO -from PIL import Image +from PIL import Image, UnidentifiedImageError from trytond.model import fields from trytond.pool import Pool, PoolMeta from trytond.config import config @@ -28,20 +28,38 @@ except : image_limit = 2000 +STATES2 = {} +STATES2.update(STATES) +DEPENDS2 = [] +DEPENDS2.extend(DEPENDS) + + class Line(metaclass=PoolMeta): __name__ = 'cashbook.line' media = fields.Binary(string='Image of PDF', filename='media_name', file_id='media_id', store_prefix=store_prefix, - states=STATES, depends=DEPENDS) + states=STATES2, depends=DEPENDS2) media_name = fields.Char(string='File name', states={ 'required': Bool(Eval('media')), - 'readonly': STATES['readonly'], - }, depends=DEPENDS) + 'readonly': STATES2['readonly'], + }, depends=DEPENDS2) media_id = fields.Char(string='File ID', readonly=True) media_mime = fields.Char(string='MIME', readonly=True) media_size = fields.Integer(string='File size', readonly=True) + media_image = fields.Function(fields.Binary(string='Image', readonly=True, + states={ + 'invisible': ~Eval('media_mime', '').in_(['image/png', 'image/jpg', 'image/jpeg']), + }, depends=['media_mime']), + 'on_change_with_media_image') + + @fields.depends('media', 'media_mime') + def on_change_with_media_image(self, name=True): + """ return binary if its a image + """ + if (self.media_mime or '-').startswith('image/'): + return self.media @classmethod def _identify_file(cls, data, mime=True): @@ -65,7 +83,10 @@ class Line(metaclass=PoolMeta): """ image_data2 = None with BytesIO(image_data) as fhdl: - image = Image.open(fhdl, 'r') + try : + image = Image.open(fhdl, 'r') + except UnidentifiedImageError: + raise UserError(gettext('cashbook_media.msg_file_unknown_type')) (width, height) = image.size if (width > image_limit) or (height > image_limit): diff --git a/locale/de.po b/locale/de.po index 69df498..7618e5c 100644 --- a/locale/de.po +++ b/locale/de.po @@ -14,6 +14,10 @@ msgctxt "model:ir.message,text:msg_file_invalid_mime" msgid "The file type '%(fmime)s' of the record '%(recname)s' is not allowed. (allowed: PNG, JPG, PDF)" msgstr "Der Dateityp '%(fmime)s' des Datensatzes '%(recname)s' ist nicht zugelassen. (erlaubt: PNG, JPG, PDF)" +msgctxt "model:ir.message,text:msg_file_unknown_type" +msgid "cannot identify image file" +msgstr "Bilddatei kann nicht identifiziert werden" + ################# # cashbook.line # @@ -42,3 +46,6 @@ msgctxt "field:cashbook.line,media_size:" msgid "File size" msgstr "Dateigröße" +msgctxt "field:cashbook.line,media_image:" +msgid "Image" +msgstr "Bild" diff --git a/locale/en.po b/locale/en.po index 956e614..5ff9df6 100644 --- a/locale/en.po +++ b/locale/en.po @@ -10,6 +10,10 @@ msgctxt "model:ir.message,text:msg_file_invalid_mime" msgid "The file type '%(fmime)s' of the record '%(recname)s' is not allowed. (allowed: PNG, JPG, PDF)" msgstr "The file type '%(fmime)s' of the record '%(recname)s' is not allowed. (allowed: PNG, JPG, PDF)" +msgctxt "model:ir.message,text:msg_file_unknown_type" +msgid "cannot identify image file" +msgstr "cannot identify image file" + msgctxt "view:cashbook.line:" msgid "Image/PDF" msgstr "Image/PDF" diff --git a/message.xml b/message.xml index d88ff9a..3582d1e 100644 --- a/message.xml +++ b/message.xml @@ -11,6 +11,9 @@ full copyright notices and license terms. --> The file type '%(fmime)s' of the record '%(recname)s' is not allowed. (allowed: PNG, JPG, PDF) + + cannot identify image file + diff --git a/tryton.cfg b/tryton.cfg index f603792..cf58510 100644 --- a/tryton.cfg +++ b/tryton.cfg @@ -1,7 +1,8 @@ [tryton] -version=6.0.0 +version=6.0.2 depends: cashbook xml: message.xml line.xml + diff --git a/versiondep.txt b/versiondep.txt index 7a98af6..3853a6e 100644 --- a/versiondep.txt +++ b/versiondep.txt @@ -1 +1 @@ -cashbook;6.0.18;6.0.999;mds +cashbook;6.0.22;6.0.999;mds diff --git a/view/line_form.xml b/view/line_form.xml index 6785333..0d80ebc 100644 --- a/view/line_form.xml +++ b/view/line_form.xml @@ -13,10 +13,10 @@ full copyright notices and license terms. -->