[IMP] Add file import field in portal task creation form

This commit is contained in:
Stéphan Sainléger
2022-09-22 08:56:03 +02:00
parent bab8138f11
commit 0dd04c8ec6
3 changed files with 36 additions and 5 deletions

View File

@@ -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",

View File

@@ -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 + "<br/><br/><b>BUG REPORT:</b><br/>" + 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", {})

View File

@@ -4,7 +4,7 @@
<t t-call="portal.portal_layout">
<!-- <div id="wrap" class="col-lg-6 container"></div> -->
<t t-set="additional_title">Task creation form</t>
<form action="/task/create" method="post">
<form action="/task/create" method="post" accept-charset="UTF-8" class="s_website_form col-md-12 mt32" data-model_name="project.task" data-force_action="" data-success_page="" enctype="multipart/form-data">
<div class="oe_structure" id="oe_structure_portal_task_creation_form_1" />
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()" />
<div class="row">
@@ -62,6 +62,19 @@
<span>Paste here the complete error message (ex: error code Odoo)</span>
</div>
</div>
<!-- ## IMPORT FILE -->
<div class="form-group form-field form-field-binary" data-model-field="false" data-optional="true">
<label class="col-form-label" for="attachment">
<span>Join document</span>
</label>
<i>
<input type="file" name="attachment" multiple="true" data-show-upload="true" data-show-caption="true" data-show-preview="true" />
</i>
<p class="form-text text-muted">
<i>Join a screenshot to your request or any other helpfull document.</i>
<br />
</p>
</div>
<div class="row">
<div t-attf-class="form-group #{error.get('priority') and 'o_has_error' or ''} col-xl-6">
<label class="col-form-label" for="priority">Priority</label>