Skip to content

Commit

Permalink
[IMP] refactorize the module to better fit standard Odoo (ie stock_pi…
Browse files Browse the repository at this point in the history
…cking)
  • Loading branch information
cvinh committed Feb 10, 2024
1 parent 31f94d6 commit 8b52e12
Show file tree
Hide file tree
Showing 11 changed files with 161 additions and 31 deletions.
2 changes: 1 addition & 1 deletion project_task_digitized_signature/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Project Task Digitized Signature
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:590c2ad0d45b2e03ad1244b0f30f096058308e0853a83a7562f66d2209006182
!! source digest: sha256:a275f4c10c6de3aba043344f6f78cef70b03e32dd735358586a58c06c8edfb77
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
Expand Down
7 changes: 6 additions & 1 deletion project_task_digitized_signature/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
"category": "Project Management",
"license": "AGPL-3",
"depends": ["project_task_report"],
"data": ["report/project_task_report.xml", "views/project_task_views.xml"],
"data": [
"security/project_task_digitized_signature_security.xml",
"views/res_config_settings_views.xml",
"report/project_task_report.xml",
"views/project_task_views.xml",
],
"installable": True,
}
1 change: 1 addition & 0 deletions project_task_digitized_signature/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import res_config_settings
from . import project
36 changes: 32 additions & 4 deletions project_task_digitized_signature/models/project.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,40 @@
# Copyright 2017 Tecnativa - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import fields, models
from odoo import _, api, fields, models


class ProjectTask(models.Model):
_inherit = "project.task"

customer_signature = fields.Binary(
string="Customer acceptance",
)
signature = fields.Image(help="Signature", copy=False, attachment=True)
is_signed = fields.Boolean(compute="_compute_is_signed")

@api.depends("signature")
def _compute_is_signed(self):
for task in self:
task.is_signed = task.signature

def write(self, vals):
res = super(ProjectTask, self).write(vals)
if vals.get("signature"):
for task in self:
task._attach_sign()
return res

def _attach_sign(self):
"""Render the delivery report in pdf and attach it to the task in `self`."""
self.ensure_one()
report = self.env["ir.actions.report"]._render_qweb_pdf(
"project_task_report.report_project_task_action", self.id
)
filename = "%s_signed_task_report" % self.name
if self.partner_id:
message = _("Task signed by %s") % (self.partner_id.name)
else:
message = _("Task signed")
self.message_post(
attachments=[("%s.pdf" % filename, report[0])],
body=message,
)
return True
10 changes: 10 additions & 0 deletions project_task_digitized_signature/models/res_config_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from odoo import fields, models


class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"

group_project_sign_task = fields.Boolean(
"Task Signature",
implied_group="project_task_digitized_signature.group_project_sign_task",
)
29 changes: 13 additions & 16 deletions project_task_digitized_signature/report/project_task_report.xml
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
<?xml version="1.0" ?>
<odoo>
<template
id="report_taskorder_document"
inherit_id="project_task_report.task_report"
>
<template id="report_task_document" inherit_id="project_task_report.task_report">
<xpath expr="//span[@t-field='o.description']" position="after">
<div class="row">
<div id="signature">
<p>
<strong>Customer acceptance:</strong>
<span t-if="o.customer_signature">
<img
class="image"
t-att-src="image_data_uri(o.customer_signature)"
style="border:auto;"
/>
</span>
</p>
<div t-if="o.signature" class="mt32 ml64 mr4" name="signature">
<div class="offset-8">
<strong>Signature</strong>
</div>
<div class="offset-8">
<img
t-att-src="image_data_uri(o.signature)"
style="max-height: 4cm; max-width: 8cm;"
/>
</div>
<div class="offset-8 text-center">
<p t-field="o.partner_id.name" />
</div>
</div>
</xpath>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="group_project_sign_task" model="res.groups">
<field name="name">Require a signature on your project tasks</field>
<field name="category_id" ref="base.module_category_hidden" />
</record>
</odoo>
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ <h1 class="title">Project Task Digitized Signature</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:590c2ad0d45b2e03ad1244b0f30f096058308e0853a83a7562f66d2209006182
!! source digest: sha256:a275f4c10c6de3aba043344f6f78cef70b03e32dd735358586a58c06c8edfb77
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/project/tree/16.0/project_task_digitized_signature"><img alt="OCA/project" src="https://img.shields.io/badge/github-OCA%2Fproject-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/project-16-0/project-16-0-project_task_digitized_signature"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/project&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module adds a signature field to task report.</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ def setUpClass(cls):

def test_task_digitized_signature(self):
# We add signature and write.
self.task.customer_signature = (
self.task.signature = (
"R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw =="
)
# We create a new one.
sign = "R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw =="
self.task = self.env["project.task"].create(
{"name": "Task test #2", "customer_signature": sign}
{"name": "Task test #2", "signature": sign}
)
70 changes: 64 additions & 6 deletions project_task_digitized_signature/views/project_task_views.xml
Original file line number Diff line number Diff line change
@@ -1,14 +1,72 @@
<?xml version="1.0" ?>
<odoo>
<record id="view_task_form2" model="ir.ui.view">
<field name="name">project.task.form</field>
<record id="view_task_tree_signed" model="ir.ui.view">
<field name="name">project.task.tree.signed</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_tree2" />
<field name="arch" type="xml">
<field name="kanban_state" position="after">
<field
name="is_signed"
string="Signed"
optional="hide"
groups="project_task_digitized_signature.group_project_sign_task"
/>
</field>
</field>
</record>
<record id="view_task_signed" model="ir.ui.view">
<field name="name">project.task.form.signed</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_form2" />
<field name="arch" type="xml">
<xpath expr="//field[@name='description']" position="after">
<div class="oe_clear" />
<label for="customer_signature" class="oe_edit_only" />
<field name="customer_signature" widget="signature" />
<header position="inside">
<widget
name="signature"
string="Sign"
attrs="{'invisible': ['|', ('id', '=', False), ('is_signed', '=', True)]}"
full_name="partner_id"
groups="project_task_digitized_signature.group_project_sign_task"
/>
</header>
<div name="button_box" position="after">
<field name="is_signed" invisible="1" />
<widget
name="web_ribbon"
title="Signed"
attrs="{'invisible': [('is_signed', '!=', True)]}"
groups="project_task_digitized_signature.group_project_sign_task"
/>
</div>
</field>
</record>
<record id="view_task_kanban_signed" model="ir.ui.view">
<field name="name">project.task.kanban.signed</field>
<field name="model">project.task</field>
<field name="inherit_id" ref="project.view_task_kanban" />
<field name="arch" type="xml">
<kanban position="inside">
<field name="is_signed" />
</kanban>
<xpath expr="//div[hasclass('oe_kanban_bottom_left')]" position="inside">
<b groups="project_task_digitized_signature.group_project_sign_task">
<span
style="font-weight:bold;"
class="fa fa-fw mt4 fa-pencil text-success"
t-if="record.is_signed.raw_value"
title="Signed"
role="img"
aria-label="Signed"
/>
<span
style="font-weight:bold;"
class="fa fa-fw mt4 fa-pencil text-danger"
t-else=""
title="Not Signed"
role="img"
aria-label="Not Signed"
/>
</b>
</xpath>
</field>
</record>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.stock</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="30" />
<field name="inherit_id" ref="project.res_config_settings_view_form" />
<field name="arch" type="xml">
<xpath expr="//div[@id='tasks_management']" position="inside">
<div class="col-12 col-lg-6 o_setting_box" id="signature_project_tasks">
<div class="o_setting_left_pane">
<field name="group_project_sign_task" />
</div>
<div class="o_setting_right_pane">
<label for="group_project_sign_task" />
<div class="text-muted">
Require a signature on your project tasks
</div>
</div>
</div>
</xpath>
</field>
</record>
</odoo>

0 comments on commit 8b52e12

Please sign in to comment.