Skip to content

Commit 7641b1a

Browse files
committed
[IMP] contentgrid: Enforce storage in ContentGrid
1 parent ee724cc commit 7641b1a

File tree

5 files changed

+61
-4
lines changed

5 files changed

+61
-4
lines changed

contentgrid/models/contentgrid_configuration.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ class ContentgridConfiguration(models.Model):
5050
allow_manual_send = fields.Boolean(
5151
default=False,
5252
)
53+
use_contentgrid_for_storage = fields.Boolean(
54+
help="Use ContentGrid for storage data"
55+
)
56+
contentgrid_storage_model = fields.Char()
57+
contentgrid_storage_field = fields.Char()
5358

5459
@api.constrains("configuration_data")
5560
def _check_configuration_data(self):
@@ -181,3 +186,20 @@ def _push_to_contentgrid(self, attachment, record):
181186
timeout=self.connection_id._timeout,
182187
)
183188
response.raise_for_status()
189+
storage_model = self.contentgrid_storage_model
190+
storage_field = self.contentgrid_storage_field
191+
if (
192+
self.use_contentgrid_for_storage
193+
and storage_model
194+
and storage_field
195+
and not attachment.contentgrid_connection_id
196+
):
197+
url = f"{storage_model}s/{processed[storage_model][0]}/{storage_field}"
198+
attachment.write(
199+
{
200+
"contentgrid_connection_id": self.connection_id.id,
201+
"contentgrid_url": url,
202+
"raw": False,
203+
"mimetype": attachment.mimetype,
204+
}
205+
)

contentgrid/models/contentgrid_connection.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ class ContentgridConnection(models.Model):
1515
openid_url = fields.Char(groups="base.group_system", required=True)
1616
openid_client_id = fields.Char(groups="base.group_system", required=True)
1717
openid_client_secret = fields.Char(groups="base.group_system", required=True)
18-
username = fields.Char(groups="base.group_system", required=True)
19-
password = fields.Char(groups="base.group_system", required=True)
2018
base_url = fields.Char(
2119
help="Base URL of the Contentgrid instance without models",
2220
required=True,

contentgrid/models/ir_attachment.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Copyright 2025 Dixmit
22
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
33

4+
import requests
5+
46
from odoo import api, fields, models
57

68
from odoo.addons.mail.tools.discuss import Store
@@ -16,6 +18,8 @@ class IrAttachment(models.Model):
1618
string="Content Grid Data",
1719
ondelete="cascade",
1820
)
21+
contentgrid_connection_id = fields.Many2one("contentgrid.connection")
22+
contentgrid_url = fields.Char()
1923

2024
def _push_to_contentgrid(self, manual_send=False):
2125
self.ensure_one()
@@ -62,3 +66,29 @@ def get_contentgrid_data(self):
6266
return [
6367
record._get_contentgrid_data() for record in self.contentgrid_ids.sudo()
6468
]
69+
70+
@api.depends("contentgrid_connection_id", "contentgrid_url")
71+
def _compute_raw(self):
72+
for attachment in self.filtered(lambda r: r.contentgrid_connection_id):
73+
access_token = attachment.contentgrid_connection_id._get_token()
74+
headers = {
75+
"Authorization": f"Bearer {access_token}",
76+
}
77+
data_request = requests.get(
78+
f"{attachment.contentgrid_connection_id.base_url}/{attachment.contentgrid_url}",
79+
headers=headers,
80+
timeout=attachment.contentgrid_connection_id._timeout,
81+
)
82+
try:
83+
data_request.raise_for_status()
84+
attachment.raw = data_request.content
85+
except requests.HTTPError:
86+
attachment.raw = b""
87+
return super(
88+
IrAttachment, self.filtered(lambda r: not r.contentgrid_connection_id)
89+
)._compute_raw()
90+
91+
def _set_attachment_data(self, asbytes):
92+
if self.contentgrid_connection_id:
93+
return
94+
return super()._set_attachment_data(asbytes)

contentgrid/views/contentgrid_configuration.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,15 @@
1919
<field name="model_id" />
2020
<field name="connection_id" />
2121
<field name="allow_manual_send" />
22+
<field name="use_contentgrid_for_storage" />
23+
<field
24+
name="contentgrid_storage_model"
25+
invisible="not use_contentgrid_for_storage"
26+
/>
27+
<field
28+
name="contentgrid_storage_field"
29+
invisible="not use_contentgrid_for_storage"
30+
/>
2231
<field name="res_model" invisible="1" />
2332
<field name="active" invisible="1" />
2433
</group>

contentgrid/views/contentgrid_connection.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030
<field name="openid_url" />
3131
<field name="openid_client_id" />
3232
<field name="openid_client_secret" password="True" />
33-
<field name="username" />
34-
<field name="password" password="True" />
3533
<field name="base_url" />
3634
<field name="app_url" />
3735
</group>

0 commit comments

Comments
 (0)