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