| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/connector-jira |
| GIT | |
| GIT | https://github.com/OCA/connector-jira.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/connector-jira/tree/17.0/connector_jira |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Connector |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Weblate, OCA-git-bot, SilvioC2C, oca-ci, Vincent Van Rossem |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/connector-jira |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:59:36 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - connector - component - component_event OCA/queue: - queue_job OCA/server-ux: - multi_step_wizard OCA/web: - web_widget_url_advanced odoo/odoo: - project - analytic - base - base_setup - web - bus - web_tour - uom - portal - web_editor - http_routing - auth_signup - rating - resource - digest - hr_timesheet - hr - phone_validation - hr_hourly_cost - base_sparse_field |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyJWT>=1.7.1,<2.9.0 atlassian_jwt>=3.0.0 cryptography>=38,<39 jira==3.10.5 oauthlib>=2.1.0 requests-jwt>=0.6.0 requests-oauthlib>=1.1.0 requests-toolbelt>=0.9.1 requests>=2.21.0 requests cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
backend_report_user_sync |
JIRA backend report_user_sync | ir.ui.view | qweb | New |
edit_project |
project.project.form | project.project | xpath | Inherits project.edit_project |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_search |
hr_timesheet_line_tree |
account.analytic.line.tree | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_tree |
project_link_jira_form |
project.link.jira.form | project.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
project_project_view_form_simplified |
project.project.view.form.simplified.jira | project.project | xpath | Inherits project.project_project_view_form_simplified_footer |
task_link_jira_form |
task.link.jira.form | task.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
view_jira_aa_line_import |
Refresh Worklogs from Jira | jira.account.analytic.line.import | form | New |
view_jira_backend_form |
jira.backend.form | jira.backend | form | New |
view_jira_backend_tree |
jira.backend.tree | jira.backend | tree | New |
view_jira_issue_type_form |
jira.issue.type.form | jira.issue.type | form | New |
view_jira_issue_type_tree |
jira.issue.type.tree | jira.issue.type | tree | New |
view_jira_project_project_form |
jira.project.project.form | jira.project.project | form | New |
view_jira_project_project_tree |
jira.project.project.tree | jira.project.project | tree | New |
view_jira_project_task_form |
jira.project.task.form | jira.project.task | form | New |
view_jira_project_task_tree |
jira.project.task.tree | jira.project.task | tree | New |
view_jira_res_users_form |
jira.res.users.form | jira.res.users | form | New |
view_jira_res_users_tree |
jira.res.users.tree | jira.res.users | tree | New |
view_project |
project.project.tree | project.project | field | Inherits project.view_project |
view_project_kanban_jira |
project.project.kanban.jira | project.project | xpath | Inherits project.view_project_kanban |
view_task_form2 |
project.task.form | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | field | Inherits project.view_task_kanban |
view_task_search_form |
project.task.search.form | project.task | field | Inherits project.view_task_search_form |
view_task_tree2 |
project.task.tree | project.task | field | Inherits project.view_task_tree2 |
view_users_form |
res.users.form | res.users | xpath | Inherits base.view_users_form |
jira_bind_ids
One2many → jira.account.analytic.line
comodel_name='jira.account.analytic.line'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Worklog Bindings'
jira_epic_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_references'
compute_sudo=True
store=True
string='Original JIRA Epic Link'
jira_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_references'
compute_sudo=True
store=True
string='Original JIRA issue Link'
action_open_refresh_worklogs_from_jira_wizard(self)
create(self, vals_list)
write(self, vals)
jira_epic_issue_key
Char
string='Original Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_issue_url'
store=True
string='Original JIRA Epic Link'
jira_issue_id
Char
jira_issue_key
Char
string='Original Task Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
string='Original Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
store=True
string='Original JIRA issue Link'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → account.analytic.line
comodel_name='account.analytic.line'
index=True
ondelete='restrict'
required=True
string='Timesheet'
force_reimport(self)
import_record(self, backend, issue_id, worklog_id, force=False)
analytic_binding_ids
Many2many → jira.account.analytic.line
relation='import_wiz_2_analytic_bindings'
args: 'jira.account.analytic.line'
analytic_line_ids
Many2many → account.analytic.line
relation='import_wiz_2_analytic_lines'
args: 'account.analytic.line'
confirm(self)
app_descriptor_url
Char
compute='_compute_app_descriptor_url'
help='URL to use when registering the backend as an app on the marketplace'
string='App Descriptor URL'
application_key
Char
compute='_compute_application_key'
help='The name that will be used as application key to register the app on the Atlassian marketplace website.\nIt has to be unique among all apps on the marketplace.'
store=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
delete_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_delete_analytic_line_from_date'
string='Delete Extra Worklogs from date'
display_url
Char
help='Url used for the Jira app in messages'
epic_link_field_name
Char
help="The 'Epic Link' field on JIRA is a custom field. The name of the field is something like 'customfield_10002'. "
string='Epic Link Field'
epic_link_on_epic
Boolean
help='Epics on JIRA cannot be linked to another epic. Check this boxto fill the epic field with itself on Odoo.'
epic_name_field_name
Char
help="The 'Epic Name' field on JIRA is a custom field. The name of the field is something like 'customfield_10003'. "
string='Epic Name Field'
import_analytic_line_force
Boolean
import_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_analytic_line_from_date'
string='Import Worklogs from date'
import_project_task_force
Boolean
import_project_task_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_project_task_from_date'
string='Import Project Tasks from date'
issue_type_ids
One2many → jira.issue.type
comodel_name='jira.issue.type'
inverse_name='backend_id'
string='Issue Types'
name
Char
help='Display name of the app on the Atlassian Marketplace. Max 60 chars.'
size=60
private_key
Char
groups='connector.group_connector_manager'
help='The shared secret for JWT, provided at app installation'
project_template
Selection
default='Scrum software development'
required=True
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template Key'
public_key
Text
help='The Client Key for JWT, provided at app installation'
report_user_sync
Html
state
Selection
default='setup'
help='State of the Backend.\nSetup: in this state you can register the backend on https://marketplace.atlassian.com/ as an app, using the app descriptor url.\nRunning: when you have installed the backend on a Jira cloud instance (transition is automatic).'
required=True
selection=[('setup', 'Setup'), ('running', 'Running')]
uri
Char
help='the value is provided when the app is installed on Jira Cloud.'
string='Jira URI'
verify_ssl
Boolean
default=True
string='Verify SSL?'
worklog_date_timezone
Selection
default=<expr>
selection=<expr>
worklog_date_timezone_mode
Selection
default='naive'
help="Worklog/Timesheet date timezone modes:\n - As-is (naive): ignore timezone information\n - Jira User: use author's timezone\n - Specific: use pre-configured timezone\n"
selection=[('naive', 'As-is (naive)'), ('user', 'Jira User'), ('specific', 'Specific')]
worklog_fallback_project_id
Many2one → project.project
comodel_name='project.project'
help="Worklogs which could not be linked to any project will be created in this project. Worklogs landing in the fallback project can be reassigned to the correct project by: 1. linking the expected project with the Jira one, 2. using 'Refresh Worklogs from Jira' on the timesheet lines."
string='Fallback for Worklogs'
activate_epic_link(self)
button_setup(self)
check_connection(self)
create(self, vals_list)
delete_analytic_line(self)
get_api_client(self)
get_user_resolution_order(self)
import_analytic_line(self)
import_issue_type(self)
import_project_task(self)
import_res_users(self)
make_issue_url(self, jira_issue_id)
state_running(self)
state_setup(self)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
required=True
string='Jira Backend'
component_usage
Char
help='Used by the connector to find which component execute the batch import (technical).'
required=True
from_date_field
Char
required=True
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
ondelete='restrict'
required=True
string='Jira Backend'
external_id
Char
index='trigram'
string='ID on Jira'
delete_record(self, backend, external_id, only_binding=False, set_inactive=False)
export_record(self, fields=None)
import_batch(self, backend)
import_record(self, backend, external_id, force=False, record=None)
run_batch_timestamp(self, backend, timestamp, force=False)
backend_id
Many2one
ondelete='cascade'
description
Char
name
Char
required=True
import_batch(self, backend, from_date=None, to_date=None)
is_sync_for_project(self, project_binding)
jira_key
Char
required=True
size=10
string='JIRA Key'
project_template
Selection
default='Scrum software development'
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template'
sync_action
Selection
default='link'
help='Defines if the information of the project (name and key) are exported to JIRA when changed. Link meansthe project already exists on JIRA, no sync of the project details once the link is established. Tasks are always imported from JIRA, not pushed.'
required=True
selection=[('link', 'Link with JIRA'), ('export', 'Export to JIRA')]
sync_issue_type_ids
Many2many → jira.issue.type
comodel_name='jira.issue.type'
domain="[('backend_id', '=', backend_id)]"
help="Only issues of these levels are imported. When a worklog is imported no a level which is not sync'ed, it is attached to the nearest sync'ed parent level. If no parent can be found, it is attached to a special 'Unassigned' task."
string='Issue Levels to Synchronize'
No public methods.
odoo_id
Many2one → project.project
comodel_name='project.project'
index=True
ondelete='restrict'
required=True
string='Project'
project_type
Selection
selection='_selection_project_type'
create(self, vals_list)
onchange_project_backend_id(self)
write(self, values)
jira_epic_link_id
Many2one → jira.project.task
comodel_name='jira.project.task'
string='Epic'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
string='Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_key
Char
string='Key'
jira_parent_id
Many2one → jira.project.task
comodel_name='jira.project.task'
help='Parent issue when the issue is a subtask. Empty if the type of parent is filtered out of the synchronizations.'
string='Parent Issue'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → project.task
comodel_name='project.task'
index=True
ondelete='restrict'
required=True
string='Task'
No public methods.
odoo_id
Many2one → res.users
comodel_name='res.users'
index=True
ondelete='restrict'
required=True
string='User'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
default=<expr>
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
default=<expr>
jira_project_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='cascade'
project_id
Many2one → project.project
comodel_name='project.project'
default=<expr>
name='Project'
ondelete='cascade'
required=True
add_all_issue_types(self)
state_exit_export_config(self)
state_exit_issue_types(self)
state_exit_start(self)
jira_bind_ids
One2many → jira.project.project
comodel_name='jira.project.project'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Project Bindings'
jira_key
Char
compute='_compute_jira_key'
store=True
string='JIRA Key'
create_and_link_jira(self)
jira_bind_ids
One2many → jira.project.task
comodel_name='jira.project.task'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Task Bindings'
jira_compound_key
Char
compute='_compute_jira_compound_key'
store=True
string='JIRA Key'
jira_epic_link_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_epic_link_task_id'
store=True
string='JIRA Epic'
jira_issue_type
Char
compute='_compute_jira_issue_type'
store=True
string='JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_parent_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_parent_task_id'
store=True
string='JIRA Parent'
create(self, vals_list)
create_and_link_jira(self)
write(self, vals)
No new fields.
Public methods (1)related_action_jira_link(self) -> dict
jira_bind_ids
One2many → jira.res.users
comodel_name='jira.res.users'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='User Bindings'
button_link_with_jira(self)
link_with_jira(self, backends=None, raise_if_mismatch=False)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
domain="[('id', 'in', linked_backend_ids)]"
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
required=True
string='JIRA Key'
jira_task_id
Many2one → jira.project.task
comodel_name='jira.project.task'
ondelete='cascade'
linked_backend_ids
Many2many → jira.backend
comodel_name='jira.backend'
task_id
Many2one → project.task
comodel_name='project.task'
name='Task'
ondelete='cascade'
required=True
state_exit_start(self)
jira_epic_issue_key
Char
readonly=True
jira_issue_key
Char
readonly=True
jira_issue_type_id
Many2one → jira.issue.type
readonly=True
args: 'jira.issue.type'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/connector-jira |
| GIT | |
| GIT | https://github.com/OCA/connector-jira.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/connector-jira/tree/15.0/connector_jira |
| VERSION | |
| VERSION | 1.0.1 |
| CATEGORY | |
| CATEGORY | Connector |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Alexey Pelykh, Sébastien Alix, Denis Leemann, OCA-git-bot, oca-ci, sonhd |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/connector-jira |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:46:44 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - connector - component - component_event OCA/queue: - queue_job OCA/server-ux: - multi_step_wizard OCA/web: - web_widget_url_advanced odoo/odoo: - base - base_setup - web - bus - web_tour - base_sparse_field - project - analytic - uom - portal - web_editor - http_routing - auth_signup - rating - resource - digest - hr_timesheet - hr |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
PyJWT cryptography jira oauthlib requests requests-oauthlib requests-toolbelt cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
backend_report_user_sync |
JIRA backend report_user_sync | ir.ui.view | qweb | New |
edit_project |
project.project.form | project.project | xpath | Inherits project.edit_project |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_search |
hr_timesheet_line_tree |
account.analytic.line.tree | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_tree |
project_link_jira_form |
project.link.jira.form | project.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
project_project_view_form_simplified |
project.project.view.form.simplified.jira | project.project | xpath | Inherits project.project_project_view_form_simplified_footer |
task_link_jira_form |
task.link.jira.form | task.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
view_jira_aa_line_import |
Refresh Worklogs from Jira | jira.account.analytic.line.import | form | New |
view_jira_backend_auth_form |
jira.backend.auth.form | jira.backend.auth | form | New |
view_jira_backend_form |
jira.backend.form | jira.backend | form | New |
view_jira_backend_tree |
jira.backend.tree | jira.backend | tree | New |
view_jira_issue_type_form |
jira.issue.type.form | jira.issue.type | form | New |
view_jira_issue_type_tree |
jira.issue.type.tree | jira.issue.type | tree | New |
view_jira_project_project_form |
jira.project.project.form | jira.project.project | form | New |
view_jira_project_project_tree |
jira.project.project.tree | jira.project.project | tree | New |
view_jira_project_task_form |
jira.project.task.form | jira.project.task | form | New |
view_jira_project_task_tree |
jira.project.task.tree | jira.project.task | tree | New |
view_jira_res_users_form |
jira.res.users.form | jira.res.users | form | New |
view_jira_res_users_tree |
jira.res.users.tree | jira.res.users | tree | New |
view_project |
project.project.tree | project.project | field | Inherits project.view_project |
view_project_kanban |
project.project.kanban | project.project | field | Inherits project.view_project_kanban |
view_project_kanban_jira |
project.project.kanban.jira | project.project | xpath | Inherits project.view_project_kanban |
view_task_form2 |
project.task.form | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | field | Inherits project.view_task_kanban |
view_task_search_form |
project.task.search.form | project.task | field | Inherits project.view_task_search_form |
view_task_tree2 |
project.task.tree | project.task | field | Inherits project.view_task_tree2 |
view_users_form |
res.users.form | res.users | xpath | Inherits base.view_users_form |
jira_bind_ids
One2many → jira.account.analytic.line
comodel_name='jira.account.analytic.line'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Worklog Bindings'
jira_epic_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_references'
compute_sudo=True
string='Original JIRA Epic Link'
jira_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_references'
compute_sudo=True
string='Original JIRA issue Link'
create(self, vals)
unlink(self)
write(self, vals)
jira_epic_issue_key
Char
readonly=True
string='Original Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA Epic Link'
jira_issue_id
Char
jira_issue_key
Char
readonly=True
string='Original Task Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Original Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA issue Link'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → account.analytic.line
comodel_name='account.analytic.line'
index=True
ondelete='restrict'
required=True
string='Timesheet Line'
force_reimport(self)
import_record(self, backend, issue_id, worklog_id, force=False)
No new fields.
Public methods (1)confirm(self)
access_secret
Char
groups='connector.group_connector_manager'
readonly=True
access_token
Char
groups='connector.group_connector_manager'
readonly=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
consumer_key
Char
default=<expr>
groups='connector.group_connector_manager'
readonly=True
delete_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_delete_analytic_line_from_date'
string='Delete Extra Worklogs from date'
epic_link_field_name
Char
help="The 'Epic Link' field on JIRA is a custom field. The name of the field is something like 'customfield_10002'. "
string='Epic Link Field'
epic_link_on_epic
Boolean
help='Epics on JIRA cannot be linked to another epic. Check this boxto fill the epic field with itself on Odoo.'
epic_name_field_name
Char
help="The 'Epic Name' field on JIRA is a custom field. The name of the field is something like 'customfield_10003'. "
string='Epic Name Field'
import_analytic_line_force
Boolean
import_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_analytic_line_from_date'
string='Import Worklogs from date'
import_project_task_force
Boolean
import_project_task_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_project_task_from_date'
string='Import Project Tasks from date'
issue_type_ids
One2many → jira.issue.type
comodel_name='jira.issue.type'
inverse_name='backend_id'
readonly=True
string='Issue Types'
name
Char
odoo_webhook_base_url
Char
default=<expr>
string='Base Odoo URL for Webhooks'
private_key
Text
groups='connector.group_connector_manager'
readonly=True
project_template
Selection
default='Scrum software development'
required=True
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template Key'
public_key
Text
readonly=True
report_user_sync
Html
readonly=True
state
Selection
default='authenticate'
readonly=True
required=True
selection=[('authenticate', 'Authenticate'), ('setup', 'Setup'), ('running', 'Running')]
uri
Char
required=True
string='Jira URI'
use_webhooks
Boolean
help='Webhooks need to be configured on the Jira instance. When activated, synchronization from Jira is blazing fast. It can be activated only on one Jira backend at a time. '
readonly=True
verify_ssl
Boolean
default=True
string='Verify SSL?'
webhook_issue_jira_id
Char
webhook_worklog_jira_id
Char
worklog_date_timezone
Selection
default=<expr>
selection=<expr>
worklog_date_timezone_mode
Selection
default='naive'
help="Worklog/Timesheet date timezone modes:\n - As-is (naive): ignore timezone information\n - Jira User: use author's timezone\n - Specific: use pre-configured timezone\n"
selection=[('naive', 'As-is (naive)'), ('user', 'Jira User'), ('specific', 'Specific')]
worklog_fallback_project_id
Many2one → project.project
comodel_name='project.project'
help="Worklogs which could not be linked to any project will be created in this project. Worklogs landing in the fallback project can be reassigned to the correct project by: 1. linking the expected project with the Jira one, 2. using 'Refresh Worklogs from Jira' on the timesheet lines."
string='Fallback for Worklogs'
activate_epic_link(self)
button_setup(self)
check_connection(self)
check_jira_key(self)
create(self, values)
create_rsa_key_vals(self)
create_webhooks(self)
delete_analytic_line(self)
delete_webhooks(self)
get_api_client(self)
get_user_resolution_order(self)
import_analytic_line(self)
import_issue_type(self)
import_project_task(self)
import_res_users(self)
make_issue_url(self, jira_issue_id)
onchange_odoo_webhook_base_url(self)
state_running(self)
state_setup(self)
auth_uri
Char
readonly=True
backend_id
Many2one → jira.backend
consumer_key
Char
readonly=True
related='backend_id.consumer_key'
public_key
Text
readonly=True
related='backend_id.public_key'
request_secret
Char
readonly=True
request_token
Char
readonly=True
state
Selection
default='leg_1'
args: [('leg_1', 'OAuth Remote Config'), ('leg_2', 'OAuth Remote Auth'), ('done', 'Complete')]
default_get(self, fields)
do_oauth_leg_1(self)
do_oauth_leg_3(self)
generate_new_key(self)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
required=True
string='Jira Backend'
component_usage
Char
help='Used by the connector to find which component execute the batch import (technical).'
required=True
from_date_field
Char
required=True
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
ondelete='restrict'
required=True
string='Jira Backend'
external_id
Char
index=True
string='ID on Jira'
delete_record(self, backend, external_id, only_binding=False, set_inactive=False)
export_record(self, fields=None)
import_batch(self, backend)
import_record(self, backend, external_id, force=False, record=None)
run_batch_timestamp(self, backend, timestamp, force=False)
backend_id
Many2one
ondelete='cascade'
description
Char
readonly=True
name
Char
readonly=True
required=True
import_batch(self, backend, from_date=None, to_date=None)
is_sync_for_project(self, project_binding)
jira_key
Char
required=True
size=10
string='JIRA Key'
project_template
Selection
default='Scrum software development'
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template'
sync_action
Selection
default='link'
help='Defines if the information of the project (name and key) are exported to JIRA when changed. Link meansthe project already exists on JIRA, no sync of the project details once the link is established. Tasks are always imported from JIRA, not pushed.'
required=True
selection=[('link', 'Link with JIRA'), ('export', 'Export to JIRA')]
sync_issue_type_ids
Many2many → jira.issue.type
comodel_name='jira.issue.type'
domain="[('backend_id', '=', backend_id)]"
help="Only issues of these levels are imported. When a worklog is imported no a level which is not sync'ed, it is attached to the nearest sync'ed parent level. If no parent can be found, it is attached to a special 'Unassigned' task."
string='Issue Levels to Synchronize'
No public methods.
odoo_id
Many2one → project.project
comodel_name='project.project'
index=True
ondelete='restrict'
required=True
string='Project'
project_type
Selection
selection='_selection_project_type'
check_jira_key(self)
check_project_template_shared(self)
create(self, values)
onchange_project_backend_id(self)
unlink(self)
write(self, values)
jira_epic_link_id
Many2one → jira.project.task
comodel_name='jira.project.task'
readonly=True
string='Epic'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_key
Char
readonly=True
string='Key'
jira_parent_id
Many2one → jira.project.task
comodel_name='jira.project.task'
help='Parent issue when the issue is a subtask. Empty if the type of parent is filtered out of the synchronizations.'
readonly=True
string='Parent Issue'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → project.task
comodel_name='project.task'
index=True
ondelete='restrict'
required=True
string='Task'
unlink(self)
odoo_id
Many2one → res.users
comodel_name='res.users'
index=True
ondelete='restrict'
required=True
string='User'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
default=<expr>
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
default=<expr>
jira_project_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='cascade'
project_id
Many2one → project.project
comodel_name='project.project'
default=<expr>
name='Project'
ondelete='cascade'
required=True
add_all_issue_types(self)
check_jira_key(self)
state_exit_export_config(self)
state_exit_issue_types(self)
state_exit_start(self)
jira_bind_ids
One2many → jira.project.project
comodel_name='jira.project.project'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Project Bindings'
jira_key
Char
compute='_compute_jira_key'
store=True
string='JIRA Key'
create_and_link_jira(self)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
jira_bind_ids
One2many → jira.project.task
comodel_name='jira.project.task'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Task Bindings'
jira_compound_key
Char
compute='_compute_jira_compound_key'
store=True
string='JIRA Key'
jira_epic_link_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_epic_link_task_id'
store=True
string='JIRA Epic'
jira_issue_type
Char
compute='_compute_jira_issue_type'
store=True
string='JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_parent_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_parent_task_id'
store=True
string='JIRA Parent'
create(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
unlink(self)
write(self, vals)
No new fields.
Public methods (1)related_action_jira_link(self)
jira_bind_ids
One2many → jira.res.users
comodel_name='jira.res.users'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='User Bindings'
button_link_with_jira(self)
link_with_jira(self, backends=None, raise_if_mismatch=False)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
domain="[('id', 'in', linked_backend_ids)]"
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
required=True
string='JIRA Key'
jira_task_id
Many2one → jira.project.task
comodel_name='jira.project.task'
ondelete='cascade'
linked_backend_ids
Many2many → jira.backend
comodel_name='jira.backend'
task_id
Many2one → project.task
comodel_name='project.task'
name='Task'
ondelete='cascade'
required=True
default_get(self, fields)
state_exit_start(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/connector-jira |
| GIT | |
| GIT | https://github.com/OCA/connector-jira.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/connector-jira/tree/13.0/connector_jira |
| VERSION | |
| VERSION | 1.1.0 |
| CATEGORY | |
| CATEGORY | Connector |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | GitHub, Alexey Pelykh, vrenaville, Denis Leemann, oca-travis, OCA-git-bot, oca-ci |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/connector-jira |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:34:21 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - connector - component - component_event OCA/queue: - queue_job OCA/server-ux: - multi_step_wizard OCA/web: - web_widget_url_advanced odoo/odoo: - base - base_setup - web - bus - web_tour - project - analytic - uom - portal - web_editor - http_routing - auth_signup - rating - resource - digest - hr_timesheet - hr - mail_bot |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cryptography jira oauthlib requests cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
backend_report_user_sync |
JIRA backend report_user_sync | ir.ui.view | qweb | New |
edit_project |
project.project.form | project.project | xpath | Inherits project.edit_project |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_search |
hr_timesheet_line_tree |
account.analytic.line.tree | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_tree |
project_link_jira_form |
project.link.jira.form | project.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
project_project_view_form_simplified |
project.project.view.form.simplified.jira | project.project | xpath | Inherits project.project_project_view_form_simplified_footer |
task_link_jira_form |
task.link.jira.form | task.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
view_jira_aa_line_import |
Refresh Worklogs from Jira | jira.account.analytic.line.import | form | New |
view_jira_backend_auth_form |
jira.backend.auth.form | jira.backend.auth | form | New |
view_jira_backend_form |
jira.backend.form | jira.backend | form | New |
view_jira_backend_tree |
jira.backend.tree | jira.backend | tree | New |
view_jira_issue_type_form |
jira.issue.type.form | jira.issue.type | form | New |
view_jira_issue_type_tree |
jira.issue.type.tree | jira.issue.type | tree | New |
view_jira_project_project_form |
jira.project.project.form | jira.project.project | form | New |
view_jira_project_project_tree |
jira.project.project.tree | jira.project.project | tree | New |
view_jira_project_task_form |
jira.project.task.form | jira.project.task | form | New |
view_jira_project_task_tree |
jira.project.task.tree | jira.project.task | tree | New |
view_jira_res_users_form |
jira.res.users.form | jira.res.users | form | New |
view_jira_res_users_tree |
jira.res.users.tree | jira.res.users | tree | New |
view_project |
project.project.tree | project.project | field | Inherits project.view_project |
view_project_kanban |
project.project.kanban | project.project | field | Inherits project.view_project_kanban |
view_project_kanban_jira |
project.project.kanban.jira | project.project | xpath | Inherits project.view_project_kanban |
view_task_form2 |
project.task.form | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | field | Inherits project.view_task_kanban |
view_task_search_form |
project.task.search.form | project.task | field | Inherits project.view_task_search_form |
view_task_tree2 |
project.task.tree | project.task | field | Inherits project.view_task_tree2 |
view_users_form |
res.users.form | res.users | xpath | Inherits base.view_users_form |
jira_bind_ids
One2many → jira.account.analytic.line
comodel_name='jira.account.analytic.line'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Worklog Bindings'
jira_epic_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_references'
compute_sudo=True
string='Original JIRA Epic Link'
jira_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_references'
compute_sudo=True
string='Original JIRA issue Link'
create(self, vals)
unlink(self)
write(self, vals)
jira_epic_issue_key
Char
readonly=True
string='Original Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA Epic Link'
jira_issue_id
Char
jira_issue_key
Char
readonly=True
string='Original Task Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Original Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA issue Link'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → account.analytic.line
comodel_name='account.analytic.line'
index=True
ondelete='restrict'
required=True
string='Timesheet Line'
force_reimport(self)
import_record(self, backend, issue_id, worklog_id, force=False)
No new fields.
Public methods (1)confirm(self)
access_secret
Char
groups='connector.group_connector_manager'
readonly=True
access_token
Char
groups='connector.group_connector_manager'
readonly=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
consumer_key
Char
default=<expr>
groups='connector.group_connector_manager'
readonly=True
delete_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_delete_analytic_line_from_date'
string='Delete Extra Worklogs from date'
epic_link_field_name
Char
help="The 'Epic Link' field on JIRA is a custom field. The name of the field is something like 'customfield_10002'. "
string='Epic Link Field'
epic_link_on_epic
Boolean
help='Epics on JIRA cannot be linked to another epic. Check this boxto fill the epic field with itself on Odoo.'
string='Epic link on epic'
epic_name_field_name
Char
help="The 'Epic Name' field on JIRA is a custom field. The name of the field is something like 'customfield_10003'. "
string='Epic Name Field'
import_analytic_line_force
Boolean
import_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_analytic_line_from_date'
string='Import Worklogs from date'
import_project_task_force
Boolean
import_project_task_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_project_task_from_date'
string='Import Project Tasks from date'
issue_type_ids
One2many → jira.issue.type
comodel_name='jira.issue.type'
inverse_name='backend_id'
readonly=True
string='Issue Types'
name
Char
odoo_webhook_base_url
Char
default=<expr>
string='Base Odoo URL for Webhooks'
private_key
Text
groups='connector.group_connector_manager'
readonly=True
project_template
Selection
default='Scrum software development'
required=True
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template Key'
public_key
Text
readonly=True
report_user_sync
Html
readonly=True
state
Selection
default='authenticate'
readonly=True
required=True
selection=[('authenticate', 'Authenticate'), ('setup', 'Setup'), ('running', 'Running')]
uri
Char
required=True
string='Jira URI'
use_webhooks
Boolean
help='Webhooks need to be configured on the Jira instance. When activated, synchronization from Jira is blazing fast. It can be activated only on one Jira backend at a time. '
readonly=True
string='Use Webhooks'
verify_ssl
Boolean
default=True
string='Verify SSL?'
webhook_issue_jira_id
Char
webhook_worklog_jira_id
Char
worklog_date_timezone
Selection
default=<expr>
selection=<expr>
worklog_date_timezone_mode
Selection
default='naive'
help="Worklog/Timesheet date timezone modes:\n - As-is (naive): ignore timezone information\n - Jira User: use author's timezone\n - Specific: use pre-configured timezone\n"
selection=[('naive', 'As-is (naive)'), ('user', 'Jira User'), ('specific', 'Specific')]
worklog_fallback_project_id
Many2one → project.project
comodel_name='project.project'
help="Worklogs which could not be linked to any project will be created in this project. Worklogs landing in the fallback project can be reassigned to the correct project by: 1. linking the expected project with the Jira one, 2. using 'Refresh Worklogs from Jira' on the timesheet lines."
string='Fallback for Worklogs'
activate_epic_link(self)
button_setup(self)
check_connection(self)
check_jira_key(self)
create(self, values)
create_rsa_key_vals(self)
create_webhooks(self)
delete_analytic_line(self)
delete_webhooks(self)
get_api_client(self)
get_user_resolution_order(self)
import_analytic_line(self)
import_issue_type(self)
import_project_task(self)
import_res_users(self)
make_issue_url(self, jira_issue_id)
onchange_odoo_webhook_base_url(self)
state_running(self)
state_setup(self)
auth_uri
Char
readonly=True
backend_id
Many2one → jira.backend
consumer_key
Char
readonly=True
related='backend_id.consumer_key'
public_key
Text
readonly=True
related='backend_id.public_key'
request_secret
Char
readonly=True
request_token
Char
readonly=True
state
Selection
default='leg_1'
args: [('leg_1', 'OAuth Remote Config'), ('leg_2', 'OAuth Remote Auth'), ('done', 'Complete')]
default_get(self, fields)
do_oauth_leg_1(self)
do_oauth_leg_3(self)
generate_new_key(self)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
required=True
string='Jira Backend'
component_usage
Char
help='Used by the connector to find which component execute the batch import (technical).'
required=True
from_date_field
Char
required=True
string='From Date Field'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
ondelete='restrict'
required=True
string='Jira Backend'
external_id
Char
index=True
string='ID on Jira'
delete_record(self, backend, external_id, only_binding=False, set_inactive=False)
export_record(self, fields=None)
import_batch(self, backend)
import_record(self, backend, external_id, force=False, record=None)
run_batch_timestamp(self, backend, timestamp, force=False)
backend_id
Many2one
ondelete='cascade'
description
Char
readonly=True
name
Char
readonly=True
required=True
import_batch(self, backend, from_date=None, to_date=None)
is_sync_for_project(self, project_binding)
jira_key
Char
required=True
size=10
string='JIRA Key'
project_template
Selection
default='Scrum software development'
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template'
sync_action
Selection
default='link'
help='Defines if the information of the project (name and key) are exported to JIRA when changed. Link meansthe project already exists on JIRA, no sync of the project details once the link is established. Tasks are always imported from JIRA, not pushed.'
required=True
selection=[('link', 'Link with JIRA'), ('export', 'Export to JIRA')]
sync_issue_type_ids
Many2many → jira.issue.type
comodel_name='jira.issue.type'
domain="[('backend_id', '=', backend_id)]"
help="Only issues of these levels are imported. When a worklog is imported no a level which is not sync'ed, it is attached to the nearest sync'ed parent level. If no parent can be found, it is attached to a special 'Unassigned' task."
string='Issue Levels to Synchronize'
No public methods.
odoo_id
Many2one → project.project
comodel_name='project.project'
index=True
ondelete='restrict'
required=True
string='Project'
project_type
Selection
selection='_selection_project_type'
check_jira_key(self)
check_project_template_shared(self)
create(self, values)
onchange_project_backend_id(self)
unlink(self)
write(self, values)
jira_epic_link_id
Many2one → jira.project.task
comodel_name='jira.project.task'
readonly=True
string='Epic'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_key
Char
readonly=True
string='Key'
jira_parent_id
Many2one → jira.project.task
comodel_name='jira.project.task'
help='Parent issue when the issue is a subtask. Empty if the type of parent is filtered out of the synchronizations.'
readonly=True
string='Parent Issue'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → project.task
comodel_name='project.task'
index=True
ondelete='restrict'
required=True
string='Task'
unlink(self)
odoo_id
Many2one → res.users
comodel_name='res.users'
index=True
ondelete='restrict'
required=True
string='User'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
default=<expr>
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
default=<expr>
jira_project_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='cascade'
project_id
Many2one → project.project
comodel_name='project.project'
default=<expr>
name='Project'
ondelete='cascade'
required=True
add_all_issue_types(self)
check_jira_key(self)
state_exit_export_config(self)
state_exit_issue_types(self)
state_exit_start(self)
jira_bind_ids
One2many → jira.project.project
comodel_name='jira.project.project'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Project Bindings'
jira_key
Char
compute='_compute_jira_key'
store=True
string='JIRA Key'
create_and_link_jira(self)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
jira_bind_ids
One2many → jira.project.task
comodel_name='jira.project.task'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Task Bindings'
jira_compound_key
Char
compute='_compute_jira_compound_key'
store=True
string='JIRA Key'
jira_epic_link_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_epic_link_task_id'
store=True
string='JIRA Epic'
jira_issue_type
Char
compute='_compute_jira_issue_type'
store=True
string='JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_parent_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_parent_task_id'
store=True
string='JIRA Parent'
create(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
unlink(self)
write(self, vals)
No new fields.
Public methods (1)related_action_jira_link(self)
jira_bind_ids
One2many → jira.res.users
comodel_name='jira.res.users'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='User Bindings'
button_link_with_jira(self)
link_with_jira(self, backends=None, raise_if_mismatch=False)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
domain="[('id', 'in', linked_backend_ids)]"
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
required=True
string='JIRA Key'
jira_task_id
Many2one → jira.project.task
comodel_name='jira.project.task'
ondelete='cascade'
linked_backend_ids
Many2many → jira.backend
comodel_name='jira.backend'
task_id
Many2one → project.task
comodel_name='project.task'
name='Task'
ondelete='cascade'
required=True
default_get(self, fields)
state_exit_start(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/connector-jira |
| GIT | |
| GIT | https://github.com/OCA/connector-jira.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/connector-jira/tree/12.0/connector_jira |
| VERSION | |
| VERSION | 1.7.0 |
| CATEGORY | |
| CATEGORY | Connector |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Alexey Pelykh, oca-travis, OCA-git-bot |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/connector-jira |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:29:26 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - connector - component - component_event OCA/queue: - queue_job OCA/server-ux: - multi_step_wizard OCA/web: - web_widget_url_advanced odoo/odoo: - base - base_setup - web - bus - web_tour - project - portal - http_routing - rating - resource - digest - hr_timesheet - hr - analytic - decimal_precision - uom |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cryptography jira oauthlib requests cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
backend_report_user_sync |
JIRA backend report_user_sync | ir.ui.view | qweb | New |
edit_project |
project.project.form | project.project | xpath | Inherits project.edit_project |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_search |
hr_timesheet_line_tree |
account.analytic.line.tree | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_tree |
project_link_jira_form |
project.link.jira.form | project.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
project_project_view_form_simplified |
project.project.view.form.simplified.jira | project.project | form | Inherits project.project_project_view_form_simplified |
task_link_jira_form |
task.link.jira.form | task.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
view_jira_aa_line_import |
Refresh Worklogs from Jira | jira.account.analytic.line.import | form | New |
view_jira_backend_auth_form |
jira.backend.auth.form | jira.backend.auth | form | New |
view_jira_backend_form |
jira.backend.form | jira.backend | form | New |
view_jira_backend_tree |
jira.backend.tree | jira.backend | tree | New |
view_jira_issue_type_form |
jira.issue.type.form | jira.issue.type | form | New |
view_jira_issue_type_tree |
jira.issue.type.tree | jira.issue.type | tree | New |
view_jira_project_project_form |
jira.project.project.form | jira.project.project | form | New |
view_jira_project_project_tree |
jira.project.project.tree | jira.project.project | tree | New |
view_jira_project_task_form |
jira.project.task.form | jira.project.task | form | New |
view_jira_project_task_tree |
jira.project.task.tree | jira.project.task | tree | New |
view_jira_res_users_form |
jira.res.users.form | jira.res.users | form | New |
view_jira_res_users_tree |
jira.res.users.tree | jira.res.users | tree | New |
view_project |
project.project.tree | project.project | field | Inherits project.view_project |
view_project_kanban |
project.project.kanban | project.project | field | Inherits project.view_project_kanban |
view_project_kanban_jira |
project.project.kanban.jira | project.project | xpath | Inherits project.view_project_kanban |
view_task_form2 |
project.task.form | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | field | Inherits project.view_task_kanban |
view_task_search_form |
project.task.search.form | project.task | field | Inherits project.view_task_search_form |
view_task_tree2 |
project.task.tree | project.task | field | Inherits project.view_task_tree2 |
view_users_form |
res.users.form | res.users | xpath | Inherits base.view_users_form |
jira_bind_ids
One2many → jira.account.analytic.line
comodel_name='jira.account.analytic.line'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Worklog Bindings'
jira_epic_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_references'
string='Original JIRA Epic Link'
jira_issue_key
Char
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
compute='_compute_jira_references'
store=True
string='Original JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_references'
string='Original JIRA issue Link'
create(self, vals)
unlink(self)
write(self, vals)
jira_epic_issue_key
Char
readonly=True
string='Original Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA Epic Link'
jira_issue_id
Char
jira_issue_key
Char
readonly=True
string='Original Task Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Original Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA issue Link'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → account.analytic.line
comodel_name='account.analytic.line'
index=True
ondelete='restrict'
required=True
string='Timesheet Line'
force_reimport(self)
import_record(self, backend, issue_id, worklog_id, force=False)
No new fields.
Public methods (1)confirm(self)
access_secret
Char
groups='connector.group_connector_manager'
readonly=True
access_token
Char
groups='connector.group_connector_manager'
readonly=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
consumer_key
Char
default=<expr>
groups='connector.group_connector_manager'
readonly=True
delete_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_delete_analytic_line_from_date'
string='Delete Extra Worklogs from date'
epic_link_field_name
Char
help="The 'Epic Link' field on JIRA is a custom field. The name of the field is something like 'customfield_10002'. "
string='Epic Link Field'
epic_link_on_epic
Boolean
help='Epics on JIRA cannot be linked to another epic. Check this boxto fill the epic field with itself on Odoo.'
string='Epic link on epic'
epic_name_field_name
Char
help="The 'Epic Name' field on JIRA is a custom field. The name of the field is something like 'customfield_10003'. "
string='Epic Name Field'
import_analytic_line_force
Boolean
import_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_analytic_line_from_date'
string='Import Worklogs from date'
import_project_task_force
Boolean
import_project_task_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_project_task_from_date'
string='Import Project Tasks from date'
issue_type_ids
One2many → jira.issue.type
comodel_name='jira.issue.type'
inverse_name='backend_id'
readonly=True
string='Issue Types'
name
Char
odoo_webhook_base_url
Char
default=<expr>
string='Base Odoo URL for Webhooks'
private_key
Text
groups='connector.group_connector_manager'
readonly=True
project_template
Selection
default='Scrum software development'
required=True
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template Key'
public_key
Text
readonly=True
report_user_sync
Html
readonly=True
state
Selection
default='authenticate'
readonly=True
required=True
selection=[('authenticate', 'Authenticate'), ('setup', 'Setup'), ('running', 'Running')]
uri
Char
required=True
string='Jira URI'
use_webhooks
Boolean
help='Webhooks need to be configured on the Jira instance. When activated, synchronization from Jira is blazing fast. It can be activated only on one Jira backend at a time. '
readonly=True
string='Use Webhooks'
verify_ssl
Boolean
default=True
string='Verify SSL?'
webhook_issue_jira_id
Char
webhook_worklog_jira_id
Char
worklog_date_timezone
Selection
default=<expr>
selection=<expr>
worklog_date_timezone_mode
Selection
default='naive'
help="Worklog/Timesheet date timezone modes:\n - As-is (naive): ignore timezone information\n - Jira User: use author's timezone\n - Specific: use pre-configured timezone\n"
selection=[('naive', 'As-is (naive)'), ('user', 'Jira User'), ('specific', 'Specific')]
worklog_fallback_project_id
Many2one → project.project
comodel_name='project.project'
help="Worklogs which could not be linked to any project will be created in this project. Worklogs landing in the fallback project can be reassigned to the correct project by: 1. linking the expected project with the Jira one, 2. using 'Refresh Worklogs from Jira' on the timesheet lines."
string='Fallback for Worklogs'
activate_epic_link(self)
button_setup(self)
check_connection(self)
check_jira_key(self)
create(self, values)
create_rsa_key_vals(self)
create_webhooks(self)
delete_analytic_line(self)
delete_webhooks(self)
get_api_client(self)
get_user_resolution_order(self)
import_analytic_line(self)
import_issue_type(self)
import_project_task(self)
import_res_users(self)
make_issue_url(self, jira_issue_id)
onchange_odoo_webhook_base_url(self)
state_running(self)
state_setup(self)
auth_uri
Char
readonly=True
backend_id
Many2one → jira.backend
consumer_key
Char
readonly=True
related='backend_id.consumer_key'
public_key
Text
readonly=True
related='backend_id.public_key'
request_secret
Char
readonly=True
request_token
Char
readonly=True
state
Selection
default='leg_1'
args: [('leg_1', 'OAuth Remote Config'), ('leg_2', 'OAuth Remote Auth'), ('done', 'Complete')]
default_get(self, fields)
do_oauth_leg_1(self)
do_oauth_leg_3(self)
generate_new_key(self)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
required=True
string='Jira Backend'
component_usage
Char
help='Used by the connector to find which component execute the batch import (technical).'
required=True
from_date_field
Char
required=True
string='From Date Field'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
ondelete='restrict'
required=True
string='Jira Backend'
external_id
Char
index=True
string='ID on Jira'
delete_record(self, backend, external_id, only_binding=False, set_inactive=False)
export_record(self, fields=None)
import_batch(self, backend)
import_record(self, backend, external_id, force=False, record=None)
run_batch_timestamp(self, backend, timestamp, force=False)
backend_id
Many2one
ondelete='cascade'
description
Char
readonly=True
name
Char
readonly=True
required=True
import_batch(self, backend, from_date=None, to_date=None)
is_sync_for_project(self, project_binding)
jira_key
Char
required=True
size=10
string='JIRA Key'
project_template
Selection
default='Scrum software development'
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template'
sync_action
Selection
default='link'
help='Defines if the information of the project (name and key) are exported to JIRA when changed. Link meansthe project already exists on JIRA, no sync of the project details once the link is established. Tasks are always imported from JIRA, not pushed.'
required=True
selection=[('link', 'Link with JIRA'), ('export', 'Export to JIRA')]
sync_issue_type_ids
Many2many → jira.issue.type
comodel_name='jira.issue.type'
domain="[('backend_id', '=', backend_id)]"
help="Only issues of these levels are imported. When a worklog is imported no a level which is not sync'ed, it is attached to the nearest sync'ed parent level. If no parent can be found, it is attached to a special 'Unassigned' task."
string='Issue Levels to Synchronize'
No public methods.
odoo_id
Many2one → project.project
comodel_name='project.project'
index=True
ondelete='restrict'
required=True
string='Project'
project_type
Selection
selection='_selection_project_type'
check_jira_key(self)
check_project_template_shared(self)
create(self, values)
onchange_project_backend_id(self)
unlink(self)
write(self, values)
jira_epic_link_id
Many2one → jira.project.task
comodel_name='jira.project.task'
readonly=True
string='Epic'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_key
Char
readonly=True
string='Key'
jira_parent_id
Many2one → jira.project.task
comodel_name='jira.project.task'
help='Parent issue when the issue is a subtask. Empty if the type of parent is filtered out of the synchronizations.'
readonly=True
string='Parent Issue'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → project.task
comodel_name='project.task'
index=True
ondelete='restrict'
required=True
string='Task'
unlink(self)
odoo_id
Many2one → res.users
comodel_name='res.users'
index=True
ondelete='restrict'
required=True
string='User'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
default=<expr>
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
default=<expr>
jira_project_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='cascade'
project_id
Many2one → project.project
comodel_name='project.project'
default=<expr>
name='Project'
ondelete='cascade'
required=True
add_all_issue_types(self)
check_jira_key(self)
state_exit_export_config(self)
state_exit_issue_types(self)
state_exit_start(self)
jira_bind_ids
One2many → jira.project.project
comodel_name='jira.project.project'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Project Bindings'
jira_key
Char
compute='_compute_jira_key'
store=True
string='JIRA Key'
create_and_link_jira(self)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
jira_bind_ids
One2many → jira.project.task
comodel_name='jira.project.task'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Task Bindings'
jira_compound_key
Char
compute='_compute_jira_compound_key'
store=True
string='JIRA Key'
jira_epic_link_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_epic_link_task_id'
store=True
string='JIRA Epic'
jira_issue_type
Char
compute='_compute_jira_issue_type'
store=True
string='JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_parent_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_parent_task_id'
store=True
string='JIRA Parent'
create(self, vals)
name_get(self)
name_search(self, name='', args=None, operator='ilike', limit=100)
unlink(self)
write(self, vals)
No new fields.
Public methods (1)related_action_jira_link(self)
jira_bind_ids
One2many → jira.res.users
comodel_name='jira.res.users'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='User Bindings'
button_link_with_jira(self)
link_with_jira(self, backends=None, raise_if_mismatch=False)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
domain="[('id', 'in', linked_backend_ids)]"
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
required=True
string='JIRA Key'
jira_task_id
Many2one → jira.project.task
comodel_name='jira.project.task'
ondelete='cascade'
linked_backend_ids
Many2many → jira.backend
comodel_name='jira.backend'
task_id
Many2one → project.task
comodel_name='project.task'
name='Task'
ondelete='cascade'
required=True
default_get(self, fields)
state_exit_start(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/connector-jira |
| GIT | |
| GIT | https://github.com/OCA/connector-jira.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/connector-jira/tree/11.0/connector_jira |
| VERSION | |
| VERSION | 1.5.0 |
| CATEGORY | |
| CATEGORY | Connector |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Camptocamp |
| COMMITTERS | |
| COMMITTERS | Guewen Baconnier, Akim Juillerat, Alexey Pelykh, jcoux, oca-travis, OCA-git-bot, Jaime Arroyo |
| WEBSITE | |
| WEBSITE | https://github.com/camptocamp/connector-jira |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:24:03 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/connector: - connector - component - component_event OCA/connector-jira: - multi_step_wizard OCA/queue: - queue_job OCA/web: - web_widget_url_advanced odoo/odoo: - base - base_setup - web - bus - web_tour - base_sparse_field - project - product - decimal_precision - analytic - portal - http_routing - resource - web_planner - hr_timesheet - hr |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES |
cryptography jira oauthlib requests cachetools |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
backend_report_user_sync |
JIRA backend report_user_sync | ir.ui.view | qweb | New |
edit_project |
project.project.form | project.project | xpath | Inherits project.edit_project |
hr_timesheet_line_form |
account.analytic.line.form | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_form |
hr_timesheet_line_search |
account.analytic.line.search | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_search |
hr_timesheet_line_tree |
account.analytic.line.tree | account.analytic.line | field | Inherits hr_timesheet.hr_timesheet_line_tree |
project_link_jira_form |
project.link.jira.form | project.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
project_project_view_form_simplified |
project.project.view.form.simplified.jira | project.project | button | Inherits project.project_project_view_form_simplified |
task_link_jira_form |
task.link.jira.form | task.link.jira | xpath | Inherits multi_step_wizard.multi_step_wizard_form |
view_jira_aa_line_import |
Refresh Worklogs from Jira | jira.account.analytic.line.import | form | New |
view_jira_backend_auth_form |
jira.backend.auth.form | jira.backend.auth | form | New |
view_jira_backend_form |
jira.backend.form | jira.backend | form | New |
view_jira_backend_tree |
jira.backend.tree | jira.backend | tree | New |
view_jira_issue_type_form |
jira.issue.type.form | jira.issue.type | form | New |
view_jira_issue_type_tree |
jira.issue.type.tree | jira.issue.type | tree | New |
view_jira_project_project_form |
jira.project.project.form | jira.project.project | form | New |
view_jira_project_project_tree |
jira.project.project.tree | jira.project.project | tree | New |
view_jira_project_task_form |
jira.project.task.form | jira.project.task | form | New |
view_jira_project_task_tree |
jira.project.task.tree | jira.project.task | tree | New |
view_jira_res_users_form |
jira.res.users.form | jira.res.users | form | New |
view_jira_res_users_tree |
jira.res.users.tree | jira.res.users | tree | New |
view_project_kanban_jira |
project.project.kanban.jira | project.project | xpath | Inherits project.view_project_kanban |
view_task_form2 |
project.task.form | project.task | xpath | Inherits project.view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | field | Inherits project.view_task_kanban |
view_task_search_form |
project.task.search.form | project.task | field | Inherits project.view_task_search_form |
view_users_form |
res.users.form | res.users | xpath | Inherits base.view_users_form |
jira_bind_ids
One2many → jira.account.analytic.line
comodel_name='jira.account.analytic.line'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Worklog Bindings'
jira_epic_issue_key
Char
compute='_compute_jira_references'
readonly=True
store=True
string='Original JIRA Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_references'
readonly=True
string='Original JIRA Epic Link'
jira_issue_key
Char
compute='_compute_jira_references'
readonly=True
store=True
string='Original JIRA Issue Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
compute='_compute_jira_references'
readonly=True
store=True
string='Original JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_references'
readonly=True
string='Original JIRA issue Link'
No public methods.
jira_epic_issue_key
Char
readonly=True
string='Original Epic Key'
jira_epic_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA Epic Link'
jira_issue_id
Char
jira_issue_key
Char
readonly=True
string='Original Task Key'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Original Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='Original JIRA issue Link'
odoo_id
Many2one → account.analytic.line
comodel_name='account.analytic.line'
index=True
ondelete='restrict'
required=True
string='Timesheet Line'
force_reimport(self)
import_record(self, backend, issue_id, worklog_id, force=False)
No new fields.
Public methods (1)confirm(self)
access_secret
Char
groups='connector.group_connector_manager'
readonly=True
access_token
Char
groups='connector.group_connector_manager'
readonly=True
company_id
Many2one → res.company
comodel_name='res.company'
default=<expr>
required=True
string='Company'
consumer_key
Char
default=<expr>
groups='connector.group_connector_manager'
readonly=True
delete_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_delete_analytic_line_from_date'
string='Delete Extra Worklogs from date'
epic_link_field_name
Char
help="The 'Epic Link' field on JIRA is a custom field. The name of the field is something like 'customfield_10002'. "
string='Epic Link Field'
epic_link_on_epic
Boolean
help='Epics on JIRA cannot be linked to another epic. Check this boxto fill the epic field with itself on Odoo.'
string='Epic link on epic'
epic_name_field_name
Char
help="The 'Epic Name' field on JIRA is a custom field. The name of the field is something like 'customfield_10003'. "
string='Epic Name Field'
import_analytic_line_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_analytic_line_from_date'
string='Import Worklogs from date'
import_project_task_from_date
Datetime
compute='_compute_last_import_date'
inverse='_inverse_import_project_task_from_date'
string='Import Project Tasks from date'
issue_type_ids
One2many → jira.issue.type
comodel_name='jira.issue.type'
inverse_name='backend_id'
readonly=True
string='Issue Types'
name
Char
odoo_webhook_base_url
Char
default=<expr>
string='Base Odoo URL for Webhooks'
private_key
Text
groups='connector.group_connector_manager'
readonly=True
project_template
Selection
default='Scrum software development'
required=True
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template Key'
public_key
Text
readonly=True
report_user_sync
Html
readonly=True
state
Selection
default='authenticate'
readonly=True
required=True
selection=[('authenticate', 'Authenticate'), ('setup', 'Setup'), ('running', 'Running')]
uri
Char
required=True
string='Jira URI'
use_webhooks
Boolean
help='Webhooks need to be configured on the Jira instance. When activated, synchronization from Jira is blazing fast. It can be activated only on one Jira backend at a time. '
readonly=True
string='Use Webhooks'
verify_ssl
Boolean
default=True
string='Verify SSL?'
webhook_issue_jira_id
Char
webhook_worklog_jira_id
Char
worklog_fallback_project_id
Many2one → project.project
comodel_name='project.project'
help="Worklogs which could not be linked to any project will be created in this project. Worklogs landing in the fallback project can be reassigned to the correct project by: 1. linking the expected project with the Jira one, 2. using 'Refresh Worklogs from Jira' on the timesheet lines."
string='Fallback for Worklogs'
activate_epic_link(self)
button_setup(self)
check_connection(self)
check_jira_key(self)
create(self, values)
create_rsa_key_vals(self)
create_webhooks(self)
delete_analytic_line(self)
delete_webhooks(self)
get_api_client(self)
import_analytic_line(self)
import_issue_type(self)
import_project_task(self)
import_res_users(self)
make_issue_url(self, jira_issue_id)
onchange_odoo_webhook_base_url(self)
state_running(self)
state_setup(self)
auth_uri
Char
readonly=True
backend_id
Many2one → jira.backend
consumer_key
Char
readonly=True
related='backend_id.consumer_key'
public_key
Text
readonly=True
related='backend_id.public_key'
request_secret
Char
readonly=True
request_token
Char
readonly=True
state
Selection
default='leg_1'
args: [('leg_1', 'OAuth Remote Config'), ('leg_2', 'OAuth Remote Auth'), ('done', 'Complete')]
default_get(self, fields)
do_oauth_leg_1(self)
do_oauth_leg_3(self)
generate_new_key(self)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
required=True
string='Jira Backend'
component_usage
Char
help='Used by the connector to find which component execute the batch import (technical).'
required=True
from_date_field
Char
required=True
string='From Date Field'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
ondelete='restrict'
required=True
string='Jira Backend'
external_id
Char
index=True
string='ID on Jira'
delete_record(self, backend, external_id, only_binding=False, set_inactive=False)
export_record(self, fields=None)
import_batch(self, backend)
import_record(self, backend, external_id, force=False, record=None)
run_batch_timestamp(self, backend, timestamp)
backend_id
Many2one
ondelete='cascade'
description
Char
readonly=True
name
Char
readonly=True
required=True
import_batch(self, backend, from_date=None, to_date=None)
is_sync_for_project(self, project_binding)
jira_key
Char
required=True
size=10
string='JIRA Key'
project_template
Selection
default='Scrum software development'
selection='_selection_project_template'
string='Default Project Template'
project_template_shared
Char
string='Default Shared Template'
sync_action
Selection
default='link'
help='Defines if the information of the project (name and key) are exported to JIRA when changed. Link meansthe project already exists on JIRA, no sync of the project details once the link is established. Tasks are always imported from JIRA, not pushed.'
required=True
selection=[('link', 'Link with JIRA'), ('export', 'Export to JIRA')]
sync_issue_type_ids
Many2many → jira.issue.type
comodel_name='jira.issue.type'
domain="[('backend_id', '=', backend_id)]"
help="Only issues of these levels are imported. When a worklog is imported no a level which is not sync'ed, it is attached to the nearest sync'ed parent level. If no parent can be found, it is attached to a special 'Unassigned' task."
string='Issue Levels to Synchronize'
No public methods.
odoo_id
Many2one → project.project
comodel_name='project.project'
index=True
ondelete='restrict'
required=True
string='Project'
project_type
Selection
selection='_selection_project_type'
check_jira_key(self)
check_project_template_shared(self)
create(self, values)
onchange_project_backend_id(self)
unlink(self)
write(self, values)
jira_epic_link_id
Many2one → jira.project.task
comodel_name='jira.project.task'
readonly=True
string='Epic'
jira_issue_type_id
Many2one → jira.issue.type
comodel_name='jira.issue.type'
readonly=True
string='Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_key
Char
readonly=True
string='Key'
jira_parent_id
Many2one → jira.project.task
comodel_name='jira.project.task'
help='Parent issue when the issue is a subtask. Empty if the type of parent is filtered out of the synchronizations.'
readonly=True
string='Parent Issue'
jira_project_bind_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='restrict'
odoo_id
Many2one → project.task
comodel_name='project.task'
index=True
ondelete='restrict'
required=True
string='Task'
unlink(self)
odoo_id
Many2one → res.users
comodel_name='res.users'
index=True
ondelete='restrict'
required=True
string='User'
No public methods.
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
default=<expr>
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
default=<expr>
jira_project_id
Many2one → jira.project.project
comodel_name='jira.project.project'
ondelete='cascade'
project_id
Many2one → project.project
comodel_name='project.project'
default=<expr>
name='Project'
ondelete='cascade'
required=True
add_all_issue_types(self)
check_jira_key(self)
state_exit_export_config(self)
state_exit_issue_types(self)
state_exit_start(self)
jira_bind_ids
One2many → jira.project.project
comodel_name='jira.project.project'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Project Bindings'
jira_key
Char
compute='_compute_jira_key'
string='JIRA Key'
create_and_link_jira(self)
name_get(self)
jira_bind_ids
One2many → jira.project.task
comodel_name='jira.project.task'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='Task Bindings'
jira_compound_key
Char
compute='_compute_jira_compound_key'
store=True
string='JIRA Key'
jira_epic_link_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_epic_link_task_id'
store=True
string='JIRA Epic'
jira_issue_type
Char
compute='_compute_jira_issue_type'
store=True
string='JIRA Issue Type'
jira_issue_url
Char
compute='_compute_jira_issue_url'
string='JIRA issue'
jira_parent_task_id
Many2one → project.task
comodel_name='project.task'
compute='_compute_jira_parent_task_id'
store=True
string='JIRA Parent'
name_get(self)
No new fields.
Public methods (1)merge_tasks(self)
No new fields.
Public methods (1)related_action_jira_link(self)
jira_bind_ids
One2many → jira.res.users
comodel_name='jira.res.users'
context={'active_test': False}
copy=False
inverse_name='odoo_id'
string='User Bindings'
button_link_with_jira(self)
link_with_jira(self, backends=None, raise_if_mismatch=False)
backend_id
Many2one → jira.backend
comodel_name='jira.backend'
domain="[('id', 'in', linked_backend_ids)]"
ondelete='cascade'
required=True
string='Jira Backend'
jira_key
Char
required=True
string='JIRA Key'
jira_task_id
Many2one → jira.project.task
comodel_name='jira.project.task'
ondelete='cascade'
linked_backend_ids
Many2many → jira.backend
comodel_name='jira.backend'
task_id
Many2one → project.task
comodel_name='project.task'
name='Task'
ondelete='cascade'
required=True
default_get(self, fields)
state_exit_start(self)