Repository
OCA/sign · module folder · Try on Runboat
Module version
1.0.0
Category
Uncategorized
Folder size
0.63 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/sign
Last tracking update
2026-08-07 09:06:24
Authors
Odoo Community Association (OCA), Dixmit
Maintainers
Odoo Community Association (OCA), Dixmit
Committers
OCA-git-bot, oca-ci, Yusuke1998
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
fieldservice_sign
Description
This module allows to create documents for signature inside Odoo using
OWL.

Code Analysis

Views touched (31)
XML IDNameModelTypeStatus
portal_my_home Portal layout : sign_requests button ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_sign Portal layout : sign_requests menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_sign_document portal_sign_document ir.ui.view qweb New
portal_sign_document_signed portal_sign_document_signed ir.ui.view qweb New
report_signature_certificate report_signature_certificate ir.ui.view qweb New
report_signature_certificate_doc report_signature_certificate_doc ir.ui.view qweb New
res_config_settings_view_form res.config.settings.view.form (in sign_oca) res.config.settings form Inherits base.res_config_settings_view_form
sign_oca_field_form_view sign.oca.field.form (in sign_oca) sign.oca.field form New
sign_oca_field_search_view sign.oca.field.search (in sign_oca) sign.oca.field search New
sign_oca_field_tree_view sign.oca.field.list (in sign_oca) sign.oca.field list New
sign_oca_request_form_view sign.oca.request.form (in sign_oca) sign.oca.request form New
sign_oca_request_kanban_view sign.oca.request.kanban (in sign_oca) sign.oca.request kanban New
sign_oca_request_log_search_view sign.oca.request.log.search (in sign_oca) sign.oca.request.log search New
sign_oca_request_log_tree_view sign.oca.request.log.list (in sign_oca) sign.oca.request.log list New
sign_oca_request_search_view sign.oca.request.search (in sign_oca) sign.oca.request search New
sign_oca_request_signer_form_view sign.oca.request.signer.form (in sign_oca) sign.oca.request.signer form New
sign_oca_request_signer_kanban_view sign.oca.request.signer.kanban (in sign_oca) sign.oca.request.signer kanban New
sign_oca_request_signer_search_view sign.oca.request.signer.search (in sign_oca) sign.oca.request.signer search New
sign_oca_request_signer_tree_view sign.oca.request.signer.list (in sign_oca) sign.oca.request.signer list New
sign_oca_request_tree_view sign.oca.request.list (in sign_oca) sign.oca.request list New
sign_oca_role_form_view sign.oca.role.form (in sign_oca) sign.oca.role form New
sign_oca_role_search_view sign.oca.role.search (in sign_oca) sign.oca.role search New
sign_oca_role_tree_view sign.oca.role.list (in sign_oca) sign.oca.role list New
sign_oca_template_form_view sign.oca.template.form (in sign_oca) sign.oca.template form New
sign_oca_template_generate_form_view sign.oca.template.generate.form (in sign_oca) sign.oca.template.generate form New
sign_oca_template_generate_multi_form_view sign.oca.template.generate.multi.form sign.oca.template.generate.multi form New
sign_oca_template_kanban_view sign.oca.template.kanban (in sign_oca) sign.oca.template kanban New
sign_oca_template_search_view sign.oca.template.search (in sign_oca) sign.oca.template search New
sign_oca_template_tree_view sign.oca.template.list (in sign_oca) sign.oca.template list New
sign_requests Sign Requests List ir.ui.view qweb New
view_partner_form res.partner.form (in sign_oca) res.partner form Inherits base.view_partner_form
HTTP endpoints (7)
Route(s)HandlerAuthTypeMethodsFlags
/sign_oca/document/<int:signer_id>/<string:access_token> PortalSign.get_sign_oca_access public http ALL website
/sign_oca/content/<int:signer_id>/<string:access_token> PortalSign.get_sign_oca_content_access public http ALL website
/sign_oca/info/<int:signer_id>/<string:access_token> PortalSign.get_sign_oca_info_access public jsonrpc ALL website
/sign_oca/sign/<int:signer_id>/<string:access_token> PortalSign.get_sign_oca_sign_access public jsonrpc ALL website
/my/sign/<int:request_id>/download PortalSign.portal_download_signed user http ALL sudo website
/my/sign_requests, /my/sign_requests/page/<int:page> PortalSign.sign_requests public http ALL website
/sign_oca/get_assets.<any(css,js):ext> SignController.get_sign_resources public http ALL
Models touched (14)

New fields (1)
  • sign_oca_send_sign_request_copy Boolean
    help='Once all signers have signed the request, a copy of the final document will be sent to each of them.' string='Send signers a copy of the final signed document'
Public methods (0)

No public methods.

New fields (1)
  • sign_oca_send_sign_request_copy Boolean
    readonly=False related='company_id.sign_oca_send_sign_request_copy'
Public methods (0)

No public methods.

New fields (2)
  • signer_count Integer
    compute='_compute_signers_count'
  • signer_ids One2many → sign.oca.request.signer
    comodel_name='sign.oca.request.signer' inverse_name='partner_id'
Public methods (1)
  • action_show_signer_ids(self)

New fields (0)

No new fields.

Public methods (1)
  • sign_oca_request_user_count(self)
    @api.model

New fields (3)
  • default_value Char
  • field_type Selection
    default='text' required=True args: [('text', 'Text'), ('signature', 'Signature'), ('check', 'Check')]
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (19)
  • active Boolean
    default=True
  • ask_location Boolean
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • current_hash Char
    copy=False
  • data Binary
    required=True
  • filename Char
  • name Char
    required=True
  • next_item_id Integer
    compute='_compute_next_item_id'
  • record_ref Reference
    string='Object' args: <expr>
  • signatory_data Json
    copy=False default=<expr>
  • signed Boolean
    copy=False
  • signed_count Integer
    compute='_compute_signed_count'
  • signer_count Integer
    compute='_compute_signer_count'
  • signer_id Many2one → sign.oca.request.signer
    comodel_name='sign.oca.request.signer' compute='_compute_signer_id' help='The signer related to the active user.' string='Signer'
  • signer_ids One2many → sign.oca.request.signer
    bypass_search_access=True copy=True inverse_name='request_id' string='Signers' args: 'sign.oca.request.signer'
  • state Selection
    copy=False default='1_draft' required=True tracking=True args: [('0_sent', 'Sent'), ('1_draft', 'Draft'), ('2_signed', 'Signed'), ('3_cancel', 'Cancelled')]
  • template_id Many2one → sign.oca.template
    args: 'sign.oca.template'
  • to_sign Boolean
    compute='_compute_to_sign'
  • user_id Many2one → res.users
    comodel_name='res.users' default=<expr> required=True string='Responsible'
Public methods (12)
  • action_send(self, sign_now=False, message='')
  • action_send_signed_request(self)
  • add_item(self, item_vals)
  • cancel(self)
  • configure(self)
  • create(self, vals_list)
    @api.model_create_multi
  • delete_item(self, item_id)
  • get_info(self)
  • open_template(self)
  • preview(self)
  • set_item_data(self, item_id, vals)
  • sign(self)

New fields (8)
  • access_token Char
  • action Selection
    required=True args: [('create', 'Create'), ('validate', 'Validate'), ('view', 'View Document'), ('sign', 'Sign'), ('add_field', 'Add field'), ('edit_field', 'Edit field'), ('delete_field', 'Delete field'), ('cancel', 'Cancel'), ('configure', 'Configure')]
  • date Datetime
    default=<expr> required=True
  • ip Char
  • partner_id Many2one → res.partner
    default=<expr> required=True args: 'res.partner'
  • request_id Many2one → sign.oca.request
    ondelete='cascade' required=True args: 'sign.oca.request'
  • signer_id Many2one → sign.oca.request.signer
    args: 'sign.oca.request.signer'
  • uid Many2one → res.users
    default=<expr> ondelete='cascade' required=True args: 'res.users'
Public methods (0)

No public methods.

New fields (16)
  • altered_hash Boolean
    compute='_compute_altered_hash'
  • data Binary
    related='request_id.data'
  • inalterable_hash Char
    copy=False readonly=True string='Inalterability Hash'
  • is_allow_signature Boolean
    compute='_compute_is_allow_signature'
  • latitude Float
  • longitude Float
  • model Char
    compute='_compute_model' store=True
  • partner_id Many2one → res.partner
    ondelete='restrict' required=True args: 'res.partner'
  • partner_name Char
    related='partner_id.name'
  • request_id Many2one → sign.oca.request
    ondelete='cascade' required=True args: 'sign.oca.request'
  • res_id Integer
    compute='_compute_res_id' store=True
  • role_id Many2one → sign.oca.role
    ondelete='restrict' required=True args: 'sign.oca.role'
  • secure_sequence_number Integer
    copy=False index=True readonly=True string='Inalteralbility No Gap Sequence #'
  • sequence_id Many2one → ir.sequence
    copy=False default=<expr> args: 'ir.sequence'
  • signature_hash Char
  • signed_on Datetime
Public methods (3)
  • action_sign(self, items, access_token=False, latitude=False, longitude=False)
  • get_info(self, access_token=False)
  • sign(self)

New fields (5)
  • default_partner_id Many2one → res.partner
    comodel_name='res.partner' string='Default partner'
  • domain Char
    default=[] required=True
  • expression_partner Char
    help='Example: {{object.partner_id.id}}' string='Expression'
  • name Char
    required=True
  • partner_selection_policy Selection
    default='empty' help="This field is used to define how the partner will be calculated in the different roles of a request. This field will be used when the 'Sign from Template' action is triggered." required=True selection=[('empty', 'Empty'), ('default', 'Default'), ('expression', 'Expression')]
Public methods (0)

No public methods.

New fields (10)
  • active Boolean
    default=True
  • ask_location Boolean
  • data Binary
    attachment=True required=True
  • filename Char
  • item_ids One2many → sign.oca.template.item
    inverse_name='template_id' args: 'sign.oca.template.item'
  • model Char
    compute='_compute_model' compute_sudo=True store=True string='Model name'
  • model_id Many2one → ir.model
    comodel_name='ir.model' domain=[('transient', '=', False), ('model', 'not like', 'sign.oca')] string='Model'
  • name Char
    required=True
  • request_count Integer
    compute='_compute_request_count'
  • request_ids One2many → sign.oca.request
    inverse_name='template_id' args: 'sign.oca.request'
Public methods (5)
  • add_item(self, item_vals)
  • configure(self)
  • delete_item(self, item_id)
  • get_info(self)
  • set_item_data(self, item_id, vals)

New fields (4)
  • message Html
  • sign_now Boolean
  • signer_ids One2many → sign.oca.template.generate.signer
    default=<expr> inverse_name='wizard_id' args: 'sign.oca.template.generate.signer'
  • template_id Many2one → sign.oca.template
    args: 'sign.oca.template'
Public methods (1)
  • generate(self)

New fields (3)
  • message Html
  • model Char
    default=<expr> readonly=True
  • template_id Many2one → sign.oca.template
    comodel_name='sign.oca.template' domain="[('model', '=', model)]" required=True
Public methods (1)
  • generate(self)

New fields (3)
  • partner_id Many2one → res.partner
    default=<expr> required=True args: 'res.partner'
  • role_id Many2one → sign.oca.role
    readonly=True required=True args: 'sign.oca.role'
  • wizard_id Many2one → sign.oca.template.generate
    ondelete='cascade' args: 'sign.oca.template.generate'
Public methods (0)

No public methods.

New fields (10)
  • field_id Many2one → sign.oca.field
    ondelete='restrict' args: 'sign.oca.field'
  • height Float
  • page Integer
    default=1 required=True
  • placeholder Char
  • position_x Float
    required=True
  • position_y Float
    required=True
  • required Boolean
  • role_id Many2one → sign.oca.role
    default=<expr> ondelete='restrict' args: 'sign.oca.role'
  • template_id Many2one → sign.oca.template
    ondelete='cascade' required=True args: 'sign.oca.template'
  • width Float
Public methods (1)
  • get_info(self)

Loading…

Loading…

Loading…

Loading…

Loading…