18 Commits

Author SHA1 Message Date
Stéphan Sainléger
d4d16a092a [MIG] project_task_portal_form: migrate add-on to v13 2023-01-03 12:30:07 +01:00
Stéphan Sainléger
c06be663f0 [MIG] project_user_default_project: migrate add-on to v13 2023-01-03 12:29:06 +01:00
Stéphan Sainléger
30ad8bacc6 [MIG] project_timesheet_funding_wish: migrate add-on to v13 2023-01-03 12:27:02 +01:00
Stéphan Sainléger
8ee9f1d014 [MIG] project_timebox: migrate add-on to v13 2023-01-03 12:25:44 +01:00
Stéphan Sainléger
80a3b0b7e2 [MIG] project_request_data: migrate add-on to v13 2023-01-03 12:24:58 +01:00
Stéphan Sainléger
caf5dba0c2 [MIG] project_funders: migrate add-on to v13 2023-01-03 12:23:37 +01:00
Stéphan Sainléger
adcd1c8381 [MIG] project_assignees: migrate add-on to v13 2023-01-03 12:20:10 +01:00
Stéphan Sainléger
ed987d03b9 [I18N] Add french translations 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
0dd04c8ec6 [IMP] Add file import field in portal task creation form 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
bab8138f11 [ADD] create `project_task_portal_form` add-on 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
75950af5a6 [ADD] create `project_request_data` add-on 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
3b045229d1 [ADD] create `project_user_default_project` add-on 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
5ad7c22034 [IMP] project_assignees: add assignee_ids field to task portal view 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
1952cd17e8 [IMP] project_timebox: add timebox fields in task portal view 2022-10-03 14:56:55 +02:00
Stéphan Sainléger
fd63ab1709 [ADD] project_timebox: create addon to estimate task effort
Adds fields to estimate the min and max time needed to solve a task.

Task: [JOI-13](https://justodooit.fr/mail/view?model=project.task&res_id=13&access_token=cca0b860-25d1-472d-9da1-76f68b01a932)
2022-08-25 17:19:31 +02:00
Stéphan Sainléger
d6fce31db5 [ADD] create `project_timesheet_funding_wish` add-on
Add timesheet line fields:
- ``funding_wish`` to inform about if the user expects a payment
for the registered time.
- ``treated`` to keep track if the timesheet line funding wish has
been taken into account.

Task: JOI-13
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
2022-08-25 17:19:31 +02:00
Nicolas JEUDY
677999bf9f [ADD] create project_funders to track funds on tasks
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
2022-08-25 17:19:31 +02:00
Valentin Lab
d4f7f9626d [ADD] add `project_assignees` add-on
Add a field in ``project.task`` to assign users to task. This
completes ``user_id`` field, that is then considered as the owner of
the task. Assignment becomes optional and can now target multiple
users.

Task: JOI-13
Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
2022-08-25 17:19:31 +02:00
27 changed files with 628 additions and 129 deletions

View File

@@ -3,7 +3,7 @@
{
"name": "project_assignees",
"version": "14.0.1.0.0",
"version": "13.0.1.0.0",
"author": "Elabore",
"website": "https://github.com/elabore-coop/project-tools",
"maintainer": "Stéphan Sainléger",

View File

@@ -1,14 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_assignees
# * project_assignees
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-26 07:38+0000\n"
"PO-Revision-Date: 2022-07-26 07:38+0000\n"
"Last-Translator: \n"
"POT-Creation-Date: 2022-08-25 15:14+0000\n"
"PO-Revision-Date: 2022-08-25 15:14+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -16,14 +16,14 @@ msgstr ""
"Plural-Forms: \n"
#. module: project_assignees
#: model_terms:ir.ui.view,arch_db:project_assignees.portal_my_task_timebox
msgid "<strong>Other assignements</strong>"
#: model_terms:ir.ui.view,arch_db:project_assignees.portal_my_task_assignees
msgid "<strong>Other assignees</strong>"
msgstr "<strong>Autres intervenants</strong>"
#. module: project_assignees
#: model:ir.model.fields,field_description:project_assignees.field_project_task__assignee_ids |
msgid "Assignees" |
msgstr "Autres assignations"
#: model:ir.model.fields,field_description:project_assignees.field_project_task__assignee_ids
msgid "Other Assignees"
msgstr "Autres intervenants"
#. module: project_assignees
#: model:ir.model,name:project_assignees.model_project_task

View File

@@ -1,9 +1,9 @@
from odoo import models, fields
from odoo import models, fields, _
class Task(models.Model):
_inherit = "project.task"
assignee_ids = fields.Many2many('res.users', 'assignee_ids_rel', string='Assignees')
assignee_ids = fields.Many2many('res.users', 'assignee_ids_rel', string='Other Assignees')

View File

@@ -3,7 +3,7 @@
{
"name": "project_funders",
"version": "14.0.1.0.0",
"version": "13.0.0.1.0",
"author": "Alusage",
"website": "https://alusage.fr",
"data": [

View File

@@ -1,57 +0,0 @@
=======================
project_name_from_quote
=======================
.. |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-OCA%2Faccount--analytic-lightgray.png?logo=github
:target: https://github.com/elabore-coop/project-tools
:alt: elabore/hr-tools
|badge1| |badge2| |badge3|
This module tranfers the Quote / Sale order title to the project name.
Installation
============
Use Odoo normal module installation procedure to install ``project_name_from_quote``.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website <https://github.com/elabore-coop/project-tools/issues>`_. 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
=======
Contributors
------------
* Stéphan Sainléger
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
* Datactivist (https://datactivist.coop)
Maintainer
----------
This module is maintained by Elabore.

View File

@@ -1,3 +0,0 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -1,36 +0,0 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_name_from_quote",
"version": "14.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Tools",
"summary": "Use quote name as project name",
# any module necessary for this one to work correctly
"depends": [
"base",
"sale_project",
"account_quotation_sale_order_invoice_title",
],
"qweb": [
# "static/src/xml/*.xml",
],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [],
# 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,
}

View File

@@ -1 +0,0 @@
from . import sale_order

View File

@@ -1,11 +0,0 @@
from typing import ValuesView
from odoo import models
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
def _timesheet_create_project_prepare_values(self):
values = super(SaleOrderLine, self)._timesheet_create_project_prepare_values()
values["name"] = self.order_id.so_title
return values

View File

@@ -3,7 +3,7 @@
{
"name": "project_request_data",
"version": "14.0.1.0.0",
"version": "13.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-08-26 12:51+0000\n"
"PO-Revision-Date: 2022-08-26 12:51+0000\n"

View File

@@ -0,0 +1,7 @@
=====================
project_task_portal_form
=====================
Add a portal form to create project tasks
This is an Odoo addon.

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import controllers

View File

@@ -0,0 +1,86 @@
# Copyright 2022 Stéphan Sainléger (Elabore)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "project_task_portal_form",
"version": "13.0.1.1.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",
"license": "AGPL-3",
"category": "Tools",
"summary": "Add a portal form to create project tasks",
"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_task_portal_form
========================
Add a portal form to create project tasks
Installation
============
Use Odoo normal module installation procedure to install
``project_task_portal_form``.
Known issues / Roadmap
======================
None yet.
Bug Tracker
===========
Bugs are tracked on `our issues website <https://github.com/elabore-coop/project-tools/issues>`_. 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
=======
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.
""",
# any module necessary for this one to work correctly
"depends": [
"base",
"project",
"project_request_data",
"project_user_default_project",
],
"qweb": [],
"external_dependencies": {
"python": [],
},
# always loaded
"data": [
"views/portal_task_creation_form.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,
}

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import portal_task_creation

View File

@@ -0,0 +1,123 @@
# 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
class PortalTaskCreation(CustomerPortal):
_TASK_CREATION_FIELDS = [
"name",
"service_id",
"request_type_id",
"small_description",
"access",
"bug_report",
"priority",
]
# Variable to update to add other fields in child classes
_EXTRA_FIELDS = []
def _taskform_get_page_view_values(self, partner, access_token, **kwargs):
values = {
"page_name": "portal_task_form",
"partner": partner,
}
return self._get_page_view_values(
partner,
access_token,
values,
"my_task_creation_history",
False,
**kwargs
)
def _get_task_priorities(self):
priorities = []
for id, name in request.env['project.task']._fields['priority'].selection:
value = {
"id": id,
"name": name
}
priorities.append(value)
return priorities
@http.route(
["/task/form"],
type="http",
auth="user",
website=True,
)
def portal_task_creation(self, access_token=None, redirect=None, **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()
error = dict()
error_message = []
values.update(
{
"request_types": request_types,
"task_services": task_services,
"priorities": priorities,
"error": error,
"error_message": error_message,
}
)
return request.render("project_task_portal_form.portal_task_creation_form", values)
def _compute_form_data(self, data):
values = {}
for field in self._TASK_CREATION_FIELDS:
if data.get(field):
values[field] = data.pop(field)
for field in self._EXTRA_FIELDS:
if data.get(field):
values[field] = data.pop(field)
description = ""
if values.get("small_description", False):
description = description + "<b>DESCRIPTION:</b><br/>" + values["small_description"]
if values.get("access", False):
description = description + "<br/><br/><b>ACCESS:</b><br/>" + values["access"]
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):
# Get form values
user = request.env.user
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
# Create task
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

@@ -0,0 +1 @@
This directory should contain the *.po for Odoo translation.

View File

@@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_task_portal_form
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-22 09:34+0000\n"
"PO-Revision-Date: 2022-09-22 09:34+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_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "<br/>\n"
" Task created"
msgstr "<br/>\n"
" Tâche créée"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "<span>Be precise. If there is a bug/error, please describe how to reproduce it</span>"
msgstr "<span>Soyez précis. Si vous avez une erreur, veuillez décrire le scénario pour la reproduire</span>"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "<span>Link toward error or additional information</span>"
msgstr "<span>Lien vers l'erreur ou des informations supplémentaires</span>"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "<span>Paste here the complete error message (ex: error code Odoo)</span>"
msgstr "<span>COpier ici le message d'erreur complet (ex: error code Odoo)</span>"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Access"
msgstr "Accès"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "Back to my Home\n"
" <span class=\"fa fa-long-arrow-right\"/>"
msgstr "Retour sur mon espace\n"
" <span class=\"fa fa-long-arrow-right\"/>"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Bug report"
msgstr "Rapport de bug"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Choose a priority..."
msgstr "Choisir la priorité..."
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Choose a service..."
msgstr "Choisir le logiciel"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Choose a type..."
msgstr "Choisir un type de demande"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Description"
msgstr "Description"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Priority"
msgstr "Priorité"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Request type"
msgstr "Type de demande"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Service"
msgstr "Logiciel"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Submit\n"
" <span class=\"fa fa-long-arrow-right\"/>"
msgstr "Soumettre\n"
" <span class=\"fa fa-long-arrow-right\"/>"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "Task created"
msgstr "Tâche créée"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Task creation form"
msgstr "Formulaire de création de tâche"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "Thanks for request!\n"
" <br/>\n"
" A new task has been saved and you can keep track on your request handling from your portal account!\n"
" <br/>"
msgstr "Merci pour votre demande !\n"
" <br/>\n"
" Une nouvelle tâche a été créée et vous pouvez suivre votre demande depuis votre compte portail !\n"
" <br/>"
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Title"
msgstr "Titre"

View File

@@ -0,0 +1,118 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * project_task_portal_form
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-09-22 09:35+0000\n"
"PO-Revision-Date: 2022-09-22 09:35+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_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "<br/>\n"
" Task created"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "<span>Be precise. If there is a bug/error, please describe how to reproduce it</span>"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "<span>Link toward error or additional information</span>"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "<span>Paste here the complete error message (ex: error code Odoo)</span>"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Access"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "Back to my Home\n"
" <span class=\"fa fa-long-arrow-right\"/>"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Bug report"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Choose a priority..."
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Choose a service..."
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Choose a type..."
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Description"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Priority"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Request type"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Service"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Submit\n"
" <span class=\"fa fa-long-arrow-right\"/>"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "Task created"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Task creation form"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_created
msgid "Thanks for request!\n"
" <br/>\n"
" A new task has been saved and you can keep track on your request handling from your portal account!\n"
" <br/>"
msgstr ""
#. module: project_task_portal_form
#: model_terms:ir.ui.view,arch_db:project_task_portal_form.portal_task_creation_form
msgid "Title"
msgstr ""

View File

@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_task_creation_form" name="Portal: Task creation form">
<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" 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">
<div t-attf-class="form-group #{error.get('name') and 'o_has_error' or ''} col-xl-12">
<label class="col-form-label" for="name">Title</label>
<label class="text-danger"> *</label>
<input type="text" name="name" t-attf-class="form-control #{error.get('name') and 'is-invalid' or ''}" t-att-value="name" required="True" />
</div>
</div>
<div class="row">
<div t-attf-class="form-group #{error.get('request_type_id') and 'o_has_error' or ''} col-xl-6">
<label class="col-form-label" for="request_type_id">Request type</label>
<label class="text-danger"> *</label>
<select name="request_type_id" t-attf-class="form-control" required="True">
<option value="">Choose a type...</option>
<t t-foreach="request_types or []" t-as="request_type">
<option t-att-value="request_type.id">
<t t-esc="request_type.name" />
</option>
</t>
</select>
</div>
<div t-attf-class="form-group #{error.get('service_id') and 'o_has_error' or ''} col-xl-6">
<label class="col-form-label" for="service_id">Service</label>
<label class="text-danger"> *</label>
<select name="service_id" t-attf-class="form-control" required="True">
<option value="">Choose a service...</option>
<t t-foreach="task_services or []" t-as="task_service">
<option t-att-value="task_service.id">
<t t-esc="task_service.name" />
</option>
</t>
</select>
</div>
</div>
<div class="row">
<div t-attf-class="form-group #{error.get('small_description') and 'o_has_error' or ''} col-xl-12">
<label class="col-form-label" for="small_description">Description</label>
<label class="text-danger"> *</label>
<textarea rows="4" name="small_description" t-attf-class="form-control #{error.get('small_description') and 'is-invalid' or ''}" t-att-value="small_description" required="True" />
<span>Be precise. If there is a bug/error, please describe how to reproduce it</span>
</div>
</div>
<div class="row">
<div t-attf-class="form-group #{error.get('access') and 'o_has_error' or ''} col-xl-12">
<label class="col-form-label" for="access">Access</label>
<input type="text" name="access" t-attf-class="form-control #{error.get('access') and 'is-invalid' or ''}" t-att-value="access" />
<span>Link toward error or additional information</span>
</div>
</div>
<div class="row">
<div t-attf-class="form-group #{error.get('bug_report') and 'o_has_error' or ''} col-xl-12">
<label class="col-form-label" for="bug_report">Bug report</label>
<textarea rows="4" name="bug_report" t-attf-class="form-control #{error.get('bug_report') and 'is-invalid' or ''}" t-att-value="bug_report" />
<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>
<label class="text-danger"> *</label>
<select name="priority" t-attf-class="form-control" required="True">
<option value="">Choose a priority...</option>
<t t-foreach="priorities or []" t-as="priority">
<option t-att-value="priority['id']">
<t t-esc="priority['name']" />
</option>
</t>
</select>
</div>
</div>
<div class="clearfix">
<br />
<button type="submit" class="btn btn-primary float-right mb32 ">
Submit
<span class="fa fa-long-arrow-right" />
</button>
</div>
<div class="oe_structure" id="oe_structure_portal_task_creation_form_2" />
</form>
</t>
</template>
<template id="portal_task_created" name="Portal: Task created">
<t t-call="portal.portal_layout">
<t t-set="additional_title">Task created</t>
<form action="/my/tasks" method="post">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()" />
<h3>
<br />
Task created
</h3>
<div>
<p>
Thanks for request!
<br />
A new task has been saved and you can keep track on your request handling from your portal account!
<br />
</p>
</div>
<div class="clearfix">
<br />
<button type="submit" class="btn btn-primary float-right mb32 ">
Back to my Tasks
<span class="fa fa-long-arrow-right" />
</button>
</div>
</form>
</t>
</template>
</odoo>

View File

@@ -3,7 +3,7 @@
{
"name": "project_timebox",
"version": "14.0.1.0.0",
"version": "13.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",

View File

@@ -15,6 +15,16 @@ msgstr ""
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: project_timebox
#: model_terms:ir.ui.view,arch_db:project_timebox.portal_my_task_timebox
msgid "<strong>Timebox Max:</strong>"
msgstr "<strong>Temps estimé maxi :</strong>"
#. module: project_timebox
#: model_terms:ir.ui.view,arch_db:project_timebox.portal_my_task_timebox
msgid "<strong>Timebox Min:</strong>"
msgstr "<strong>Temps estimé mini :</strong>"
#. module: project_timebox
#: model:ir.model.fields,field_description:project_timebox.field_timebox__create_uid
msgid "Created by"

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="portal_my_task_timebox" name="My Task: Timebox" inherit_id="project.portal_my_task" priority="40">
<xpath expr="//t[@t-set='card_body']/div[hasclass('row','mb-4')]" position="before">
<xpath expr="//t[@t-set='card_body']/div[hasclass('row','mb-4')]" position="after">
<div id="timebox" class="row mb-2">
<div class="col-12 col-md-6" t-if="task.timebox_min_id">
<strong>Timebox Min:</strong>

View File

@@ -3,7 +3,7 @@
{
"name": "project_timesheet_funding_wish",
"version": "14.0.1.0.0",
"version": "13.0.1.0.0",
"author": "Elabore",
"website": "https://github.com/elabore-coop/project-tools",
"maintainer": "Stéphan Sainléger",

View File

@@ -3,7 +3,7 @@
{
"name": "project_user_default_project",
"version": "14.0.1.0.0",
"version": "13.0.1.0.0",
"author": "Elabore",
"website": "https://elabore.coop",
"maintainer": "Stéphan Sainléger",

View File

@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Project-Id-Version: Odoo Server 13.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-08-25 15:58+0000\n"
"PO-Revision-Date: 2022-08-25 15:58+0000\n"