@@ -17,16 +17,14 @@ class IrBinary(models.AbstractModel):
17
17
18
18
_inherit = "ir.binary"
19
19
20
- def _record_to_stream (self , record , field_name ):
21
- # Extend base implementation to support attachment stored into a
22
- # filesystem storage
23
- fs_attachment = None
20
+ def _get_fs_attachment_for_field (self , record , field_name ):
24
21
if record ._name == "ir.attachment" and record .fs_filename :
25
- fs_attachment = record
22
+ return record
23
+
26
24
record .check_field_access_rights ("read" , [field_name ])
27
25
field_def = record ._fields [field_name ]
28
- if field_def .attachment and not field_def .compute and not field_def . related :
29
- field_attachment = (
26
+ if field_def .attachment and field_def .store :
27
+ fs_attachment = (
30
28
self .env ["ir.attachment" ]
31
29
.sudo ()
32
30
.search (
@@ -38,8 +36,14 @@ def _record_to_stream(self, record, field_name):
38
36
limit = 1 ,
39
37
)
40
38
)
41
- if field_attachment .fs_filename :
42
- fs_attachment = field_attachment
39
+ if fs_attachment and fs_attachment .fs_filename :
40
+ return fs_attachment
41
+ return None
42
+
43
+ def _record_to_stream (self , record , field_name ):
44
+ # Extend base implementation to support attachment stored into a
45
+ # filesystem storage
46
+ fs_attachment = self ._get_fs_attachment_for_field (record , field_name )
43
47
if fs_attachment :
44
48
return FsStream .from_fs_attachment (fs_attachment )
45
49
return super ()._record_to_stream (record , field_name )
@@ -101,6 +105,11 @@ def _get_image_stream_from(
101
105
if value :
102
106
record = value .attachment
103
107
field_name = "raw"
108
+ elif field_def .type in ("binary" ):
109
+ fs_attachment = self ._get_fs_attachment_for_field (record , field_name )
110
+ if fs_attachment :
111
+ record = fs_attachment
112
+ field_name = "raw"
104
113
stream = super ()._get_image_stream_from (
105
114
record ,
106
115
field_name = field_name ,
0 commit comments