Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions survey_certification_py3o/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
=========================
Survey Certification Py3o
=========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:026ff4a6abc3a65a3d44129037ba8fc3af4567163f241973860abeb305343895
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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%2Fsurvey-lightgray.png?logo=github
:target: https://github.com/OCA/survey/tree/17.0/survey_certification_py3o
:alt: OCA/survey
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/survey-17-0/survey-17-0-survey_certification_py3o
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/survey&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows customisation of the certification report of a survey
using odt templates.

**Table of contents**

.. contents::
:local:

Usage
=====

To use this module, you need to:

1. Go to Survey > Surveys.
2. Create or edit a certification survey.
3. Select a template for the existing certification report or upload a
new template.
4. Complete a certification survey to receive the report and verify that
the customisations of the py3o template have been applied.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/survey/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/survey/issues/new?body=module:%20survey_certification_py3o%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Tecnativa

Contributors
------------

- `Tecnativa <https://www.tecnativa.com>`__

- David Vidal
- Pilar Vargas

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-pilarvargas-tecnativa| image:: https://github.com/pilarvargas-tecnativa.png?size=40px
:target: https://github.com/pilarvargas-tecnativa
:alt: pilarvargas-tecnativa

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-pilarvargas-tecnativa|

This module is part of the `OCA/survey <https://github.com/OCA/survey/tree/17.0/survey_certification_py3o>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
2 changes: 2 additions & 0 deletions survey_certification_py3o/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import controllers
from . import models
18 changes: 18 additions & 0 deletions survey_certification_py3o/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Survey Certification Py3o",
"version": "17.0.1.0.0",
"author": "Tecnativa, Odoo Community Association (OCA)",
"development_status": "Beta",
"category": "Marketing/Survey",
"website": "https://github.com/OCA/survey",
"maintainers": ["pilarvargas-tecnativa"],
"license": "AGPL-3",
"depends": ["report_py3o", "survey"],
"data": [
"views/survey_reports.xml",
"views/survey_survey_views.xml",
],
"installable": True,
}
1 change: 1 addition & 0 deletions survey_certification_py3o/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import main
33 changes: 33 additions & 0 deletions survey_certification_py3o/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo.http import content_disposition, request

from odoo.addons.survey.controllers.main import Survey


class Survey(Survey):
def _generate_report(self, user_input, download=True):
if not user_input.py3o_template_id:
return super()._generate_report(user_input, download=download)
report = (

Check warning on line 12 in survey_certification_py3o/controllers/main.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/controllers/main.py#L11-L12

Added lines #L11 - L12 were not covered by tests
request.env["ir.actions.report"]
.sudo()
._render_py3o(
"survey_certification_py3o.custom_certification_report",
[user_input.id],
data={"report_type": "pdf"},
)[0]
)
report_content_disposition = content_disposition("Certification.pdf")

Check warning on line 21 in survey_certification_py3o/controllers/main.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/controllers/main.py#L21

Added line #L21 was not covered by tests
if not download:
content_split = report_content_disposition.split(";")
content_split[0] = "inline"
report_content_disposition = ";".join(content_split)
return request.make_response(

Check warning on line 26 in survey_certification_py3o/controllers/main.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/controllers/main.py#L23-L26

Added lines #L23 - L26 were not covered by tests
report,
headers=[
("Content-Type", "application/pdf"),
("Content-Length", len(report)),
("Content-Disposition", report_content_disposition),
],
)
Binary file not shown.
50 changes: 50 additions & 0 deletions survey_certification_py3o/i18n/survey_certification_py3o.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * survey_certification_py3o
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \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: survey_certification_py3o
#: model:ir.actions.report,name:survey_certification_py3o.custom_certification_report
msgid "Custom Certifications"
msgstr ""

#. module: survey_certification_py3o
#: model_terms:ir.ui.view,arch_db:survey_certification_py3o.survey_form
msgid "Custom Template"
msgstr ""

#. module: survey_certification_py3o
#: model:ir.model,name:survey_certification_py3o.model_mail_template
msgid "Email Templates"
msgstr ""

#. module: survey_certification_py3o
#: model:ir.model,name:survey_certification_py3o.model_py3o_report
msgid "Report Py30"
msgstr ""

#. module: survey_certification_py3o
#: model:ir.model,name:survey_certification_py3o.model_survey_survey
msgid "Survey"
msgstr ""

#. module: survey_certification_py3o
#: model:ir.model,name:survey_certification_py3o.model_survey_user_input
msgid "Survey User Input"
msgstr ""

#. module: survey_certification_py3o
#: model:ir.model.fields,field_description:survey_certification_py3o.field_survey_survey__py3o_template_id
#: model:ir.model.fields,field_description:survey_certification_py3o.field_survey_user_input__py3o_template_id
msgid "Template"
msgstr ""
4 changes: 4 additions & 0 deletions survey_certification_py3o/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from . import mail_template
from . import py3o_report
from . import survey_survey
from . import survey_user_input
18 changes: 18 additions & 0 deletions survey_certification_py3o/models/mail_template.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import models


class MailTemplate(models.Model):
_inherit = "mail.template"

def generate_email(self, res_ids, fields=None):
self.ensure_one()

Check warning on line 10 in survey_certification_py3o/models/mail_template.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/models/mail_template.py#L10

Added line #L10 was not covered by tests
if (
self.model == "survey.user_input"
and self.env["survey.user_input"].browse(res_ids).py3o_template_id
):
self.report_template = self.env.ref(

Check warning on line 15 in survey_certification_py3o/models/mail_template.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/models/mail_template.py#L15

Added line #L15 was not covered by tests
"survey_certification_py3o.custom_certification_report"
)
return super().generate_email(res_ids, fields=fields)

Check warning on line 18 in survey_certification_py3o/models/mail_template.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/models/mail_template.py#L18

Added line #L18 was not covered by tests
17 changes: 17 additions & 0 deletions survey_certification_py3o/models/py3o_report.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from base64 import b64decode

from odoo import models


class Py3oReport(models.TransientModel):
_inherit = "py3o.report"

def _get_template_fallback(self, model_instance):
if (
model_instance._name == "survey.user_input"
and model_instance.py3o_template_id
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't this model_instance.survey_id.py3o_template_id?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

):
return b64decode(model_instance.py3o_template_id.py3o_template_data)
return super()._get_template_fallback(model_instance)

Check warning on line 17 in survey_certification_py3o/models/py3o_report.py

View check run for this annotation

Codecov / codecov/patch

survey_certification_py3o/models/py3o_report.py#L17

Added line #L17 was not covered by tests
9 changes: 9 additions & 0 deletions survey_certification_py3o/models/survey_survey.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models


class SurveySurvey(models.Model):
_inherit = "survey.survey"

py3o_template_id = fields.Many2one("py3o.template", "Template")
9 changes: 9 additions & 0 deletions survey_certification_py3o/models/survey_user_input.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Copyright 2025 Tecnativa - Pilar Vargas
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models


class SurveySurvey(models.Model):
_inherit = "survey.user_input"

py3o_template_id = fields.Many2one(related="survey_id.py3o_template_id")
3 changes: 3 additions & 0 deletions survey_certification_py3o/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
3 changes: 3 additions & 0 deletions survey_certification_py3o/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- [Tecnativa](https://www.tecnativa.com)
- David Vidal
- Pilar Vargas
2 changes: 2 additions & 0 deletions survey_certification_py3o/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
This module allows customisation of the certification report of a survey
using odt templates.
8 changes: 8 additions & 0 deletions survey_certification_py3o/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
To use this module, you need to:

1. Go to Survey \> Surveys.
2. Create or edit a certification survey.
3. Select a template for the existing certification report or upload a
new template.
4. Complete a certification survey to receive the report and verify
that the customisations of the py3o template have been applied.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading