diff --git a/asana_odoo_connector/README.rst b/asana_odoo_connector/README.rst new file mode 100644 index 000000000..835f38113 --- /dev/null +++ b/asana_odoo_connector/README.rst @@ -0,0 +1,48 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Asana Odoo Connector +==================== +This module helps you to connect the projects and tasks from the odoo to asana and vice versa + +Configuration +============= +* Need to configure the Workspace id and the App Token in the Asana configuration + +Company +_______ +* `Cybrosys Techno Solutions `__ + +License +======= +Affero General Public License v3.0 (AGPL v3) +(http://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +_______ +Developer : (V16) Arjun S, + (V17) Safa Faheem PE, +Contact: odoo@cybrosys.com + +Contacts +________ +* Mail Contact : odoo@cybrosys.com +* Website : http://www.cybrosys.com + +Bug Tracker +___________ +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +__________ +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +___________________ +HTML Description: ``__ diff --git a/asana_odoo_connector/__init__.py b/asana_odoo_connector/__init__.py new file mode 100644 index 000000000..82ca01581 --- /dev/null +++ b/asana_odoo_connector/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import models diff --git a/asana_odoo_connector/__manifest__.py b/asana_odoo_connector/__manifest__.py new file mode 100644 index 000000000..617bd7ef1 --- /dev/null +++ b/asana_odoo_connector/__manifest__.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': 'Asana Odoo Connector', + 'version': '17.0.1.0.0', + 'category': 'Project', + 'summary': "With this module, you can easily connect the projects, tasks " + "and partners in the odoo to asana", + 'description': """With this module, user can connect the projects, tasks and + the customers in the odoo to asana, which means the projects, tasks and + customers in the odoo can be seen in the asana also vice versa""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['project'], + 'data': [ + 'views/project_project_views.xml', + 'views/project_task_views.xml', + 'views/project_task_type_views.xml', + 'views/res_config_settings_views.xml', + 'data/ir_actions_data.xml', + ], + 'external_dependencies': { + 'python': [ + 'asana', + ], + }, + 'images': ['static/description/banner.jpg'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/asana_odoo_connector/data/ir_actions_data.xml b/asana_odoo_connector/data/ir_actions_data.xml new file mode 100644 index 000000000..b342c5460 --- /dev/null +++ b/asana_odoo_connector/data/ir_actions_data.xml @@ -0,0 +1,16 @@ + + + + + + Export to Asana + + + list + code + + action = records.action_export_to_asana() + + + + diff --git a/asana_odoo_connector/doc/RELEASE_NOTES.md b/asana_odoo_connector/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..d8ddb31ec --- /dev/null +++ b/asana_odoo_connector/doc/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +## Module + +#### 01.02.2024 +#### Version 17.0.1.0.0 +#### ADD + +- Initial Commit for Asana Odoo Connector diff --git a/asana_odoo_connector/models/__init__.py b/asana_odoo_connector/models/__init__.py new file mode 100644 index 000000000..840f5f336 --- /dev/null +++ b/asana_odoo_connector/models/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import project_project +from . import project_task +from . import project_task_type +from . import res_config_settings diff --git a/asana_odoo_connector/models/project_project.py b/asana_odoo_connector/models/project_project.py new file mode 100644 index 000000000..04bf55ef4 --- /dev/null +++ b/asana_odoo_connector/models/project_project.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +import logging +from odoo import fields, models, _ +from odoo.exceptions import ValidationError + +_logger = logging.getLogger(__name__) +try: + import asana +except ImportError: + _logger.debug('Cannot `import asana`.') + + +class ProjectProject(models.Model): + """ + Inherits the model project.project to add extra fields and functionalities + for the working of the odoo to asana import and export. + """ + _inherit = 'project.project' + + asana_gid = fields.Char(string='Asana GID', + help='Asana ID for the project record', + readonly=True) + + def action_export_to_asana(self): + """ + Method action_export_to_asana used to export the data in the odoo to + asana + """ + configuration = asana.Configuration() + configuration.access_token = self.env[ + 'ir.config_parameter'].sudo().get_param( + 'asana_odoo_connector.app_token') + api_client = asana.ApiClient(configuration) + project_instance = asana.ProjectsApi(api_client) + workspace_gid = self.env[ + 'ir.config_parameter'].sudo().get_param( + 'asana_odoo_connector.workspace_gid') + try: + for project in self: + if not project.asana_gid: + project_body = {"data":{"name": project.name}} + project_response = project_instance.create_project_for_workspace( + project_body, workspace_gid, {}) + project.asana_gid = project_response['gid'] + project_gid = project_response['gid'] + task_instance = asana.TasksApi(api_client) + section_instance = asana.SectionsApi(api_client) + for section in project.type_ids: + opts = { + 'body': {"data": {'name': section.name}} + } + section_responses = section_instance.create_section_for_project( + project_gid, opts + ) + section.asana_gid = section_responses['gid'] + for task in project.tasks: + body = {"data": {'name': task.name, + 'workspace': workspace_gid, + "projects": project_gid, + "memberships": [{ + 'project': project_gid, + 'section': task.stage_id.asana_gid + } + ]}} + task_instance.create_task(body,{}) + except Exception as exc: + raise ValidationError( + _('Please check the workspace ID or the app token')) from exc diff --git a/asana_odoo_connector/models/project_task.py b/asana_odoo_connector/models/project_task.py new file mode 100644 index 000000000..26bf9d2e3 --- /dev/null +++ b/asana_odoo_connector/models/project_task.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models + + +class ProjectTask(models.Model): + """ + Inherits the model project.task to add extra fields for the working of + importing and exporting of the data from odoo to asana + """ + _inherit = 'project.task' + + asana_gid = fields.Char(string='Asana GID', + help='Asana ID for the project record') diff --git a/asana_odoo_connector/models/project_task_type.py b/asana_odoo_connector/models/project_task_type.py new file mode 100644 index 000000000..fb54f8cc8 --- /dev/null +++ b/asana_odoo_connector/models/project_task_type.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models + + +class ProjectTaskType(models.Model): + """ + Inherits the model project.task.type to add the extra fields for importing + and exporting of the data from odoo to asana + """ + _inherit = 'project.task.type' + + asana_gid = fields.Char(string='Asana GID', + help='Asana ID for the project record') diff --git a/asana_odoo_connector/models/res_config_settings.py b/asana_odoo_connector/models/res_config_settings.py new file mode 100644 index 000000000..5a034b572 --- /dev/null +++ b/asana_odoo_connector/models/res_config_settings.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +import logging +import requests +from odoo import fields, models, _ +from odoo.exceptions import ValidationError + +_logger = logging.getLogger(__name__) +try: + import asana +except ImportError: + _logger.debug('Cannot `import asana`.') + + +def action_notify(success): + """ + Method action_notify used to notify whether the connection to the asana is + successful or not. + """ + notification = { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Connection successful!') if success is True else _( + 'Connection not successful!'), + 'message': 'Connection to Asana is successful.' if success is True else 'Connection to Asana is not successful.', + 'sticky': True, + 'type': 'success' if success is True else 'danger' + } + } + return notification + + +def action_import_project_stages(project_gid, api_client): + """ + Method action_import_project_stages used to import the project stages from + asana to odoo + """ + api_instance = asana.SectionsApi(api_client) + section_response = api_instance.get_sections_for_project( + project_gid) + return section_response + + +class ResConfigSettings(models.TransientModel): + """ + Inherits the model Res Config Settings to add extra fields and + functionalities to this model + """ + _inherit = 'res.config.settings' + + workspace_gid = fields.Char(string='Workspace ID', + help='ID of the workspace in asana', + config_parameter='asana_odoo_connector.workspace_gid') + app_token = fields.Char(string='App Token', + help='Personal Access Token of the corresponding ' + 'asana account', + config_parameter='asana_odoo_connector.app_token') + + def action_test_asana(self): + """ + Method action_test_asana to test the connection from odoo to asana + """ + workspace_gid = self.workspace_gid + api_endpoint = f'https://app.asana.com/api/1.0/workspaces/{workspace_gid}' + access_token = self.app_token + headers = { + 'Authorization': f'Bearer {access_token}', + } + response = requests.get(api_endpoint, headers=headers, timeout=10) + if response.status_code == 200: + success = True + notification = action_notify(success) + self.env['ir.config_parameter'].sudo().set_param( + 'asana_odoo_connector.connection_successful', True) + return notification + success = False + notification = action_notify(success) + return notification + + def action_import_projects(self): + """ + Method action_import_projects to import the project from asana to odoo + """ + configuration = asana.Configuration() + configuration.access_token = self.app_token + api_client = asana.ApiClient(configuration) + project_instance = asana.ProjectsApi(api_client) + section_instance = asana.SectionsApi(api_client) + workspace = self.workspace_gid + opts = { + 'workspace': workspace + } + try: + project_response = project_instance.get_projects(opts) + for project in project_response: + asana_gid = project['gid'] + existing_project = self.env['project.project'].search( + [('asana_gid', '=', asana_gid)]) + if not existing_project: + opts = {} + section_data = section_instance.get_sections_for_project( + asana_gid, opts) + type_ids = [ + (0, 0, {'name': section['name'], + 'asana_gid': section['gid']}) + for section in section_data] + new_project = self.env['project.project'].create({ + 'name': project['name'], + 'asana_gid': asana_gid, + 'type_ids': type_ids + }) + self.action_import_tasks( + api_client=api_client, + project_id=new_project.id, + asana_gid= asana_gid) + else: + self.action_import_tasks( + api_client=api_client, + project_id=existing_project.id, + asana_gid=asana_gid) + except Exception as exc: + raise ValidationError( + _('Please check the workspace ID or the app token')) from exc + + def action_import_tasks(self, api_client, project_id, asana_gid): + """ + Method action_import_tasks to import tasks from the asana to odoo + """ + api_instance = asana.TasksApi(api_client) + section_instance = asana.SectionsApi(api_client) + opts = {} + section_data = section_instance.get_sections_for_project(asana_gid, + opts) + for section in section_data: + opts ={} + task_response = api_instance.get_tasks_for_section(section['gid'], + opts) + for task in task_response: + existing_task = self.env['project.task'].search( + [('asana_gid', '=', task['gid']), + ('project_id', '=', project_id)]) + if not existing_task: + self.env['project.task'].create({ + 'name': task['name'], + 'project_id': project_id, + 'asana_gid': task['gid'], + 'stage_id': self.env['project.task.type'].search( + [('asana_gid', '=', section['gid']), + ('project_ids', '=', project_id)]).id, + }) diff --git a/asana_odoo_connector/static/description/assets/icons/capture (1).png b/asana_odoo_connector/static/description/assets/icons/capture (1).png new file mode 100644 index 000000000..8824deafc Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/capture (1).png differ diff --git a/asana_odoo_connector/static/description/assets/icons/check.png b/asana_odoo_connector/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/check.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/chevron.png b/asana_odoo_connector/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/chevron.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/cogs.png b/asana_odoo_connector/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/cogs.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/consultation.png b/asana_odoo_connector/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/consultation.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/ecom-black.png b/asana_odoo_connector/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/ecom-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/education-black.png b/asana_odoo_connector/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/education-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/hotel-black.png b/asana_odoo_connector/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/hotel-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/img.png b/asana_odoo_connector/static/description/assets/icons/img.png new file mode 100644 index 000000000..70197f477 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/img.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/license.png b/asana_odoo_connector/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/license.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/lifebuoy.png b/asana_odoo_connector/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/lifebuoy.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/manufacturing-black.png b/asana_odoo_connector/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/manufacturing-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/photo-capture.png b/asana_odoo_connector/static/description/assets/icons/photo-capture.png new file mode 100644 index 000000000..06c111758 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/photo-capture.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/pos-black.png b/asana_odoo_connector/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/pos-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/puzzle.png b/asana_odoo_connector/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/puzzle.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/restaurant-black.png b/asana_odoo_connector/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/restaurant-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/service-black.png b/asana_odoo_connector/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/service-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/trading-black.png b/asana_odoo_connector/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/trading-black.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/training.png b/asana_odoo_connector/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/training.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/update.png b/asana_odoo_connector/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/update.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/user.png b/asana_odoo_connector/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/user.png differ diff --git a/asana_odoo_connector/static/description/assets/icons/wrench.png b/asana_odoo_connector/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/asana_odoo_connector/static/description/assets/icons/wrench.png differ diff --git a/asana_odoo_connector/static/description/assets/misc/Cybrosys R.png b/asana_odoo_connector/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/misc/Cybrosys R.png differ diff --git a/asana_odoo_connector/static/description/assets/misc/email.svg b/asana_odoo_connector/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/asana_odoo_connector/static/description/assets/misc/phone.svg b/asana_odoo_connector/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/asana_odoo_connector/static/description/assets/misc/star (1) 2.svg b/asana_odoo_connector/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/asana_odoo_connector/static/description/assets/misc/support (1) 1.svg b/asana_odoo_connector/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/asana_odoo_connector/static/description/assets/misc/support-email.svg b/asana_odoo_connector/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/asana_odoo_connector/static/description/assets/misc/tick-mark.svg b/asana_odoo_connector/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/asana_odoo_connector/static/description/assets/misc/whatsapp 1.svg b/asana_odoo_connector/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/asana_odoo_connector/static/description/assets/misc/whatsapp.svg b/asana_odoo_connector/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/asana_odoo_connector/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/asana_odoo_connector/static/description/assets/modules/1.jpg b/asana_odoo_connector/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..67c7f7062 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/modules/1.jpg differ diff --git a/asana_odoo_connector/static/description/assets/modules/2.png b/asana_odoo_connector/static/description/assets/modules/2.png new file mode 100644 index 000000000..3bedf7981 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/modules/2.png differ diff --git a/asana_odoo_connector/static/description/assets/modules/3.png b/asana_odoo_connector/static/description/assets/modules/3.png new file mode 100644 index 000000000..164eb62c7 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/modules/3.png differ diff --git a/asana_odoo_connector/static/description/assets/modules/4.png b/asana_odoo_connector/static/description/assets/modules/4.png new file mode 100644 index 000000000..d246d83ac Binary files /dev/null and b/asana_odoo_connector/static/description/assets/modules/4.png differ diff --git a/asana_odoo_connector/static/description/assets/modules/5.jpg b/asana_odoo_connector/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..655cf38f5 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/modules/5.jpg differ diff --git a/asana_odoo_connector/static/description/assets/modules/6.jpg b/asana_odoo_connector/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..1f3f2e27f Binary files /dev/null and b/asana_odoo_connector/static/description/assets/modules/6.jpg differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_01.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_01.png new file mode 100644 index 000000000..939fa6b67 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_01.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_02.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_02.png new file mode 100644 index 000000000..f16c5d365 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_02.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_03.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_03.png new file mode 100644 index 000000000..6dcf96fd8 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_03.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_04.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_04.png new file mode 100644 index 000000000..5598ee83c Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_04.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_05.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_05.png new file mode 100644 index 000000000..588025d93 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_05.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_06.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_06.png new file mode 100644 index 000000000..e1c8f52b1 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_06.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_07.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_07.png new file mode 100644 index 000000000..f1c87a29c Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_07.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_08.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_08.png new file mode 100644 index 000000000..74c49a283 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_08.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_09.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_09.png new file mode 100644 index 000000000..5da2d9a46 Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_09.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_10.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_10.png new file mode 100644 index 000000000..b8f80647e Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_10.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_11.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_11.png new file mode 100644 index 000000000..3bcc7e93c Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_11.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_12.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_12.png new file mode 100644 index 000000000..9e8c5fafe Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_12.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_13.png b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_13.png new file mode 100644 index 000000000..7f03527fd Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/asana_odoo_13.png differ diff --git a/asana_odoo_connector/static/description/assets/screenshots/hero.gif b/asana_odoo_connector/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..24194864e Binary files /dev/null and b/asana_odoo_connector/static/description/assets/screenshots/hero.gif differ diff --git a/asana_odoo_connector/static/description/banner.jpg b/asana_odoo_connector/static/description/banner.jpg new file mode 100644 index 000000000..86fdecbc5 Binary files /dev/null and b/asana_odoo_connector/static/description/banner.jpg differ diff --git a/asana_odoo_connector/static/description/icon.png b/asana_odoo_connector/static/description/icon.png new file mode 100644 index 000000000..19639d2e5 Binary files /dev/null and b/asana_odoo_connector/static/description/icon.png differ diff --git a/asana_odoo_connector/static/description/index.html b/asana_odoo_connector/static/description/index.html new file mode 100644 index 000000000..26cd5cc1b --- /dev/null +++ b/asana_odoo_connector/static/description/index.html @@ -0,0 +1,752 @@ + + + + + + + Asana Odoo Connector Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ Asana Odoo Connector

+

+ This Module Will Helps To Connect The Projects And Tasks In The Odoo To Asana Also Vice Versa +

+
+ +
+
+
+
+
+

Key Highlights +

+
+
+
+
+
+ +
+
+

Easy to import Projects from Asana to Odoo

+
+
+
+
+
+
+ +
+
+

Easy to export Projects from Odoo to Asana

+
+
+
+
+
+
+ +
+
+

Easy to import Projects Stages from Asana to Odoo

+
+
+
+
+
+
+ +
+
+

Easy to export Projects Stages from Odoo to Asana

+
+
+
+
+
+
+ +
+
+

Easy to import Tasks from Asana to Odoo according to the Project Stages

+
+
+
+
+
+
+ +
+
+

Easy to export Tasks from Odoo to Asana according to the Project Stages

+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+

+ Go to the Settings page.

+
+
+
+
+
+
+ +
+
+

+ Go to the Asana settings section. You can get a new asana account from here.

+
+
+
+
+
+
+ +
+
+

+ In the Asana settings section you can provide your Asana Workspace ID and your Personal Access Token (PAT) as App Token.

+
+
+
+
+
+
+ +
+
+

+ To get the App Token first you need to go the settings by clicking on the Settings button.

+
+
+
+
+
+
+ +
+
+

+ Then under the Apps section you need to click on Manage Developer Apps option.

+
+
+
+
+
+
+ +
+
+

+ From here you can see the existing tokens and also you can create new app token by clicking on the button Create new token.

+
+
+
+
+
+
+ +
+
+

+ To get the Workspace ID you need to go to this link and then as per the image you need to fill your App Token on AUTHORIZATION section and then click on the button Try It!, as you can see in the Response section you can get the Workspace ID's of the workspaces from here.

+
+
+
+
+
+
+ +
+
+

+ If you want to test the connection from Odoo to Asana you can click the TEST button, if the connection is success then it will be shown as in a popup as connection successful.

+
+
+
+
+
+
+ +
+
+

+ From the IMPORT PROJECTS AND TASKS button you can import the Projects and Tasks from Asana to Odoo if the Projects are not already imported then the Projects will be get imported also the corresponding Tasks will be imported according to the Project Sections from Asana.

+
+
+
+
+
+
+ +
+
+

+ Here you can see the imported project from Asana in Odoo.

+
+
+
+
+
+
+ +
+
+

+ Here you can see the imported project from Asana in Odoo in Asana.

+
+
+
+
+
+
+ +
+
+

+ Here you can see the option Export to Asana, which will act as the projects will be exported into the asana also the project stages, also tasks according to each project stage will be exported into asana.

+
+
+
+
+
+
+ +
+
+

+ Here you can see the exported Projects from Odoo to Asana in Asana.

+
+
+
+
+
+
+
    +
  • + Easy to import Projects from Asana to Odoo +
  • +
  • + Easy to export Projects from Odoo to Asana +
  • +
  • + Easy to import Projects Stages from Asana to Odoo +
  • +
  • + Easy to export Projects Stages from Odoo to Asana +
  • +
  • + Easy to import Tasks from Asana to Odoo according to the Project Stages +
  • +
  • + Easy to export Tasks from Odoo to Asana according to the Project Stages +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:01 Feb 2024 +
+

+ + Initial commit for Asana Odoo Connector.

+
+
+
+
+
+
+
+

Related Products

+
+
+ +
+
+

Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo Licensing Consultancy

+
+
+
+
+
+
+

Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

Education

+

A platform for educational management

+
+
+
+
+ +

Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service Management

+

Keep track of services and invoice

+
+
+
+
+ +

Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to us on WhatsApp!

+
+91 + 99456767686
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/asana_odoo_connector/views/project_project_views.xml b/asana_odoo_connector/views/project_project_views.xml new file mode 100644 index 000000000..8b1e99b9a --- /dev/null +++ b/asana_odoo_connector/views/project_project_views.xml @@ -0,0 +1,22 @@ + + + + + + project.project.view.form.inherit.asana.odoo.connector + + project.project + + + + + + + + + + + + + + diff --git a/asana_odoo_connector/views/project_task_type_views.xml b/asana_odoo_connector/views/project_task_type_views.xml new file mode 100644 index 000000000..40bdfc979 --- /dev/null +++ b/asana_odoo_connector/views/project_task_type_views.xml @@ -0,0 +1,24 @@ + + + + + + project.task.type.view.form.inherit.asana.odoo.connector + + project.task.type + + + + + + + + + + + + + + + + diff --git a/asana_odoo_connector/views/project_task_views.xml b/asana_odoo_connector/views/project_task_views.xml new file mode 100644 index 000000000..7a404747d --- /dev/null +++ b/asana_odoo_connector/views/project_task_views.xml @@ -0,0 +1,22 @@ + + + + + + project.task.view.form.inherit.asana.odoo.connector + + project.task + + + + + + + + + + + + + + diff --git a/asana_odoo_connector/views/res_config_settings_views.xml b/asana_odoo_connector/views/res_config_settings_views.xml new file mode 100644 index 000000000..9a0f0d9e8 --- /dev/null +++ b/asana_odoo_connector/views/res_config_settings_views.xml @@ -0,0 +1,58 @@ + + + + + + res.config.settings.view.form.inherit.asana.odoo.connector + + res.config.settings + + + + +
+

Asana Settings

+
+
+
+
+ Workspace ID +
+ +
+
+
+ App Token +
+ +
+
+
+
+
+
+
+

Asana Import Settings

+
+
+
+
+
+
+
+
+ + + + +