diff --git a/project_task_portal_form/__manifest__.py b/project_task_portal_form/__manifest__.py index e53d18f..48b7918 100644 --- a/project_task_portal_form/__manifest__.py +++ b/project_task_portal_form/__manifest__.py @@ -3,7 +3,7 @@ { "name": "project_task_portal_form", - "version": "12.0.1.0.0", + "version": "12.0.1.1.0", "author": "Elabore", "website": "https://elabore.coop", "maintainer": "Stéphan Sainléger", diff --git a/project_task_portal_form/controllers/portal_task_creation.py b/project_task_portal_form/controllers/portal_task_creation.py index 17b9d38..4ee67a2 100644 --- a/project_task_portal_form/controllers/portal_task_creation.py +++ b/project_task_portal_form/controllers/portal_task_creation.py @@ -1,5 +1,6 @@ # Copyright 2020 Lokavaluto () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import base64 from odoo import http from odoo.http import request from odoo.addons.portal.controllers.portal import CustomerPortal @@ -50,8 +51,7 @@ class PortalTaskCreation(CustomerPortal): website=True, ) def portal_task_creation(self, access_token=None, redirect=None, **kw): - partner = request.env.user.partner_id - values = self._task_get_page_view_values(partner, access_token, **kw) + values = self._task_get_page_view_values(request.env.user.partner_id, access_token, **kw) request_types = request.env["request.type"].sudo().search([]) task_services = request.env["task.service"].sudo().search([]) priorities = self._get_task_priorities() @@ -84,12 +84,19 @@ 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) return values @http.route( ["/task/create"], type="http", auth="public", + methods=['POST'], website=True, ) def create_task(self, **kwargs): @@ -101,5 +108,16 @@ class PortalTaskCreation(CustomerPortal): values["user_id"] = None # Create task - request.env["project.task"].create(values) + task_id = request.env["project.task"].create(values) + + # Add attachments + for file in values.get("attachments", False): + attachment_value = { + 'name': file.filename, + 'datas': base64.encodestring(file.read()), + 'datas_fname': file.filename, + 'res_model': "project.task", + 'res_id': task_id, + } + request.env['ir.attachment'].sudo().create(attachment_value) return request.render("project_task_portal_form.portal_task_created", {}) 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 cec7a91..eed740f 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,7 @@ Task creation form - + @@ -62,6 +62,19 @@ Paste here the complete error message (ex: error code Odoo) + + + + Join document + + + + + + Join a screenshot to your request or any other helpfull document. + + + Priority
+ Join a screenshot to your request or any other helpfull document. + +