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. -->
-
+