diff --git a/document_url_google_drive/__manifest__.py b/document_url_google_drive/__manifest__.py index 72c079b0..194bd09d 100644 --- a/document_url_google_drive/__manifest__.py +++ b/document_url_google_drive/__manifest__.py @@ -11,6 +11,7 @@ "installable": True, "depends": [ "document_url", + "google_account", ], "data": [ "views/res_users_view.xml", diff --git a/document_url_google_drive/models/res_config_settings.py b/document_url_google_drive/models/res_config_settings.py index 883f35e7..fbc7eda7 100644 --- a/document_url_google_drive/models/res_config_settings.py +++ b/document_url_google_drive/models/res_config_settings.py @@ -9,5 +9,18 @@ class ResConfigSettings(models.TransientModel): is_active_google_api = fields.Boolean( string="Google APIs", - config_parameter="document_url_google_drive.is_active_google_api", + config_parameter="is_active_google_api", + ) + google_picker_client_id = fields.Char( + string="Google Client ID", + config_parameter="google_picker_client_id", + ) + google_picker_api_key = fields.Char( + string="Google API Key", + config_parameter="google_picker_api_key", + ) + google_picker_app_id = fields.Char( + string="Google App ID", + config_parameter="google_picker_app_id", + default="odoo", ) diff --git a/document_url_google_drive/models/res_users.py b/document_url_google_drive/models/res_users.py index 1be9bb90..afbb0c0e 100644 --- a/document_url_google_drive/models/res_users.py +++ b/document_url_google_drive/models/res_users.py @@ -6,16 +6,11 @@ from odoo import fields, models class ResUsers(models.Model): _inherit = "res.users" - google_picker_client_id = fields.Char(string="Google Client ID") - google_picker_api_key = fields.Char(string="Google API Key") + google_picker_scope = fields.Char( string="Google Scope", default="https://www.googleapis.com/auth/drive.readonly", ) - google_picker_app_id = fields.Char( - string="Google App ID", - default="odoo", - ) google_picker_access_token = fields.Char(string="Google Access Token") google_picker_mime_types = fields.Char(string="Google Mime Types") @@ -25,18 +20,17 @@ class ResUsers(models.Model): :return: dict """ self.ensure_one() - is_active_google_api = ( - self.env["ir.config_parameter"] - .sudo() - .get_param("document_url_google_drive.is_active_google_api") - ) + config = self.env["ir.config_parameter"].sudo() + google_service = self.env["google.service"] + is_active_google_api = config.get_param("is_active_google_api") + if not is_active_google_api: return {} return { - "client_id": self.google_picker_client_id, - "api_key": self.google_picker_api_key, + "client_id": google_service._get_client_id("picker"), + "api_key": config.get_param("google_picker_api_key"), + "app_id": config.get_param("google_picker_app_id"), "scope": self.google_picker_scope, - "app_id": self.google_picker_app_id, "access_token": self.google_picker_access_token, "mime_types": self.google_picker_mime_types, } diff --git a/document_url_google_drive/readme/CONFIGURE.md b/document_url_google_drive/readme/CONFIGURE.md index e04e247e..6daf85ab 100644 --- a/document_url_google_drive/readme/CONFIGURE.md +++ b/document_url_google_drive/readme/CONFIGURE.md @@ -4,15 +4,16 @@ To configure this module, you need to: - Enable "Google API", save. + - field "Google Client ID" - enter the client ID from the Google API console. + - field "Google API key" - enter the API key from the Google API console. + - field "Google App ID" - enter the ID of the Google application. The default value is + `odoo`. + - Next, open your user profile and set up personal access credentials on the "Google API" tab. - - field "Google Client ID" - enter the client ID from the Google API console. - - field "Google API key" - enter the API key from the Google API console. - field "Google Scope" - enter the scope for the Google API. The default value is `https://www.googleapis.com/auth/drive.readonly`. - - field "Google App ID" - enter the ID of the Google application. The default value is - `odoo`. - field "Google Access Token" - your token will be displayed here. It is necessary to edit it. - field "Google Mime Types" - enter the file formats to be filtered when selecting. diff --git a/document_url_google_drive/static/src/js/attachment_google_picker.esm.js b/document_url_google_drive/static/src/js/attachment_google_picker.esm.js index 976f0a1a..c0cd3f3e 100644 --- a/document_url_google_drive/static/src/js/attachment_google_picker.esm.js +++ b/document_url_google_drive/static/src/js/attachment_google_picker.esm.js @@ -66,7 +66,6 @@ export class AttachmentGooglePicker extends Component { this.state.accessToken = null; await this.saveUserAuthAccessToken(); } - // -------------------------------------------------------------------------- // Private // -------------------------------------------------------------------------- @@ -84,7 +83,7 @@ export class AttachmentGooglePicker extends Component { } async saveUserAuthAccessToken() { - this.orm.call("res.users", "save_google_picker_access_token", [ + await this.orm.call("res.users", "save_google_picker_access_token", [ this.user.userId, this.state.accessToken, ]); @@ -150,15 +149,15 @@ export class AttachmentGooglePicker extends Component { async pickerCallback(data) { if (data.action === window.google.picker.Action.PICKED) { - data[window.google.picker.Response.DOCUMENTS].forEach((document) => { - this.createAttachment(document); - }); + for (const document of data.docs) { + await this.createAttachment(document); + } await this._onAddedUrl(); } } async createAttachment(document) { - this.orm.call("ir.attachment.add_url", "add_attachment_google_drive", [ + await this.orm.call("ir.attachment.add_url", "add_attachment_google_drive", [ document.url, document.name, this.props.record.chatter.thread.model, diff --git a/document_url_google_drive/static/src/xml/attachment_google_picker.xml b/document_url_google_drive/static/src/xml/attachment_google_picker.xml index e0af0d7d..aa3eee5d 100644 --- a/document_url_google_drive/static/src/xml/attachment_google_picker.xml +++ b/document_url_google_drive/static/src/xml/attachment_google_picker.xml @@ -14,7 +14,7 @@ Add GDrive link -