From 54b0cfc6fb8c670473eb22af99e4872e76863c00 Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Tue, 9 Dec 2025 12:08:15 +0100 Subject: [PATCH 1/4] [ADD] support_server --- support_server/__init__.py | 1 + support_server/__manifest__.py | 18 +++++++++++++ support_server/models/__init__.py | 1 + support_server/models/cross_connect_client.py | 26 +++++++++++++++++++ support_server/pyproject.toml | 3 +++ 5 files changed, 49 insertions(+) create mode 100644 support_server/__init__.py create mode 100644 support_server/__manifest__.py create mode 100644 support_server/models/__init__.py create mode 100644 support_server/models/cross_connect_client.py create mode 100644 support_server/pyproject.toml diff --git a/support_server/__init__.py b/support_server/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/support_server/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/support_server/__manifest__.py b/support_server/__manifest__.py new file mode 100644 index 00000000..b3f90e91 --- /dev/null +++ b/support_server/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright 2025 Akretion (http://www.akretion.com). +# @author Florian Mounier +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Support Server", + "summary": "Provide cross connect server support integration", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "author": "Akretion", + "website": "https://github.com/akretion/support", + "depends": [ + "cross_connect_server", + "project_customer_access", + "web_url_default_fields_values", + ], + "data": [], +} diff --git a/support_server/models/__init__.py b/support_server/models/__init__.py new file mode 100644 index 00000000..cfdbb344 --- /dev/null +++ b/support_server/models/__init__.py @@ -0,0 +1 @@ +from . import cross_connect_client diff --git a/support_server/models/cross_connect_client.py b/support_server/models/cross_connect_client.py new file mode 100644 index 00000000..296c2917 --- /dev/null +++ b/support_server/models/cross_connect_client.py @@ -0,0 +1,26 @@ +# Copyright 2025 Akretion (http://www.akretion.com). +# @author Florian Mounier +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models +from urllib.parse import urlencode, urlparse + + +class CrossConnectClient(models.Model): + _inherit = "cross.connect.client" + + def _get_final_redirect_url(self, **params): + """Redirect to project_customer_access with set form default values.""" + url = super()._get_final_redirect_url(**params) + + redirect_params = { + "action": "project_customer_access.action_view_all_task", + "view_type": "form", + **{ + f"project.task_default_{field}": params.get(field) + for field in ("origin_db", "origin_name", "origin_url") + }, + } + if params.get("bypass"): + redirect_params["action"] = "project.action_view_task" + + return f"{url}#{urlencode(redirect_params)}" diff --git a/support_server/pyproject.toml b/support_server/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/support_server/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" From 992137593e1922d0adffe054992b790451f8e532 Mon Sep 17 00:00:00 2001 From: Florian da Costa Date: Fri, 16 Jan 2026 12:15:52 +0100 Subject: [PATCH 2/4] [IMP] Manage task creation or defaut list/kanban view depending on the intent of the client --- support_server/models/cross_connect_client.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/support_server/models/cross_connect_client.py b/support_server/models/cross_connect_client.py index 296c2917..065229dd 100644 --- a/support_server/models/cross_connect_client.py +++ b/support_server/models/cross_connect_client.py @@ -11,16 +11,19 @@ class CrossConnectClient(models.Model): def _get_final_redirect_url(self, **params): """Redirect to project_customer_access with set form default values.""" url = super()._get_final_redirect_url(**params) - - redirect_params = { - "action": "project_customer_access.action_view_all_task", - "view_type": "form", - **{ - f"project.task_default_{field}": params.get(field) - for field in ("origin_db", "origin_name", "origin_url") - }, - } + redirect_params = {} if params.get("bypass"): redirect_params["action"] = "project.action_view_task" + else: + redirect_params["action"] = "project_customer_access.action_view_all_task" + + if params.get("intent") == "new": + redirect_params.update({ + "view_type": "form", + **{ + f"project.task_default_{field}": params.get(field) + for field in ("origin_db", "origin_name", "origin_url") + }, + }) return f"{url}#{urlencode(redirect_params)}" From b43f8bac767aac6d7fa1ac691c5e7b297a15d4dc Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Wed, 18 Mar 2026 08:46:52 +0100 Subject: [PATCH 3/4] [IMP] support_server: pre-commit auto fixes --- support_server/models/cross_connect_client.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/support_server/models/cross_connect_client.py b/support_server/models/cross_connect_client.py index 065229dd..c21931e6 100644 --- a/support_server/models/cross_connect_client.py +++ b/support_server/models/cross_connect_client.py @@ -1,8 +1,9 @@ # Copyright 2025 Akretion (http://www.akretion.com). # @author Florian Mounier # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from urllib.parse import urlencode + from odoo import models -from urllib.parse import urlencode, urlparse class CrossConnectClient(models.Model): @@ -18,12 +19,14 @@ def _get_final_redirect_url(self, **params): redirect_params["action"] = "project_customer_access.action_view_all_task" if params.get("intent") == "new": - redirect_params.update({ - "view_type": "form", - **{ - f"project.task_default_{field}": params.get(field) - for field in ("origin_db", "origin_name", "origin_url") - }, - }) + redirect_params.update( + { + "view_type": "form", + **{ + f"project.task_default_{field}": params.get(field) + for field in ("origin_db", "origin_name", "origin_url") + }, + } + ) return f"{url}#{urlencode(redirect_params)}" From 063ae63eedd050c084069f3042f32347bee028c0 Mon Sep 17 00:00:00 2001 From: Florian Mounier Date: Wed, 18 Mar 2026 17:43:39 +0100 Subject: [PATCH 4/4] [MIG] support_server: Migration to 18.0 --- support_server/README.rst | 55 +++ support_server/__manifest__.py | 3 +- support_server/models/__init__.py | 1 + support_server/models/cross_connect_client.py | 13 +- support_server/models/project_task.py | 19 + support_server/readme/DESCRIPTION.md | 1 + support_server/static/description/index.html | 409 ++++++++++++++++++ 7 files changed, 494 insertions(+), 7 deletions(-) create mode 100644 support_server/README.rst create mode 100644 support_server/models/project_task.py create mode 100644 support_server/readme/DESCRIPTION.md create mode 100644 support_server/static/description/index.html diff --git a/support_server/README.rst b/support_server/README.rst new file mode 100644 index 00000000..fafdf535 --- /dev/null +++ b/support_server/README.rst @@ -0,0 +1,55 @@ +============== +Support Server +============== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:18861518067acb1a2dba5090096f6b0d6613853689ca8362249a6d62f66298b2 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-Akretion%2Fsupport-lightgray.png?logo=github + :target: https://github.com/Akretion/support/tree/18.0/support_server + :alt: Akretion/support + +|badge1| |badge2| |badge3| + +Support Server + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Akretion + +Maintainers +----------- + +This module is part of the `Akretion/support `_ project on GitHub. + +You are welcome to contribute. diff --git a/support_server/__manifest__.py b/support_server/__manifest__.py index b3f90e91..22a8d2f4 100644 --- a/support_server/__manifest__.py +++ b/support_server/__manifest__.py @@ -5,14 +5,13 @@ { "name": "Support Server", "summary": "Provide cross connect server support integration", - "version": "16.0.1.0.0", + "version": "18.0.1.0.0", "license": "AGPL-3", "author": "Akretion", "website": "https://github.com/akretion/support", "depends": [ "cross_connect_server", "project_customer_access", - "web_url_default_fields_values", ], "data": [], } diff --git a/support_server/models/__init__.py b/support_server/models/__init__.py index cfdbb344..a4a6b5ac 100644 --- a/support_server/models/__init__.py +++ b/support_server/models/__init__.py @@ -1 +1,2 @@ from . import cross_connect_client +from . import project_task diff --git a/support_server/models/cross_connect_client.py b/support_server/models/cross_connect_client.py index c21931e6..796c99a9 100644 --- a/support_server/models/cross_connect_client.py +++ b/support_server/models/cross_connect_client.py @@ -4,6 +4,7 @@ from urllib.parse import urlencode from odoo import models +from odoo.http import request class CrossConnectClient(models.Model): @@ -19,14 +20,16 @@ def _get_final_redirect_url(self, **params): redirect_params["action"] = "project_customer_access.action_view_all_task" if params.get("intent") == "new": + session = params.get("session") or request.session + if session: + session.support_default_params = { + field: params.get(field) + for field in ("origin_db", "origin_name", "origin_url") + } + redirect_params.update( { "view_type": "form", - **{ - f"project.task_default_{field}": params.get(field) - for field in ("origin_db", "origin_name", "origin_url") - }, } ) - return f"{url}#{urlencode(redirect_params)}" diff --git a/support_server/models/project_task.py b/support_server/models/project_task.py new file mode 100644 index 00000000..40a543a4 --- /dev/null +++ b/support_server/models/project_task.py @@ -0,0 +1,19 @@ +# Copyright 2026 Akretion (http://www.akretion.com). +# @author Florian Mounier +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + + +from odoo import api, models +from odoo.http import request + + +class ProjectTask(models.Model): + _inherit = "project.task" + + @api.model + def default_get(self, fields_list): + defaults = super().default_get(fields_list) + session = request.session + if session and session.get("support_default_params"): + defaults.update(session.pop("support_default_params")) + return defaults diff --git a/support_server/readme/DESCRIPTION.md b/support_server/readme/DESCRIPTION.md new file mode 100644 index 00000000..046ae001 --- /dev/null +++ b/support_server/readme/DESCRIPTION.md @@ -0,0 +1 @@ +Support Server diff --git a/support_server/static/description/index.html b/support_server/static/description/index.html new file mode 100644 index 00000000..f5e5ecb7 --- /dev/null +++ b/support_server/static/description/index.html @@ -0,0 +1,409 @@ + + + + + +Support Server + + + +
+

Support Server

+ + +

Beta License: AGPL-3 Akretion/support

+

Support Server

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Akretion
  • +
+
+
+

Maintainers

+

This module is part of the Akretion/support project on GitHub.

+

You are welcome to contribute.

+
+
+
+ +