From 20df344078153d27977012a470ac7d6729e1e61f Mon Sep 17 00:00:00 2001 From: Chill Date: Thu, 18 Apr 2024 14:44:17 +0800 Subject: [PATCH 1/2] #I9DAQT image2attachment show in select in media --- app_common/__manifest__.py | 2 +- app_common/models/base.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app_common/__manifest__.py b/app_common/__manifest__.py index 25f45f8e..f35c2aeb 100644 --- a/app_common/__manifest__.py +++ b/app_common/__manifest__.py @@ -39,7 +39,7 @@ { 'name': "odooAi Common Util and Tools,欧度智能基础核心优化", - 'version': '16.24.04.07', + 'version': '16.24.04.18', 'author': 'odooai.cn', 'category': 'Base', 'website': 'https://www.odooai.cn', diff --git a/app_common/models/base.py b/app_common/models/base.py index d8f545f1..57eda02f 100644 --- a/app_common/models/base.py +++ b/app_common/models/base.py @@ -126,6 +126,8 @@ class Base(models.AbstractModel): 'datas': image, 'name': file_name, 'website_id': False, + 'res_model': self._name, + 'res_id': self.id, }) attachment.generate_access_token() return attachment @@ -146,6 +148,8 @@ class Base(models.AbstractModel): 'datas': image, 'name': file_name, 'website_id': False, + 'res_model': self._name, + 'res_id': self.id, }) attachment.generate_access_token() return attachment From a3b77d22807048e0e128825060c1b38bfccc1ed4 Mon Sep 17 00:00:00 2001 From: Chill Date: Thu, 18 Apr 2024 17:46:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?prepare=20#I98BXG=20[app=5Fai=5Fmedia]?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=86=E9=A2=91=E8=BD=AC=E5=AD=98=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_common/models/base.py | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/app_common/models/base.py b/app_common/models/base.py index 57eda02f..312491d2 100644 --- a/app_common/models/base.py +++ b/app_common/models/base.py @@ -128,6 +128,7 @@ class Base(models.AbstractModel): 'website_id': False, 'res_model': self._name, 'res_id': self.id, + 'public': True, }) attachment.generate_access_token() return attachment @@ -150,6 +151,7 @@ class Base(models.AbstractModel): 'website_id': False, 'res_model': self._name, 'res_id': self.id, + 'public': True, }) attachment.generate_access_token() return attachment @@ -158,6 +160,29 @@ class Base(models.AbstractModel): return False else: return False + + @api.model + def _get_video_url2attachment(self, url): + if not self._app_check_sys_op(): + return False + video, file_name = get_video_url2attachment(url) + if video and file_name: + try: + attachment = self.env['ir.attachment'].create({ + 'datas': video, + 'name': file_name, + 'website_id': False, + 'res_model': self._name, + 'res_id': self.id, + 'public': True, + }) + attachment.generate_access_token() + return attachment + except Exception as e: + _logger.error('get_video_url2attachment error: %s' % str(e)) + return False + else: + return False def get_ua_type(self): return get_ua_type() @@ -203,6 +228,21 @@ def get_image_base642attachment(data): return jpeg_base64, file_name except Exception as e: return None, None + +def get_video_url2attachment(url): + if not url: + return None + try: + if url.startswith('//'): + url = 'https:%s' % url + response = requests.get(url, timeout=90) + video_content = response.content + except Exception as e: + return None, None + # return this video in base64 + base64_video = base64.b64encode(video_content) + file_name = url.split('/')[-1] + return base64_video, file_name def get_ua_type(): ua = request.httprequest.headers.get('User-Agent')