From 53588458a768d6223a5c7243fee842fde6d1bbdb Mon Sep 17 00:00:00 2001 From: clementthomas Date: Tue, 28 Mar 2023 14:39:45 +0200 Subject: [PATCH 1/5] [FIX] project_task_portal_form: allow multiple uploads in portal --- .../controllers/portal_task_creation.py | 7 +------ .../views/portal_task_creation_form.xml | 11 ++++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/project_task_portal_form/controllers/portal_task_creation.py b/project_task_portal_form/controllers/portal_task_creation.py index 4ee67a2..4df7ee8 100644 --- a/project_task_portal_form/controllers/portal_task_creation.py +++ b/project_task_portal_form/controllers/portal_task_creation.py @@ -84,12 +84,7 @@ class PortalTaskCreation(CustomerPortal): if values.get("bug_report", False): description = description + "

BUG REPORT:
" + values["bug_report"] values["description"] = description - values["attachments"] = [] - for field_name, field_value in request.params.items(): - # If the value of the field if a file - if field_name == 'attachment' and field_value != "": - field_value.field_name = field_name - values["attachments"].append(field_value) + values["attachments"] = request.httprequest.files.getlist("attachment") return values @http.route( diff --git a/project_task_portal_form/views/portal_task_creation_form.xml b/project_task_portal_form/views/portal_task_creation_form.xml index eed740f..983bebc 100644 --- a/project_task_portal_form/views/portal_task_creation_form.xml +++ b/project_task_portal_form/views/portal_task_creation_form.xml @@ -4,7 +4,16 @@ Task creation form -
+ +
-- 2.49.1 From 326b73e9c81b730e5645dfb87d62b0aae488760c Mon Sep 17 00:00:00 2001 From: clementthomas Date: Tue, 28 Mar 2023 16:09:14 +0200 Subject: [PATCH 2/5] [IMP] project_assignees: chatter auto subscription to assignees --- project_assignees/models/project_task.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/project_assignees/models/project_task.py b/project_assignees/models/project_task.py index 7db36ff..b62bc6e 100644 --- a/project_assignees/models/project_task.py +++ b/project_assignees/models/project_task.py @@ -1,5 +1,5 @@ -from odoo import models, fields, _ +from odoo import models, fields, _, api class Task(models.Model): @@ -7,3 +7,20 @@ class Task(models.Model): assignee_ids = fields.Many2many('res.users', 'assignee_ids_rel', string='Other Assignees') + @api.multi + def subscribe_assignees(self): + for task in self: + partner_ids = [a.partner_id.id for a in self.assignee_ids] + task.message_subscribe(partner_ids) + + @api.multi + def write(self, vals): + result = super(Task, self).write(vals) + self.subscribe_assignees() + return result + + @api.model + def create(self, vals): + task = super(Task, self).create(vals) + task.subscribe_assignees() + return task \ No newline at end of file -- 2.49.1 From 7e68fe008feab159543d77ff980697aa3e5c4910 Mon Sep 17 00:00:00 2001 From: clementthomas Date: Wed, 29 Mar 2023 14:42:35 +0200 Subject: [PATCH 3/5] [IMP] project_task_portal_form: Current user as user_id in portal task request --- project_task_portal_form/controllers/portal_task_creation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project_task_portal_form/controllers/portal_task_creation.py b/project_task_portal_form/controllers/portal_task_creation.py index 4df7ee8..01daabe 100644 --- a/project_task_portal_form/controllers/portal_task_creation.py +++ b/project_task_portal_form/controllers/portal_task_creation.py @@ -100,7 +100,7 @@ class PortalTaskCreation(CustomerPortal): values = self._compute_form_data(kwargs) values["project_id"] = user.default_project_id.id values["partner_id"] = user.partner_id.id - values["user_id"] = None + values["user_id"] = user.id # Create task task_id = request.env["project.task"].create(values) -- 2.49.1 From a85a0d22be0a2e1396c3e5816014446029743a41 Mon Sep 17 00:00:00 2001 From: clementthomas Date: Thu, 30 Mar 2023 16:34:10 +0200 Subject: [PATCH 4/5] [FIX] project_assignees: Fix bug when save task --- project_assignees/models/project_task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project_assignees/models/project_task.py b/project_assignees/models/project_task.py index b62bc6e..88909c7 100644 --- a/project_assignees/models/project_task.py +++ b/project_assignees/models/project_task.py @@ -10,7 +10,7 @@ class Task(models.Model): @api.multi def subscribe_assignees(self): for task in self: - partner_ids = [a.partner_id.id for a in self.assignee_ids] + partner_ids = [a.partner_id.id for a in task.assignee_ids] task.message_subscribe(partner_ids) @api.multi -- 2.49.1 From b1c8401d1f6c8ab4608e87fcc986528faa1adbef Mon Sep 17 00:00:00 2001 From: clementthomas Date: Fri, 31 Mar 2023 11:49:29 +0200 Subject: [PATCH 5/5] [ADD] project_average_acceptable_time --- project_average_acceptable_time/README.rst | 45 +++++++++ project_average_acceptable_time/__init__.py | 3 + .../__manifest__.py | 93 +++++++++++++++++++ .../controllers/__init__.py | 2 + .../controllers/custom_portal.py | 21 +++++ project_average_acceptable_time/i18n/README | 1 + project_average_acceptable_time/i18n/fr.po | 46 +++++++++ .../models/__init__.py | 2 + .../models/project_project.py | 10 ++ .../views/portal_home_template.xml | 26 ++++++ .../views/project_project.xml | 30 ++++++ 11 files changed, 279 insertions(+) create mode 100644 project_average_acceptable_time/README.rst create mode 100644 project_average_acceptable_time/__init__.py create mode 100644 project_average_acceptable_time/__manifest__.py create mode 100644 project_average_acceptable_time/controllers/__init__.py create mode 100644 project_average_acceptable_time/controllers/custom_portal.py create mode 100644 project_average_acceptable_time/i18n/README create mode 100644 project_average_acceptable_time/i18n/fr.po create mode 100644 project_average_acceptable_time/models/__init__.py create mode 100644 project_average_acceptable_time/models/project_project.py create mode 100644 project_average_acceptable_time/views/portal_home_template.xml create mode 100644 project_average_acceptable_time/views/project_project.xml diff --git a/project_average_acceptable_time/README.rst b/project_average_acceptable_time/README.rst new file mode 100644 index 0000000..e56a3d8 --- /dev/null +++ b/project_average_acceptable_time/README.rst @@ -0,0 +1,45 @@ +================= +project_assignees +================= + +Add multiple assignees field to project task + +Installation +============ + +Use Odoo normal procedure to install add-ons to install +``project_assignees``. + +Known issues / Roadmap +====================== + +Bug Tracker +=========== + +Bugs are tracked on `our issues website +`_. In case of +trouble, please check there if your issue has already been +reported. If you spotted it first, help us smashing it by providing a +detailed and welcomed feedback. + +Credits +======= + +Images +------ +* Elabore: `Icon `_. + +Contributors +------------ +* Stéphan Sainléger + +Funders +------- +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) + + +Maintainer +---------- + +This module is maintained by Elabore. \ No newline at end of file diff --git a/project_average_acceptable_time/__init__.py b/project_average_acceptable_time/__init__.py new file mode 100644 index 0000000..6bcd132 --- /dev/null +++ b/project_average_acceptable_time/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models, controllers diff --git a/project_average_acceptable_time/__manifest__.py b/project_average_acceptable_time/__manifest__.py new file mode 100644 index 0000000..e4e95df --- /dev/null +++ b/project_average_acceptable_time/__manifest__.py @@ -0,0 +1,93 @@ +# Copyright 2022 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "project_average_acceptable_time", + "version": "12.0.1.0.0", + "author": "Elabore", + "website": "https://github.com/elabore-coop/project-tools", + "maintainer": "Clément Thomas", + "license": "AGPL-3", + "category": "Tools", + "summary": "Task validation without customer agreement", + "description": """ + :image: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +================= +project_average_acceptable_time +================= + + + +Installation +============ + +Install ``project_average_acceptable_time``, all dependencies will be installed by default. + +Known issues / Roadmap +====================== + +None yet. + +Bug Tracker +=========== + +Bugs are tracked on `our issues website +`_. In case of +trouble, please check there if your issue has already been +reported. If you spotted it first, help us smashing it by providing a +detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Elabore: `Icon `_. + +Contributors +------------ + +* Clément Thomas + +Funders +------- + +The development of this module has been financially supported by: +* Elabore (https://elabore.coop) + + +Maintainer +---------- +This module is maintained by Elabore. + +""", + # any module necessary for this one to work correctly + "depends": [ + "base", + "project", + "project_user_default_project" + ], + "qweb": [ + # "static/src/xml/*.xml", + ], + "external_dependencies": { + "python": [], + }, + # always loaded + "data": [ + "views/project_project.xml", + "views/portal_home_template.xml" + ], + # only loaded in demonstration mode + "demo": [], + "js": [], + "css": [], + "installable": True, + # Install this module automatically if all dependency have been previously + # and independently installed. Used for synergetic or glue modules. + "auto_install": False, + "application": False, +} diff --git a/project_average_acceptable_time/controllers/__init__.py b/project_average_acceptable_time/controllers/__init__.py new file mode 100644 index 0000000..08cd71a --- /dev/null +++ b/project_average_acceptable_time/controllers/__init__.py @@ -0,0 +1,2 @@ + +from . import custom_portal \ No newline at end of file diff --git a/project_average_acceptable_time/controllers/custom_portal.py b/project_average_acceptable_time/controllers/custom_portal.py new file mode 100644 index 0000000..ac72309 --- /dev/null +++ b/project_average_acceptable_time/controllers/custom_portal.py @@ -0,0 +1,21 @@ +# Copyright 2020 Lokavaluto () +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.http import request, route +from odoo.addons.portal.controllers.portal import CustomerPortal + + +class CustomCustomerPortal(CustomerPortal): + @route(["/my/account"], type="http", auth="user", website=True) + def account(self, redirect=None, **post): + self.OPTIONAL_BILLING_FIELDS.append("average_acceptable_time") + + response = super(CustomCustomerPortal, self).account(redirect, **post) + + if post and request.httprequest.method == "POST": + error, error_message = self.details_form_validate(post) + if not error: + user = request.env.user + if user.default_project_id and post["average_acceptable_time"]: + user.default_project_id.average_acceptable_time = post["average_acceptable_time"] + + return response diff --git a/project_average_acceptable_time/i18n/README b/project_average_acceptable_time/i18n/README new file mode 100644 index 0000000..62197a1 --- /dev/null +++ b/project_average_acceptable_time/i18n/README @@ -0,0 +1 @@ +This directory should contain the *.po for Odoo translation. diff --git a/project_average_acceptable_time/i18n/fr.po b/project_average_acceptable_time/i18n/fr.po new file mode 100644 index 0000000..12a7e38 --- /dev/null +++ b/project_average_acceptable_time/i18n/fr.po @@ -0,0 +1,46 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * project_average_acceptable_time +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-03-31 09:33+0000\n" +"PO-Revision-Date: 2023-03-31 09:33+0000\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: project_average_acceptable_time +#: model_terms:ir.ui.view,arch_db:project_average_acceptable_time.portal_my_home_average_acceptable_time +msgid "Average acceptable time:" +msgstr "Temps moyen acceptable:" + +#. module: project_average_acceptable_time +#: model_terms:ir.ui.view,arch_db:project_average_acceptable_time.portal_my_home_average_acceptable_time +msgid "Average acceptable time" +msgstr "Temps moyen acceptable" + +#. module: project_average_acceptable_time +#: model_terms:ir.ui.view,arch_db:project_average_acceptable_time.project_project_view_kanban_inherit_average_acceptable_time +msgid "Average acceptable time:&nbsp;" +msgstr "Temps moyen acceptable&nbsp;:&nbsp;" + +#. module: project_average_acceptable_time +#: model:ir.model.fields,field_description:project_average_acceptable_time.field_project_project__average_acceptable_time +msgid "Average acceptable time" +msgstr "Temps moyen acceptable" + +#. module: project_average_acceptable_time +#: model_terms:ir.ui.view,arch_db:project_average_acceptable_time.portal_my_details_average_acceptable_time +msgid "Average acceptable time (h)" +msgstr "Temps moyen acceptable (h)" + +#. module: project_average_acceptable_time +#: model:ir.model,name:project_average_acceptable_time.model_project_project +msgid "Project" +msgstr "Projet" diff --git a/project_average_acceptable_time/models/__init__.py b/project_average_acceptable_time/models/__init__.py new file mode 100644 index 0000000..c6089d0 --- /dev/null +++ b/project_average_acceptable_time/models/__init__.py @@ -0,0 +1,2 @@ + +from . import project_project \ No newline at end of file diff --git a/project_average_acceptable_time/models/project_project.py b/project_average_acceptable_time/models/project_project.py new file mode 100644 index 0000000..8655c6c --- /dev/null +++ b/project_average_acceptable_time/models/project_project.py @@ -0,0 +1,10 @@ + +from odoo import models, fields, _, api + + +class Project(models.Model): + _inherit = "project.project" + + average_acceptable_time = fields.Float('Average acceptable time') + + \ No newline at end of file diff --git a/project_average_acceptable_time/views/portal_home_template.xml b/project_average_acceptable_time/views/portal_home_template.xml new file mode 100644 index 0000000..c2adb1b --- /dev/null +++ b/project_average_acceptable_time/views/portal_home_template.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/project_average_acceptable_time/views/project_project.xml b/project_average_acceptable_time/views/project_project.xml new file mode 100644 index 0000000..0857a24 --- /dev/null +++ b/project_average_acceptable_time/views/project_project.xml @@ -0,0 +1,30 @@ + + + + + + project.project.kanban.inherit.average.acceptable.time + project.project + + + +
+ Average acceptable time: + +
+
+
+
+ + + + project.project.form.inherit.average.acceptable.time + project.project + + + + + + + +
\ No newline at end of file -- 2.49.1