From 691725f4d10dcadc380fb39a9a627ff525c6882a Mon Sep 17 00:00:00 2001 From: Thomas Binsfeld Date: Thu, 5 May 2022 17:11:40 +0200 Subject: [PATCH] [ADD] cmis_mail: store mail composer attachments in CMIS --- cmis_mail/__init__.py | 1 + cmis_mail/__manifest__.py | 29 +++++++ cmis_mail/i18n/cmis_mail.pot | 39 +++++++++ cmis_mail/i18n/fr.po | 39 +++++++++ cmis_mail/static/description/icon.png | Bin 0 -> 20314 bytes cmis_mail/static/description/index.html | 38 +++++++++ cmis_mail/static/description/main_icon.png | Bin 0 -> 36989 bytes cmis_mail/wizards/__init__.py | 1 + cmis_mail/wizards/mail_compose_message.py | 88 +++++++++++++++++++++ cmis_mail/wizards/mail_compose_message.xml | 21 +++++ setup/cmis_mail/odoo/addons/cmis_mail | 1 + setup/cmis_mail/setup.py | 6 ++ 12 files changed, 263 insertions(+) create mode 100644 cmis_mail/__init__.py create mode 100644 cmis_mail/__manifest__.py create mode 100644 cmis_mail/i18n/cmis_mail.pot create mode 100644 cmis_mail/i18n/fr.po create mode 100644 cmis_mail/static/description/icon.png create mode 100644 cmis_mail/static/description/index.html create mode 100644 cmis_mail/static/description/main_icon.png create mode 100644 cmis_mail/wizards/__init__.py create mode 100644 cmis_mail/wizards/mail_compose_message.py create mode 100644 cmis_mail/wizards/mail_compose_message.xml create mode 120000 setup/cmis_mail/odoo/addons/cmis_mail create mode 100644 setup/cmis_mail/setup.py diff --git a/cmis_mail/__init__.py b/cmis_mail/__init__.py new file mode 100644 index 00000000..5cb1c491 --- /dev/null +++ b/cmis_mail/__init__.py @@ -0,0 +1 @@ +from . import wizards diff --git a/cmis_mail/__manifest__.py b/cmis_mail/__manifest__.py new file mode 100644 index 00000000..5ad5258d --- /dev/null +++ b/cmis_mail/__manifest__.py @@ -0,0 +1,29 @@ +# Copyright 2022 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Cmis Mail", + "description": """ + This module allows to store attachment with CMIS from the mail composer + if the source model has at least one CMIS folder. + When attachments are added on the mail composer, a checkbox allows to + enable the CMIS storage. If the source model has more than one CMIS + folder, it is possible to specify in which one the attachment must be + stored.""", + 'category': 'Document Management', + "version": "13.0.1.0.0", + "license": "AGPL-3", + "author": "ACSONE SA/NV", + 'website': 'http://alfodoo.org/', + "depends": [ + "mail", + "cmis_field", + ], + "data": [ + "wizards/mail_compose_message.xml", + ], + 'installable': True, + 'images': [ + 'static/description/main_icon.png', + ], +} diff --git a/cmis_mail/i18n/cmis_mail.pot b/cmis_mail/i18n/cmis_mail.pot new file mode 100644 index 00000000..a34d3967 --- /dev/null +++ b/cmis_mail/i18n/cmis_mail.pot @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * cmis_mail +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__allowed_cmis_folder_field_ids +msgid "Allowed Cmis Folder Field" +msgstr "" + +#. module: cmis_mail +#: model:ir.model,name:cmis_mail.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__is_multiple_cmis_fields +msgid "Is Multiple Cmis Fields" +msgstr "" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__cmis_folder_field_id +msgid "Save attachments into" +msgstr "" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__is_save_in_cmis_enabled +msgid "Store attachments in CMIS" +msgstr "" diff --git a/cmis_mail/i18n/fr.po b/cmis_mail/i18n/fr.po new file mode 100644 index 00000000..f7be7c04 --- /dev/null +++ b/cmis_mail/i18n/fr.po @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * cmis_mail +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__allowed_cmis_folder_field_ids +msgid "Allowed Cmis Folder Field" +msgstr "Dossiers CMIS autorisés" + +#. module: cmis_mail +#: model:ir.model,name:cmis_mail.model_mail_compose_message +msgid "Email composition wizard" +msgstr "" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__is_multiple_cmis_fields +msgid "Is Multiple Cmis Fields" +msgstr "" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__cmis_folder_field_id +msgid "Save attachments into" +msgstr "Sauvegarder les pièces-jointes dans" + +#. module: cmis_mail +#: model:ir.model.fields,field_description:cmis_mail.field_mail_compose_message__is_save_in_cmis_enabled +msgid "Store attachments in CMIS" +msgstr "Sauvegarder les pièces-jointes dans CMIS" diff --git a/cmis_mail/static/description/icon.png b/cmis_mail/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..12cfdb743ecbf5e43c750801f30d4a06ca23f351 GIT binary patch literal 20314 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 literal 0 HcmV?d00001 diff --git a/cmis_mail/static/description/index.html b/cmis_mail/static/description/index.html new file mode 100644 index 00000000..1e9cd77c --- /dev/null +++ b/cmis_mail/static/description/index.html @@ -0,0 +1,38 @@ +
+
+

Alfodoo, the Odoo-Alfresco connector

+

+ Streamline your business processes by managing your documents in their context within any Odoo apps. +

+
+
+

+
+

+

+ Alfodoo provides a unique solution to seamlessly integrate the open-source ECM Alfresco with Odoo and let the user manages his documents in Alfresco without leaving his Odoo work environment. +

+

+
+ Benefits from the Alfodoo connector: +

+
    +
  • +

    Manage your content/documents linked to your Odoo processes;

    +
  • +
  • +

    Make classification and indexing of content/documents easier and more qualitative;

    +
  • +
  • +

    Enrich documents with Odoo business record information to exploit the powerful Alfresco document management capabilities.

    +
  • +
+

+ This module allows to store attachment with CMIS from the mail composer if the source model has at least one CMIS folder. + When attachments are added on the mail composer, a checkbox allows to enable the CMIS storage. If the source model has more than one CMIS folder, + it is possible to specify in which one the attachment must be stored. +

+
+
+
+
diff --git a/cmis_mail/static/description/main_icon.png b/cmis_mail/static/description/main_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea088f41e0ea5ab9296b5f3a810c1df88057b72 GIT binary patch literal 36989 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 1, + } + ) + return res + + def _get_cmis_parent_folder(self): + self.ensure_one() + field_name = self.cmis_folder_field_id.name + related_record = self.env[self.model].browse(self.res_id) + field = related_record._fields[field_name] + cmis_backend = field.get_backend(self.env) + root_objectId = related_record[field_name] + if not root_objectId: + field.create_value(related_record) + root_objectId = related_record[field_name] + return cmis_backend.get_cmis_repository().getObject(root_objectId) + + @api.model + def get_mimetype(self, file_name): + return mimetypes.guess_type(file_name)[0] + + def _save_attachments_in_cmis(self): + self.ensure_one() + if not self.model or not self.res_id: + return + for attachment in self.attachment_ids: + props = { + "cmis:name": attachment.name, + } + mimetype = self.get_mimetype(attachment.name) + cmis_parent_folder = self._get_cmis_parent_folder() + cmis_parent_folder.createDocument( + attachment.name, + properties=props, + contentFile=BytesIO(base64.b64decode(attachment.datas)), + contentType=mimetype, + ) + + def send_mail(self, auto_commit=False): + res = super().send_mail(auto_commit=auto_commit) + for rec in self: + if rec.is_save_in_cmis_enabled: + rec._save_attachments_in_cmis() + return res diff --git a/cmis_mail/wizards/mail_compose_message.xml b/cmis_mail/wizards/mail_compose_message.xml new file mode 100644 index 00000000..3fef3368 --- /dev/null +++ b/cmis_mail/wizards/mail_compose_message.xml @@ -0,0 +1,21 @@ + + + + + mail.compose.message.form (in cmis_mail) + mail.compose.message + + + + + + + + + + + + diff --git a/setup/cmis_mail/odoo/addons/cmis_mail b/setup/cmis_mail/odoo/addons/cmis_mail new file mode 120000 index 00000000..497a559d --- /dev/null +++ b/setup/cmis_mail/odoo/addons/cmis_mail @@ -0,0 +1 @@ +../../../../cmis_mail \ No newline at end of file diff --git a/setup/cmis_mail/setup.py b/setup/cmis_mail/setup.py new file mode 100644 index 00000000..28c57bb6 --- /dev/null +++ b/setup/cmis_mail/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)