| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
mail_activity_plan_view_form_project_and_task |
mail.activity.plan.view.form.project.and.task | mail.activity.plan | xpath | Inherits mail.mail_activity_plan_view_form |
open_view_all_tasks_list_view |
open.view.all.tasks.list.view | project.task | list | Inherits view_task_tree2 |
open_view_blocked_by_list_view |
open.view.blocked.by.list.view | project.task | list | Inherits project.open_view_all_tasks_list_view |
open_view_my_tasks_list_view |
open.view.my.tasks.list.view | project.task | list | Inherits view_task_tree2 |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Projects / Tasks | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | Inherits portal.portal_sidebar |
portal_my_task_allocated_hours_template |
portal_my_task_allocated_hours_template | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_my_tasks_badge_widget_template |
badge Widget Template | ir.ui.view | qweb | New |
portal_my_tasks_priority_widget_template |
Priority Widget Template | ir.ui.view | qweb | New |
portal_my_tasks_state_widget_template |
Status Widget Template | ir.ui.view | qweb | New |
portal_task_share_wizard |
task.share.wizard | task.share.wizard | xpath | Inherits portal.portal_share_wizard |
portal_tasks_list |
Tasks List | ir.ui.view | qweb | New |
project.milestone_deadline |
project.milestone_deadline | ir.ui.view | qweb | New |
project_kanban_view_group_stage |
project.project.kanban.group.stage | project.project | xpath | Inherits view_project_kanban |
project_list_view_group_stage |
project.project.list.group.stage | project.project | list | Inherits view_project |
project_message_user_assigned |
project_message_user_assigned | ir.ui.view | qweb | New |
project_milestone_view_form |
project.milestone.view.form | project.milestone | form | New |
project_milestone_view_kanban |
project.milestone.view.kanban | project.milestone | kanban | New |
project_milestone_view_tree |
project.milestone.view.list | project.milestone | list | New |
project_project_stage_view_form |
project.project.stage.view.form | project.project.stage | form | New |
project_project_stage_view_form_quick_create |
project.project.stage.view.form.quick.create | project.project.stage | form | New |
project_project_stage_view_kanban |
project.project.stage.view.kanban | project.project.stage | kanban | New |
project_project_stage_view_search |
project.project.stage.view.search | project.project.stage | search | New |
project_project_stage_view_tree |
project.project.stage.view.list | project.project.stage | list | New |
project_project_view_activity |
project.project.view.activity | project.project | activity | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_project_view_form_simplified_template |
project.project.create.wizard.form | project.template.create.wizard | form | New |
project_role_view_form |
project.role.form | project.role | form | New |
project_role_view_kanban |
project.role.kanban | project.role | kanban | New |
project_role_view_list |
project.role.list | project.role | list | New |
project_role_view_search |
project.role.search | project.role | search | New |
project_share_wizard_confirm_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_share_wizard_view_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_sharing_portal |
Project Sharing View Embed | ir.ui.view | qweb | New |
project_sharing_project_task_view_form |
project.sharing.project.task.view.form | project.task | form | New |
project_sharing_project_task_view_kanban |
project.sharing.project.task.view.kanban | project.task | kanban | New |
project_sharing_project_task_view_search |
project.task.search.form | project.task | filter | Inherits project.view_task_search_form_base |
project_sharing_project_task_view_tree |
project.sharing.project.task.list | project.task | list | Inherits project_task_view_tree_main_base |
project_sharing_quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
project_sub_task_view_kanban_mobile |
project.task.kanban | project.task | xpath | Inherits project.view_task_kanban |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | list | New |
project_task_burndown_chart_report_view_graph |
project.task.burndown.chart.report.view.graph | project.task.burndown.chart.report | graph | New |
project_task_burndown_chart_report_view_search |
project.task.burndown.chart.report.view.search | project.task.burndown.chart.report | search | New |
project_task_convert_to_subtask_view_form |
project.task.convert.to.subtask.form | project.task | form | New |
project_task_graph_view_project_milestone |
project.task.view.graph.project.milestone | project.task | xpath | Inherits view_project_task_graph |
project_task_kanban_view_project_milestone |
project.task.kanban.inherit.project.milestone | project.task | xpath | Inherits view_task_kanban |
project_task_pivot_view_project_milestone |
project.task.view.pivot.project.milestone | project.task | xpath | Inherits view_project_task_pivot |
project_task_templates_kanban |
project.task.templates.list | project.task | kanban | Inherits view_task_kanban |
project_task_templates_list |
project.task.templates.list | project.task | field | Inherits project_task_view_tree_base |
project_task_tree_view_project_milestone |
project.task.view.tree.project.milestone | project.task | xpath | Inherits project_task_view_tree_base |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_base |
project.task.view.list.base | project.task | list | Inherits project_task_view_tree_main_base |
project_task_view_tree_main_base |
project.task.view.list.main.base | project.task | list | New |
project_templates_view_form |
project.project.template.form | project.project | form | Inherits project.edit_project |
project_templates_view_kanban |
project.project.template.kanban | project.project | kanban | Inherits project.view_project_kanban |
project_templates_view_list |
project.project.template.list | project.project | list | Inherits project.view_project |
project_update_default_description |
Project Update Description | ir.ui.view | qweb | New |
project_update_view_form |
project.update.view.form | project.update | form | New |
project_update_view_kanban |
project.update.view.kanban | project.update | kanban | New |
project_update_view_search |
project.update.view.search | project.update | search | New |
project_update_view_tree |
project.update.view.list | project.update | list | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
project_view_kanban_inherit_project |
project.kanban.inherit.project | project.project | xpath | Inherits project.view_project_kanban |
quick_create_project_form |
project.form.quick_create | project.project | form | New |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
quick_create_task_form_inherit_view_default_project |
project.task.form.quick.create | project.task | field | Inherits quick_create_task_form |
quick_create_task_form_res_partner |
project.task.form.quick_create.res.partner | project.task | xpath | Inherits quick_create_task_form |
rating_rating_view_form_project |
rating.rating.form.project | rating.rating | xpath | Inherits rating.rating_rating_view_form_text |
rating_rating_view_graph |
rating.rating.view.graph.project | rating.rating | xpath | Inherits rating.rating_rating_view_graph |
rating_rating_view_pivot |
rating.rating.view.pivot.project | rating.rating | xpath | Inherits rating.rating_rating_view_pivot |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_project |
rating.rating.list.project | rating.rating | field | Inherits rating.rating_rating_view_tree |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_invitation_follower |
task_invitation_follower | ir.ui.view | qweb | New |
task_link_preview_front_end |
task_link_preview_front_end | ir.ui.view | qweb | Inherits portal.frontend_layout |
task_link_preview_portal_layout |
task_link_preview_portal_layout | ir.ui.view | qweb | Inherits portal.portal_layout |
task_track_depending_tasks |
task_track_depending_tasks | ir.ui.view | qweb | New |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.list | project.task.type | list | New |
task_type_tree_inherited |
project.task.type.list.inherited | project.task.type | xpath | Inherits task_type_tree |
view_account_analytic_account_list_inherit |
account.analytic.account.list.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_list |
view_project |
project.project.list | project.project | list | New |
view_project_calendar |
project.project.calendar | project.project | calendar | New |
view_project_config |
project.project.list.config | project.project | xpath | Inherits project.view_project |
view_project_config_group_stage |
project.project.list.config.group.stage | project.project | list | Inherits view_project_config |
view_project_config_kanban |
project.kanban.inherit.config.project | project.project | xpath | Inherits view_project_kanban |
view_project_config_kanban_group_stage |
project.kanban.inherit.config.project.group.stage | project.project | xpath | Inherits view_project_config_kanban |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_project_stage_delete_wizard |
project.project.stage.delete.wizard.form | project.project.stage.delete.wizard | form | New |
view_project_project_stage_unarchive_wizard |
project.project.stage.delete.wizard.form | project.project.stage.delete.wizard | form | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_graph_inherit |
project.task.graph.inherit | project.task | xpath | Inherits project.view_project_task_graph |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_pivot_inherit |
project.task.pivot.inherit | project.task | xpath | Inherits project.view_project_task_pivot |
view_project_task_type_delete_confirmation_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_delete_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_project_task_type_unarchive_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_task_all_calendar |
project.task.all.calendar | project.task | xpath | Inherits view_task_calendar |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_form_res_partner |
project.task.form.res.partner | project.task | xpath | Inherits view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_kanban_inherit_all_task |
project.task.kanban.inherit.all.task | project.task | xpath | Inherits view_task_kanban |
view_task_kanban_inherit_my_task |
project.task.kanban.inherit.my.task | project.task | xpath | Inherits view_task_kanban |
view_task_kanban_inherit_view_default_project |
project.task.kanban | project.task | kanban | Inherits view_task_kanban |
view_task_kanban_res_partner |
project.task.kanban.res.partner | project.task | xpath | Inherits view_task_kanban_inherit_all_task |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_fsm_graph_base |
report.project.task.user.graph | report.project.task.user | graph | Inherits view_task_project_user_graph |
view_task_project_user_fsm_pivot_base |
report.project.task.user.pivot | report.project.task.user | pivot | Inherits view_task_project_user_pivot |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | Inherits project.view_task_search_form_project_fsm_base |
view_task_search_form |
project.task.search.form | project.task | filter | Inherits view_task_search_form_project_base |
view_task_search_form_base |
project.task.search.form | project.task | search | New |
view_task_search_form_project_base |
project.task.search.form.project.base | project.task | filter | Inherits view_task_search_form_project_fsm_base |
view_task_search_form_project_fsm_base |
project.task.search.form.project.base | project.task | field | Inherits view_task_search_form_base |
view_task_template_search_form |
project.task.search.form | project.task | filter | Inherits view_task_search_form |
view_task_tree2 |
project.task.list | project.task | list | Inherits project_task_view_tree_base |
project_count
Integer
compute='_compute_project_count'
export_string_translation=False
args: 'Project Count'
project_ids
One2many → project.project
export_string_translation=False
string='Projects'
args: 'project.project', 'account_id'
action_view_projects(self)
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
export_string_translation=False
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_send_mail(self)
limited_access
Boolean
default=False
export_string_translation=False
args: 'Limited Access'
partner_email
Char
export_string_translation=False
related='partner_id.email'
partner_id
Many2one → res.partner
export_string_translation=False
readonly=True
required=True
args: 'res.partner', 'Collaborator'
project_id
Many2one → project.project
domain=[('privacy_visibility', 'in', ['portal', 'invited_users']), ('is_template', '=', False)]
export_string_translation=False
readonly=True
required=True
args: 'project.project', 'Project Shared'
create(self, vals_list)
unlink(self)
can_be_marked_as_done
Boolean
compute='_compute_can_be_marked_as_done'
export_string_translation=False
deadline
Date
copy=False
tracking=True
done_task_count
Integer
compute='_compute_task_count'
export_string_translation=False
groups='project.group_project_milestone'
args: '# of Done Tasks'
is_deadline_exceeded
Boolean
compute='_compute_is_deadline_exceeded'
export_string_translation=False
is_deadline_future
Boolean
compute='_compute_is_deadline_future'
export_string_translation=False
is_reached
Boolean
copy=False
default=False
string='Reached'
name
Char
required=True
project_allow_milestones
Boolean
compute='_compute_project_allow_milestones'
compute_sudo=True
export_string_translation=False
search='_search_project_allow_milestones'
project_id
Many2one → project.project
default=_get_default_project_id
domain=[('is_template', '=', False)]
index=True
ondelete='cascade'
required=True
args: 'project.project'
reached_date
Date
compute='_compute_reached_date'
export_string_translation=False
store=True
sequence
Integer
default=10
args: 'Sequence'
task_count
Integer
compute='_compute_task_count'
export_string_translation=False
groups='project.group_project_milestone'
args: '# of Tasks'
task_ids
One2many → project.task
export_string_translation=False
args: 'project.task', 'milestone_id', 'Tasks'
action_view_tasks(self)
copy(self, default=None)
toggle_is_reached(self, is_reached)
access_instruction_message
Char
compute='_compute_access_instruction_message'
export_string_translation=False
args: 'Access Instruction Message'
account_id
Many2one → account.analytic.account
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]"
ondelete='set null'
args: 'account.analytic.account'
active
Boolean
copy=False
default=True
export_string_translation=False
alias_id
Many2one
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
allow_milestones
Boolean
inverse='_inverse_allow_milestones'
args: 'Milestones'
allow_recurring_tasks
Boolean
inverse='_inverse_allow_recurring_tasks'
args: 'Recurring Tasks'
allow_task_dependencies
Boolean
inverse='_inverse_allow_task_dependencies'
args: 'Task Dependencies'
analytic_account_balance
Monetary
related='account_id.balance'
can_mark_milestone_as_done
Boolean
compute='_compute_next_milestone_id'
export_string_translation=False
groups='project.group_project_milestone'
closed_task_count
Integer
compute='_compute_closed_task_count'
export_string_translation=False
collaborator_count
Integer
compute='_compute_collaborator_count'
compute_sudo=True
export_string_translation=False
args: '# Collaborators'
collaborator_ids
One2many → project.collaborator
copy=False
export_string_translation=False
string='Collaborators'
args: 'project.collaborator', 'project_id'
color
Integer
export_string_translation=False
string='Color Index'
company_id
Many2one → res.company
compute='_compute_company_id'
inverse='_inverse_company_id'
readonly=False
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency_id'
export_string_translation=False
readonly=True
string='Currency'
args: 'res.currency'
date
Date
copy=False
help='Date on which this project ends. The timeframe defined on the project is taken into account when viewing its planning.'
index=True
string='Expiration Date'
tracking=True
date_start
Date
copy=False
string='Start Date'
description
Html
help='Description to provide more information and context about this project'
duration_tracking
Json
groups='project.group_project_stages'
favorite_user_ids
Many2many → res.users
copy=False
export_string_translation=False
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
compute_sudo=True
export_string_translation=False
readonly=False
search='_search_is_favorite'
string='Show Project on Dashboard'
is_milestone_deadline_exceeded
Boolean
compute='_compute_next_milestone_id'
export_string_translation=False
groups='project.group_project_milestone'
is_milestone_exceeded
Boolean
compute='_compute_is_milestone_exceeded'
export_string_translation=False
search='_search_is_milestone_exceeded'
is_template
Boolean
copy=False
export_string_translation=False
label_tasks
Char
default=<expr>
help='Name used to refer to the tasks of your project e.g. tasks, tickets, sprints, etc...'
string='Use Tasks as'
translate=True
last_update_color
Integer
compute='_compute_last_update_color'
export_string_translation=False
last_update_id
Many2one → project.update
copy=False
export_string_translation=False
string='Last Update'
args: 'project.update'
last_update_status
Selection
compute='_compute_last_update_status'
default='to_define'
export_string_translation=False
readonly=False
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('to_define', 'Set Status'), ('done', 'Complete')]
store=True
milestone_count
Integer
compute='_compute_milestone_count'
export_string_translation=False
groups='project.group_project_milestone'
milestone_count_reached
Integer
compute='_compute_milestone_reached_count'
export_string_translation=False
groups='project.group_project_milestone'
milestone_ids
One2many → project.milestone
copy=True
export_string_translation=False
args: 'project.milestone', 'project_id'
milestone_progress
Integer
compute='_compute_milestone_reached_count'
export_string_translation=False
groups='project.group_project_milestone'
args: 'Milestones Reached'
name
Char
default_export_compatible=True
index='trigram'
required=True
tracking=True
translate=True
args: 'Name'
next_milestone_id
Many2one → project.milestone
compute='_compute_next_milestone_id'
export_string_translation=False
groups='project.group_project_milestone'
args: 'project.milestone'
open_task_count
Integer
compute='_compute_open_task_count'
export_string_translation=False
string='Open Task Count'
partner_id
Many2one → res.partner
bypass_search_access=True
domain="['|', ('company_id', '=?', company_id), ('company_id', '=', False)]"
index='btree_not_null'
string='Customer'
tracking=True
args: 'res.partner'
privacy_visibility
Selection
default='portal'
help='Project and Task Visibility:\n- Invited internal users: Can access only the project or tasks they follow. Assignees automatically get access.\n- Invited internal and portal users: Same as above, extended to portal users.\n- All internal users: Full access to the project and all its tasks.\n- All internal and invited portal users: Internal users get full access. Portal users can access only the project or tasks they follow.\n\nPortal Access Levels:\n- Read-only: Portal users see tasks via their portal but can’t edit them.\n- Edit (limited): Portal users access kanban/list views and can edit limited fields on followed tasks.\n- Edit: Same as above, with access to all tasks.\n\nOther Rules:\n- Internal users can open a task from a direct link, even without project access.\n- Project admins have access to private projects, even if not followers.\n'
required=True
string='Visibility'
tracking=True
args: [('followers', 'Invited internal users'), ('invited_users', 'Invited internal and portal users'), ('employees', 'All internal users'), ('portal', ' All internal users and invited portal users')]
privacy_visibility_warning
Char
compute='_compute_privacy_visibility_warning'
export_string_translation=False
args: 'Privacy Visibility Warning'
resource_calendar_id
Many2one → resource.calendar
compute='_compute_resource_calendar_id'
export_string_translation=False
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
export_string_translation=False
show_ratings
Boolean
compute='_compute_show_ratings'
export_string_translation=False
stage_id
Many2one → project.project.stage
copy=False
default=_default_stage_id
group_expand='_read_group_expand_full'
groups='project.group_project_stages'
index=True
ondelete='restrict'
string='Stage'
tracking=True
args: 'project.project.stage'
stage_id_color
Integer
export_string_translation=False
related='stage_id.color'
string='Stage Color'
tag_ids
Many2many → project.tags
relation='project_project_project_tags_rel'
string='Tags'
args: 'project.tags'
task_completion_percentage
Float
compute='_compute_task_completion_percentage'
export_string_translation=False
task_count
Integer
compute='_compute_task_count'
export_string_translation=False
string='Task Count'
task_ids
One2many → project.task
domain="[('is_closed', '=', False)]"
export_string_translation=False
string='Tasks'
args: 'project.task', 'project_id'
task_properties_definition
PropertiesDefinition
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
export_string_translation=False
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
update_count
Integer
compute='_compute_total_update_ids'
export_string_translation=False
update_ids
One2many → project.update
export_string_translation=False
args: 'project.update', 'project_id'
user_id
Many2one → res.users
default=<expr>
falsy_value_label=_lt('👤 Unassigned')
string='Project Manager'
tracking=True
args: 'res.users'
action_create_from_template(self, values=None, role_to_users_mapping=None)
action_create_template_from_project(self)
action_get_list_view(self)
action_open_share_project_wizard(self)
action_profitability_items(self, section_name, domain=None, res_id=False)
action_project_task_burndown_chart_report(self)
action_toggle_project_template_mode(self)
action_undo_convert_to_template(self)
action_view_all_rating(self)
action_view_tasks(self)
action_view_tasks_analysis(self)
action_view_tasks_from_project_milestone(self)
check_features_enabled(self, updated_features=None)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
create_template_from_project_undo_callback(self, callbacks)
get_last_update_or_default(self)
get_milestones(self)
get_panel_data(self)
get_template_tasks(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_unsubscribe(self, partner_ids=None)
name_create(self, name)
project_update_all_action(self)
template_to_project_confirmation_callback(self, callbacks)
toggle_favorite(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
export_string_translation=False
color
Integer
export_string_translation=False
string='Color'
company_id
Many2one → res.company
string='Company'
args: 'res.company'
fold
Boolean
help='If enabled, this stage will be displayed as folded in the Kanban and List views of your projects. Projects in a folded stage are considered as closed.'
args: 'Folded'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.project')]
help='If set, an email will be automatically sent to the customer when the project reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
translate=True
sequence
Integer
default=50
export_string_translation=False
action_unarchive(self)
copy_data(self, default=None)
unlink_wizard(self, stage_view=False)
write(self, vals)
projects_count
Integer
compute='_compute_projects_count'
export_string_translation=False
args: 'Number of Projects'
stage_ids
Many2many → project.project.stage
context={'active_test': False}
export_string_translation=False
ondelete='cascade'
string='Stages To Delete'
args: 'project.project.stage'
stages_active
Boolean
compute='_compute_stages_active'
export_string_translation=False
action_archive(self)
action_unarchive_project(self)
action_unlink(self)
active
Boolean
default=True
color
Integer
default=_get_default_color
name
Char
required=True
translate=True
sequence
Integer
export_string_translation=False
copy_data(self, default=None)
access_mode
Selection
default='read'
help='Read: collaborators can view tasks but cannot edit them.\nEdit with limited access: collaborators can view and edit tasks they follow in the Kanban view.\nEdit: collaborators can view and edit all tasks in the Kanban view. Additionally, they can choose which tasks they want to follow.'
required=True
args: [('read', 'Read'), ('edit_limited', 'Edit with limited access'), ('edit', 'Edit')]
parent_wizard_id
Many2one → project.share.wizard
export_string_translation=False
args: 'project.share.wizard'
partner_id
Many2one → res.partner
required=True
string='Collaborator'
args: 'res.partner'
send_invitation
Boolean
compute='_compute_send_invitation'
default=True
readonly=False
store=True
string='Send Invitation'
No public methods.
collaborator_ids
One2many → project.share.collaborator.wizard
string='Collaborators'
args: 'project.share.collaborator.wizard', 'parent_wizard_id'
existing_partner_ids
Many2many → res.partner
compute='_compute_existing_partner_ids'
export_string_translation=False
args: 'res.partner'
share_link
Char
help='Anyone with this link can access the project in read mode.'
args: 'Public Link'
action_send_mail(self)
action_share_record(self)
create(self, vals_list)
default_get(self, fields)
color
Integer
default=_get_default_color
help='Transparent tags are not visible in the kanban view of your projects and tasks.'
string='Color'
name
Char
required=True
translate=True
args: 'Name'
project_ids
Many2many → project.project
export_string_translation=False
string='Projects'
args: 'project.project', 'project_project_project_tags_rel'
task_ids
Many2many → project.task
export_string_translation=False
string='Tasks'
args: 'project.task'
arrange_tag_list_by_id(self, tag_list, id_order)
formatted_read_group(self, domain, groupby=(), aggregates=(), having=(), offset=0, limit=None, order=None) -> <expr>
name_create(self, name)
name_search(self, name='', domain=None, operator='ilike', limit=100)
search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
active
Boolean
default=True
export_string_translation=False
allocated_hours
Float
tracking=True
args: 'Allocated Time'
allow_milestones
Boolean
export_string_translation=False
related='project_id.allow_milestones'
allow_recurring_tasks
Boolean
export_string_translation=False
related='project_id.allow_recurring_tasks'
allow_task_dependencies
Boolean
export_string_translation=False
related='project_id.allow_task_dependencies'
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
export_string_translation=False
help="Attachments that don't come from a message"
string='Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
domain="[('recurring_task', '=', False)]"
export_string_translation=False
string='Sub-tasks'
args: 'project.task', 'parent_id'
closed_depend_on_count
Integer
compute='_compute_depend_on_count'
compute_sudo=True
string='Closed Depending on Tasks'
closed_subtask_count
Integer
compute='_compute_subtask_count'
export_string_translation=False
args: 'Closed Sub-tasks Count'
color
Integer
export_string_translation=False
string='Color Index'
company_id
Many2one → res.company
compute='_compute_company_id'
copy=True
default=_default_company_id
readonly=False
recursive=True
store=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
current_user_same_company_partner
Boolean
compute='_compute_current_user_same_company_partner'
compute_sudo=True
export_string_translation=False
date_assign
Datetime
copy=False
help='Date on which this task was last assigned (or unassigned). Based on this, you can get statistics on the time it usually takes to assign tasks.'
readonly=True
string='Assigning Date'
date_deadline
Datetime
copy=False
index=True
string='Deadline'
tracking=True
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
help='Date on which the state of your task has last been modified.\nBased on this information you can identify tasks that are stalling and get statistics on the time it usually takes to move tasks from one stage/state to another.'
index=True
readonly=True
string='Last Stage Update'
depend_on_count
Integer
compute='_compute_depend_on_count'
compute_sudo=True
string='Depending on Tasks'
depend_on_ids
Many2many → project.task
column1='task_id'
column2='depends_on_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Blocked By'
tracking=True
args: 'project.task'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
export_string_translation=False
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
dependent_tasks_count
Integer
compute='_compute_dependent_tasks_count'
export_string_translation=False
string='Dependent Tasks'
description
Html
sanitize_attributes=False
string='Description'
display_follow_button
Boolean
compute='_compute_display_follow_button'
compute_sudo=True
export_string_translation=False
display_in_project
Boolean
compute='_compute_display_in_project'
export_string_translation=False
store=True
display_name
Char
help='Use these keywords in the title to set new tasks:\n\n #tags Set tags on the task\n @user Assign the task to a user\n ! Set the task a medium priority\n !! Set the task a high priority\n !!! Set the task a urgent priority\n\n Make sure to use the right format and order e.g. Improve the configuration screen #feature #v16 @Mitchell !'
inverse='_inverse_display_name'
display_parent_task_button
Boolean
compute='_compute_display_parent_task_button'
compute_sudo=True
export_string_translation=False
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_cc
Char
help='Email addresses that were in the CC of the incoming emails from this task and that are not currently linked to an existing customer.'
email_from
Char
has_late_and_unreached_milestone
Boolean
compute='_compute_has_late_and_unreached_milestone'
export_string_translation=False
search='_search_has_late_and_unreached_milestone'
has_project_template
Boolean
export_string_translation=False
related='project_id.is_template'
string='Has Project Template'
has_template_ancestor
Boolean
compute='_compute_has_template_ancestor'
export_string_translation=False
recursive=True
search='_search_has_template_ancestor'
store=True
is_closed
Boolean
compute='_compute_is_closed'
search='_search_is_closed'
args: 'Closed state'
is_template
Boolean
export_string_translation=False
link_preview_name
Char
compute='_compute_link_preview_name'
export_string_translation=False
milestone_id
Many2one → project.milestone
compute='_compute_milestone_id'
domain="[('project_id', '=', project_id)]"
help='Deliver your services automatically when a milestone is reached by linking it to a sales order item.'
index='btree_not_null'
readonly=False
store=True
tracking=True
args: 'project.milestone', 'Milestone'
name
Char
index='trigram'
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
domain="['!', ('id', 'child_of', id), ('project_id', '!=', False)]"
index=True
inverse='_inverse_parent_id'
string='Parent Task'
tracking=True
args: 'project.task'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
domain="['|', ('company_id', '=?', company_id), ('company_id', '=', False)]"
index='btree_not_null'
readonly=False
recursive=True
store=True
string='Customer'
tracking=True
args: 'res.partner'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Contact Number'
personal_stage_id
Many2one → project.task.stage.personal
compute='_compute_personal_stage_id'
compute_sudo=False
group_expand='_read_group_personal_stage_type_ids'
help="The current user's personal stage."
search='_search_personal_stage_id'
string='Personal Stage State'
args: 'project.task.stage.personal'
personal_stage_type_id
Many2one → project.task.type
domain="[('user_id', '=', uid)]"
group_expand='_read_group_personal_stage_type_ids'
help="The current user's personal task stage."
readonly=False
related='personal_stage_id.stage_id'
store=False
string='Personal Stage'
args: 'project.task.type'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
copy=False
domain="[('user_id', '=', uid)]"
export_string_translation=False
group_expand='_read_group_personal_stage_type_ids'
ondelete='restrict'
string='Personal Stages'
args: 'project.task.type', 'project_task_user_rel'
portal_user_names
Char
compute='_compute_portal_user_names'
compute_sudo=True
export_string_translation=False
search='_search_portal_user_names'
priority
Selection
default='0'
index=True
string='Priority'
tracking=True
args: [('0', 'Low priority'), ('1', 'Medium priority'), ('2', 'High priority'), ('3', 'Urgent')]
project_id
Many2one → project.project
change_default=True
compute='_compute_project_id'
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]"
falsy_value_label=_lt('🔒 Private')
index=True
precompute=True
readonly=False
recursive=True
store=True
string='Project'
tracking=True
args: 'project.project'
project_privacy_visibility
Selection
related='project_id.privacy_visibility'
string='Project Visibility'
tracking=False
rating_active
Boolean
related='stage_id.rating_active'
string='Stage Rating Status'
recurrence_id
Many2one → project.task.recurrence
copy=False
index='btree_not_null'
args: 'project.task.recurrence'
recurring_count
Integer
compute='_compute_recurring_count'
string='Tasks in Recurrence'
recurring_task
Boolean
string='Recurrent'
repeat_interval
Integer
compute='_compute_repeat'
compute_sudo=True
default=1
readonly=False
string='Repeat Every'
repeat_type
Selection
compute='_compute_repeat'
compute_sudo=True
default='forever'
readonly=False
string='Until'
args: [('forever', 'Forever'), ('until', 'Until')]
repeat_unit
Selection
compute='_compute_repeat'
compute_sudo=True
default='week'
readonly=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
compute='_compute_repeat'
compute_sudo=True
readonly=False
string='End Date'
role_ids
Many2many → project.role
help='When you create a project from a template, you can choose which employee takes each role. These employees will be added to the tasks, along with anyone already assigned.'
string='Project Roles'
args: 'project.role'
sequence
Integer
default=10
export_string_translation=False
string='Sequence'
stage_id
Many2one → project.task.type
compute='_compute_stage_id'
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
readonly=False
store=True
string='Stage'
tracking=True
args: 'project.task.type'
stage_id_color
Integer
export_string_translation=False
related='stage_id.color'
string='Stage Color'
state
Selection
compute='_compute_state'
copy=False
default='01_in_progress'
index=True
inverse='_inverse_state'
readonly=False
recursive=True
required=True
store=True
string='State'
tracking=True
args: [('01_in_progress', 'In Progress'), ('02_changes_requested', 'Changes Requested'), ('03_approved', 'Approved'), *CLOSED_STATES.items(), ('04_waiting_normal', 'Waiting')]
subtask_allocated_hours
Float
compute='_compute_subtask_allocated_hours'
export_string_translation=False
help='Sum of the hours allocated for all the sub-tasks (and their own sub-tasks) linked to this task. Usually less than or equal to the allocated hours of this task.'
args: 'Sub-tasks Allocated Time'
subtask_completion_percentage
Float
compute='_compute_subtask_completion_percentage'
export_string_translation=False
subtask_count
Integer
compute='_compute_subtask_count'
export_string_translation=False
args: 'Sub-task Count'
tag_ids
Many2many → project.tags
string='Tags'
args: 'project.tags'
task_properties
Properties
copy=True
definition='project_id.task_properties_definition'
args: 'Properties'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
context={'active_test': False}
default=_default_user_ids
domain="[('share', '=', False), ('active', '=', True)]"
falsy_value_label=_lt('👤 Unassigned')
relation='project_task_user_rel'
string='Assignees'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
export_string_translation=False
working_days_close
Float
aggregator='avg'
compute='_compute_elapsed'
store=True
string='Working Days to Close'
working_days_open
Float
aggregator='avg'
compute='_compute_elapsed'
store=True
string='Working Days to Assign'
working_hours_close
Float
aggregator='avg'
compute='_compute_elapsed'
digits=(16, 2)
store=True
string='Working Hours to Close'
working_hours_open
Float
aggregator='avg'
compute='_compute_elapsed'
digits=(16, 2)
store=True
string='Working Hours to Assign'
write_date
Datetime
readonly=True
args: 'Last Updated On'
OPEN_STATES(self)
TASK_PORTAL_READABLE_FIELDS(self)
TASK_PORTAL_WRITABLE_FIELDS(self)
action_archive(self)
action_convert_to_subtask(self)
action_convert_to_template(self)
action_create_from_template(self, values=None)
action_dependent_tasks(self)
action_open_parent_task(self)
action_open_ratings(self)
action_open_task(self)
action_project_sharing_open_blocking(self)
action_project_sharing_open_subtasks(self)
action_project_sharing_open_task(self)
action_project_sharing_recurring_tasks(self)
action_project_sharing_view_parent_task(self)
action_recurring_tasks(self)
action_redirect_to_project_task_form(self)
action_undo_convert_to_template(self)
action_unlink_recurrence(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, fields)
get_empty_list_help(self, help_message)
get_import_templates(self)
get_mention_suggestions(self, search, limit=8)
get_unusual_days(self, date_from, date_to=None)
is_blocked_by_dependences(self)
message_new(self, msg_dict, custom_values=None)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_update(self, msg_dict, update_vals=None)
plan_task_in_calendar(self, vals)
project_sharing_toggle_is_follower(self)
rating_apply(self, rate, token=None, rating=None, feedback=None, subtype_xmlid=None, notify_delay_send=False)
stage_find(self, section_id, domain=[], order='sequence, id')
unlink(self)
update_date_end(self, stage_id)
write(self, vals)
allocated_hours
Float
readonly=True
string='Allocated Time'
date
Datetime
readonly=True
args: 'Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_last_stage_update
Date
readonly=True
string='Last Stage Update'
is_closed
Selection
readonly=True
string='Closing Stage'
args: [('closed', 'Closed tasks'), ('open', 'Open tasks')]
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
project_id
Many2one → project.project
readonly=True
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
args: 'project.task.type'
state
Selection
readonly=True
string='State'
args: [('01_in_progress', 'In Progress'), ('1_done', 'Done'), ('04_waiting_normal', 'Waiting'), ('03_approved', 'Approved'), ('1_canceled', 'Cancelled'), ('02_changes_requested', 'Changes Requested')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
task_specific_fields(self)
repeat_interval
Integer
default=1
string='Repeat Every'
repeat_type
Selection
default='forever'
string='Until'
args: [('forever', 'Forever'), ('until', 'Until')]
repeat_unit
Selection
default='week'
export_string_translation=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
string='End Date'
task_ids
One2many → project.task
copy=False
args: 'project.task', 'recurrence_id'
No public methods.
stage_id
Many2one → project.task.type
domain="[('user_id', '=', user_id)]"
export_string_translation=False
ondelete='set null'
args: 'project.task.type'
task_id
Many2one → project.task
export_string_translation=False
index=True
ondelete='cascade'
required=True
args: 'project.task'
user_id
Many2one → res.users
export_string_translation=False
index=True
ondelete='cascade'
required=True
args: 'res.users'
No public methods.
active
Boolean
default=True
export_string_translation=False
args: 'Active'
auto_validation_state
Boolean
default=False
help="Automatically modify the state when the customer replies to the feedback for this stage.\n * Good feedback from the customer will update the state to 'Approved' (green bullet).\n * Neutral or bad feedback will set the kanban state to 'Changes Requested' (orange bullet).\n"
args: 'Automatic Kanban Status'
color
Integer
export_string_translation=False
string='Color'
fold
Boolean
string='Folded'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set, an email will be automatically sent to the customer when the task reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Name'
translate=True
project_ids
Many2many → project.project
default=<expr>
help='Projects in which this stage is present. If you follow a similar workflow in several projects, you can share this stage among them and get consolidated information this way.'
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_active
Boolean
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
export_string_translation=False
store=True
rating_status
Selection
default='stage'
help='Collect feedback from your customers by sending them a rating request when a task enters a certain stage. To do so, define a rating email template on the stage.\nRating when changing stage: an email will be automatically sent when a task reaches the stage.\nPeriodic rating: an email will be automatically sent at regular intervals as long as the task remains in the stage.'
required=True
selection=[('stage', 'when reaching this stage'), ('periodic', 'on a periodic basis')]
string='Customer Ratings Status'
rating_status_period
Selection
default='monthly'
required=True
selection=[('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a Month'), ('monthly', 'Once a Month'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')]
string='Rating Frequency'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set, a rating request will automatically be sent by email to the customer when the task reaches this stage. \nAlternatively, it will be sent at a regular interval as long as the task remains in this stage.'
string='Rating Email Template'
args: 'mail.template'
rotting_threshold_days
Integer
default=0
help='Day count before tasks in this stage become stale. Set to 0 to disable Changing this parameter will not affect the rotting status/date of resources last updated before this change.'
args: 'Days to rot'
sequence
Integer
default=1
user_id
Many2one → res.users
compute='_compute_user_id'
default=_default_user_id
index=True
store=True
args: 'res.users', 'Stage Owner'
action_unarchive(self)
copy_data(self, default=None)
unlink_wizard(self, stage_view=False)
write(self, vals)
project_ids
Many2many → project.project
domain="['|', ('active', '=', False), ('active', '=', True)]"
export_string_translation=False
ondelete='cascade'
string='Projects'
args: 'project.project'
stage_ids
Many2many → project.task.type
export_string_translation=False
ondelete='cascade'
string='Stages To Delete'
args: 'project.task.type'
stages_active
Boolean
compute='_compute_stages_active'
export_string_translation=False
tasks_count
Integer
compute='_compute_tasks_count'
export_string_translation=False
args: 'Number of Tasks'
action_archive(self)
action_confirm(self)
action_unarchive_task(self)
action_unlink(self)
alias_domain_id
Many2one → mail.alias.domain
string='Alias Domain'
args: 'mail.alias.domain'
alias_name
Char
string='Alias Name'
date
Date
string='Expiration Date'
date_start
Date
string='Start Date'
name
Char
required=True
string='Name'
role_to_users_ids
One2many → project.template.role.to.users.map
default=_default_role_to_users_ids
args: 'project.template.role.to.users.map', 'wizard_id'
template_has_dates
Boolean
compute='_compute_template_has_dates'
template_id
Many2one → project.project
default=<expr>
args: 'project.project'
action_open_template_view(self)
create_project_from_template(self)
role_id
Many2one → project.role
required=True
string='Project Role'
args: 'project.role'
user_ids
Many2many → res.users
domain=[('share', '=', False), ('active', '=', True)]
string='Assignees'
args: 'res.users'
wizard_id
Many2one → project.template.create.wizard
export_string_translation=False
args: 'project.template.create.wizard'
No public methods.
closed_task_count
Integer
export_string_translation=False
readonly=True
args: 'Closed Task Count'
closed_task_percentage
Integer
compute='_compute_closed_task_percentage'
export_string_translation=False
args: 'Closed Task Percentage'
color
Integer
compute='_compute_color'
export_string_translation=False
date
Date
default=fields.Date.context_today
tracking=True
description
Html
label_tasks
Char
related='project_id.label_tasks'
name
Char
required=True
tracking=True
args: 'Title'
name_cropped
Char
compute='_compute_name_cropped'
export_string_translation=False
progress
Integer
tracking=True
progress_percentage
Float
compute='_compute_progress_percentage'
export_string_translation=False
project_id
Many2one → project.project
domain=[('is_template', '=', False)]
export_string_translation=False
index=True
required=True
args: 'project.project'
status
Selection
export_string_translation=False
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('done', 'Complete')]
tracking=True
task_count
Integer
export_string_translation=False
readonly=True
args: 'Task Count'
user_id
Many2one → res.users
default=<expr>
required=True
string='Author'
args: 'res.users'
create(self, vals_list)
default_get(self, fields)
unlink(self)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
args: 'Create Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Datetime
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Days to Deadline'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
domain="[('allow_task_dependencies', '=', True), ('id', '!=', id)]"
readonly=True
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
description
Text
readonly=True
display_in_project
Boolean
export_string_translation=False
has_template_ancestor
Boolean
readonly=True
is_closed
Boolean
readonly=True
string='Closed state'
is_template
Boolean
readonly=True
message_is_follower
Boolean
related='task_id.message_is_follower'
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
name
Char
readonly=True
string='Task Title'
nbr
Integer
readonly=True
args: '# of Tasks'
parent_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
readonly=True
relation='project_task_user_rel'
string='Personal Stage'
args: 'project.task.type'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low priority'), ('1', 'Medium priority'), ('2', 'High priority'), ('3', 'Urgent')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
rating_avg
Float
aggregator='avg'
readonly=True
args: 'Average Rating (1-5)'
rating_last_value
Float
aggregator='avg'
readonly=True
args: 'Last Rating (1-5)'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='State'
args: [('01_in_progress', 'In Progress'), ('1_done', 'Done'), ('04_waiting_normal', 'Waiting'), ('03_approved', 'Approved'), ('1_canceled', 'Cancelled'), ('02_changes_requested', 'Changes Requested')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
task_id
Many2one → project.task
readonly=True
string='Task'
args: 'project.task'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
working_days_close
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Days to Close'
working_days_open
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Days to Assign'
working_hours_close
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Hours to Close'
working_hours_open
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Hours to Assign'
init(self)
group_project_stages
Boolean
implied_group='project.group_project_stages'
args: 'Project Stages'
module_hr_timesheet
Boolean
string='Task Logs'
set_values(self)
project_ids
One2many → project.project
export_string_translation=False
string='Projects'
args: 'project.project', 'partner_id'
task_count
Integer
compute='_compute_task_count'
export_string_translation=False
string='# Tasks'
task_ids
One2many → project.task
export_string_translation=False
string='Tasks'
args: 'project.task', 'partner_id'
action_view_tasks(self)
favorite_project_ids
Many2many → project.project
copy=False
export_string_translation=False
string='Favorite Projects'
args: 'project.project', 'project_favorite_user_rel', 'user_id', 'project_id'
create(self, vals_list)
No new fields.
Public methods (1)get_embedded_actions_settings(self)
project_privacy_visibility
Selection
related='task_id.project_privacy_visibility'
task_id
Many2one → project.task
default=<expr>
args: 'project.task'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
mail_activity_plan_view_form_project_and_task |
mail.activity.plan.view.form.project.and.task | mail.activity.plan | xpath | Inherits mail.mail_activity_plan_view_form |
open_view_all_tasks_list_view |
open.view.all.tasks.list.view | project.task | list | Inherits view_task_tree2 |
open_view_blocked_by_list_view |
open.view.blocked.by.list.view | project.task | list | Inherits project.open_view_all_tasks_list_view |
open_view_my_tasks_list_view |
open.view.my.tasks.list.view | project.task | list | Inherits view_task_tree2 |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Projects / Tasks | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | Inherits portal.portal_sidebar |
portal_my_task_allocated_hours_template |
portal_my_task_allocated_hours_template | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_my_tasks_priority_widget_template |
Priority Widget Template | ir.ui.view | qweb | New |
portal_my_tasks_state_widget_template |
Status Widget Template | ir.ui.view | qweb | New |
portal_tasks_list |
Tasks List | ir.ui.view | qweb | New |
project.milestone_deadline |
project.milestone_deadline | ir.ui.view | qweb | New |
project_kanban_view_group_stage |
project.project.kanban.group.stage | project.project | xpath | Inherits view_project_kanban |
project_list_view_group_stage |
project.project.list.group.stage | project.project | list | Inherits view_project |
project_message_user_assigned |
project_message_user_assigned | ir.ui.view | qweb | New |
project_milestone_view_form |
project.milestone.view.form | project.milestone | form | New |
project_milestone_view_tree |
project.milestone.view.list | project.milestone | list | New |
project_project_stage_view_form |
project.project.stage.view.form | project.project.stage | form | New |
project_project_stage_view_form_quick_create |
project.project.stage.view.form.quick.create | project.project.stage | form | New |
project_project_stage_view_kanban |
project.project.stage.view.kanban | project.project.stage | kanban | New |
project_project_stage_view_search |
project.project.stage.view.search | project.project.stage | search | New |
project_project_stage_view_tree |
project.project.stage.view.list | project.project.stage | list | New |
project_project_view_activity |
project.project.view.activity | project.project | activity | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_share_wizard_confirm_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_share_wizard_view_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_sharing |
Project Sharing View | ir.ui.view | qweb | New |
project_sharing_embed |
Project Sharing View Embed | ir.ui.view | qweb | New |
project_sharing_portal |
My Project | ir.ui.view | qweb | New |
project_sharing_project_task_view_form |
project.sharing.project.task.view.form | project.task | form | New |
project_sharing_project_task_view_kanban |
project.sharing.project.task.view.kanban | project.task | kanban | New |
project_sharing_project_task_view_search |
project.task.search.form | project.task | filter | Inherits project.view_task_search_form_base |
project_sharing_project_task_view_tree |
project.sharing.project.task.list | project.task | list | Inherits project_task_view_tree_main_base |
project_sharing_quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
project_sub_task_view_kanban_mobile |
project.task.kanban | project.task | xpath | Inherits project.view_task_kanban |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | list | New |
project_task_burndown_chart_report_view_graph |
project.task.burndown.chart.report.view.graph | project.task.burndown.chart.report | graph | New |
project_task_burndown_chart_report_view_search |
project.task.burndown.chart.report.view.search | project.task.burndown.chart.report | search | New |
project_task_convert_to_subtask_view_form |
project.task.convert.to.subtask.form | project.task | form | New |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_base |
project.task.view.list.base | project.task | list | Inherits project_task_view_tree_main_base |
project_task_view_tree_main_base |
project.task.view.list.main.base | project.task | list | New |
project_update_default_description |
Project Update Description | ir.ui.view | qweb | New |
project_update_view_form |
project.update.view.form | project.update | form | New |
project_update_view_kanban |
project.update.view.kanban | project.update | kanban | New |
project_update_view_search |
project.update.view.search | project.update | search | New |
project_update_view_tree |
project.update.view.list | project.update | list | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
project_view_kanban_inherit_project |
project.kanban.inherit.project | project.project | xpath | Inherits project.view_project_kanban |
quick_create_project_form |
project.form.quick_create | project.project | form | New |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
quick_create_task_form_inherit_view_default_project |
project.task.form.quick.create.sale.order.inherited | project.task | field | Inherits quick_create_task_form |
quick_create_task_form_res_partner |
project.task.form.quick_create.res.partner | project.task | xpath | Inherits quick_create_task_form |
rating_rating_project_view_kanban |
rating.rating.kanban.project | rating.rating | xpath | Inherits rating.rating_rating_view_kanban |
rating_rating_view_form_project |
rating.rating.form.project | rating.rating | xpath | Inherits rating.rating_rating_view_form_text |
rating_rating_view_graph |
rating.rating.view.graph.project | rating.rating | xpath | Inherits rating.rating_rating_view_graph |
rating_rating_view_pivot |
rating.rating.view.pivot.project | rating.rating | xpath | Inherits rating.rating_rating_view_pivot |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_project |
rating.rating.list.project | rating.rating | field | Inherits rating.rating_rating_view_tree |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_invitation_follower |
task_invitation_follower | ir.ui.view | qweb | New |
task_link_preview_front_end |
task_link_preview_front_end | ir.ui.view | qweb | Inherits portal.frontend_layout |
task_link_preview_portal_layout |
task_link_preview_portal_layout | ir.ui.view | qweb | Inherits portal.portal_layout |
task_track_depending_tasks |
task_track_depending_tasks | ir.ui.view | qweb | New |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.list | project.task.type | list | New |
task_type_tree_inherited |
project.task.type.list.inherited | project.task.type | xpath | Inherits task_type_tree |
view_account_analytic_account_list_inherit |
account.analytic.account.list.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_list |
view_project |
project.project.list | project.project | list | New |
view_project_calendar |
project.project.calendar | project.project | calendar | New |
view_project_config |
project.project.list.config | project.project | xpath | Inherits project.view_project |
view_project_config_group_stage |
project.project.list.config.group.stage | project.project | list | Inherits view_project_config |
view_project_config_kanban |
project.kanban.inherit.config.project | project.project | xpath | Inherits view_project_kanban |
view_project_config_kanban_group_stage |
project.kanban.inherit.config.project.group.stage | project.project | xpath | Inherits view_project_config_kanban |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_project_stage_delete_wizard |
project.project.stage.delete.wizard.form | project.project.stage.delete.wizard | form | New |
view_project_project_stage_unarchive_wizard |
project.project.stage.delete.wizard.form | project.project.stage.delete.wizard | form | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_graph_inherit |
project.task.graph.inherit | project.task | xpath | Inherits project.view_project_task_graph |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_pivot_inherit |
project.task.pivot.inherit | project.task | xpath | Inherits project.view_project_task_pivot |
view_project_task_type_delete_confirmation_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_delete_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_project_task_type_unarchive_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_task_all_calendar |
project.task.all.calendar | project.task | xpath | Inherits view_task_calendar |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_form_res_partner |
project.task.form.res.partner | project.task | xpath | Inherits view_task_form2 |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_kanban_inherit_all_task |
project.task.kanban.inherit.all.task | project.task | xpath | Inherits view_task_kanban |
view_task_kanban_inherit_my_task |
project.task.kanban.inherit.my.task | project.task | xpath | Inherits view_task_kanban |
view_task_kanban_inherit_view_default_project |
project.task.kanban.sale.order | project.task | kanban | Inherits view_task_kanban |
view_task_kanban_res_partner |
project.task.kanban.res.partner | project.task | xpath | Inherits view_task_kanban_inherit_all_task |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_fsm_graph_base |
report.project.task.user.graph | report.project.task.user | graph | Inherits view_task_project_user_graph |
view_task_project_user_fsm_pivot_base |
report.project.task.user.pivot | report.project.task.user | pivot | Inherits view_task_project_user_pivot |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | Inherits project.view_task_search_form_project_fsm_base |
view_task_search_form |
project.task.search.form | project.task | filter | Inherits view_task_search_form_project_base |
view_task_search_form_base |
project.task.search.form | project.task | search | New |
view_task_search_form_project_base |
project.task.search.form.project.base | project.task | filter | Inherits view_task_search_form_project_fsm_base |
view_task_search_form_project_fsm_base |
project.task.search.form.project.base | project.task | field | Inherits view_task_search_form_base |
view_task_tree2 |
project.task.list | project.task | list | Inherits project_task_view_tree_base |
project_count
Integer
compute='_compute_project_count'
export_string_translation=False
args: 'Project Count'
project_ids
One2many → project.project
export_string_translation=False
string='Projects'
args: 'project.project', 'account_id'
action_view_projects(self)
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
export_string_translation=False
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)init(self)
limited_access
Boolean
default=False
export_string_translation=False
args: 'Limited Access'
partner_email
Char
export_string_translation=False
related='partner_id.email'
partner_id
Many2one → res.partner
export_string_translation=False
readonly=True
required=True
args: 'res.partner', 'Collaborator'
project_id
Many2one → project.project
domain=[('privacy_visibility', '=', 'portal')]
export_string_translation=False
readonly=True
required=True
args: 'project.project', 'Project Shared'
create(self, vals_list)
unlink(self)
can_be_marked_as_done
Boolean
compute='_compute_can_be_marked_as_done'
export_string_translation=False
deadline
Date
copy=False
tracking=True
done_task_count
Integer
compute='_compute_task_count'
export_string_translation=False
groups='project.group_project_milestone'
args: '# of Done Tasks'
is_deadline_exceeded
Boolean
compute='_compute_is_deadline_exceeded'
export_string_translation=False
is_deadline_future
Boolean
compute='_compute_is_deadline_future'
export_string_translation=False
is_reached
Boolean
copy=False
default=False
string='Reached'
name
Char
required=True
project_id
Many2one → project.project
default=_get_default_project_id
ondelete='cascade'
required=True
args: 'project.project'
reached_date
Date
compute='_compute_reached_date'
export_string_translation=False
store=True
task_count
Integer
compute='_compute_task_count'
export_string_translation=False
groups='project.group_project_milestone'
args: '# of Tasks'
task_ids
One2many → project.task
export_string_translation=False
args: 'project.task', 'milestone_id', 'Tasks'
action_view_tasks(self)
copy(self, default=None)
toggle_is_reached(self, is_reached)
access_instruction_message
Char
compute='_compute_access_instruction_message'
export_string_translation=False
args: 'Access Instruction Message'
account_id
Many2one → account.analytic.account
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]"
ondelete='set null'
args: 'account.analytic.account'
active
Boolean
copy=False
default=True
export_string_translation=False
alias_id
Many2one
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
allow_milestones
Boolean
default=<expr>
args: 'Milestones'
allow_task_dependencies
Boolean
default=<expr>
inverse='_inverse_allow_task_dependencies'
args: 'Task Dependencies'
analytic_account_balance
Monetary
related='account_id.balance'
can_mark_milestone_as_done
Boolean
compute='_compute_next_milestone_id'
export_string_translation=False
groups='project.group_project_milestone'
closed_task_count
Integer
compute='_compute_closed_task_count'
export_string_translation=False
collaborator_count
Integer
compute='_compute_collaborator_count'
compute_sudo=True
export_string_translation=False
args: '# Collaborators'
collaborator_ids
One2many → project.collaborator
copy=False
export_string_translation=False
string='Collaborators'
args: 'project.collaborator', 'project_id'
color
Integer
export_string_translation=False
string='Color Index'
company_id
Many2one → res.company
compute='_compute_company_id'
inverse='_inverse_company_id'
readonly=False
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency_id'
export_string_translation=False
readonly=True
string='Currency'
args: 'res.currency'
date
Date
help='Date on which this project ends. The timeframe defined on the project is taken into account when viewing its planning.'
index=True
string='Expiration Date'
tracking=True
date_start
Date
string='Start Date'
description
Html
help='Description to provide more information and context about this project'
duration_tracking
Json
groups='project.group_project_stages'
favorite_user_ids
Many2many → res.users
copy=False
export_string_translation=False
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
compute_sudo=True
export_string_translation=False
readonly=False
search='_search_is_favorite'
string='Show Project on Dashboard'
is_milestone_deadline_exceeded
Boolean
compute='_compute_next_milestone_id'
export_string_translation=False
groups='project.group_project_milestone'
is_milestone_exceeded
Boolean
compute='_compute_is_milestone_exceeded'
export_string_translation=False
search='_search_is_milestone_exceeded'
label_tasks
Char
default=<expr>
help='Name used to refer to the tasks of your project e.g. tasks, tickets, sprints, etc...'
string='Use Tasks as'
translate=True
last_update_color
Integer
compute='_compute_last_update_color'
export_string_translation=False
last_update_id
Many2one → project.update
copy=False
export_string_translation=False
string='Last Update'
args: 'project.update'
last_update_status
Selection
compute='_compute_last_update_status'
default='to_define'
export_string_translation=False
readonly=False
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('to_define', 'Set Status'), ('done', 'Done')]
store=True
milestone_count
Integer
compute='_compute_milestone_count'
export_string_translation=False
groups='project.group_project_milestone'
milestone_count_reached
Integer
compute='_compute_milestone_reached_count'
export_string_translation=False
groups='project.group_project_milestone'
milestone_ids
One2many → project.milestone
copy=True
export_string_translation=False
args: 'project.milestone', 'project_id'
milestone_progress
Integer
compute='_compute_milestone_reached_count'
export_string_translation=False
groups='project.group_project_milestone'
args: 'Milestones Reached'
name
Char
default_export_compatible=True
index='trigram'
required=True
tracking=True
translate=True
args: 'Name'
next_milestone_id
Many2one → project.milestone
compute='_compute_next_milestone_id'
export_string_translation=False
groups='project.group_project_milestone'
args: 'project.milestone'
open_task_count
Integer
compute='_compute_open_task_count'
export_string_translation=False
string='Open Task Count'
partner_id
Many2one → res.partner
auto_join=True
domain="['|', ('company_id', '=?', company_id), ('company_id', '=', False)]"
string='Customer'
tracking=True
args: 'res.partner'
privacy_visibility
Selection
default='portal'
help='People to whom this project and its tasks will be visible.\n\n- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n\n- All internal users: all internal users can access the project and all of its tasks without distinction.\n\n- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\nWhen following a project, portal users will only get access to the specific tasks they are following.\n\nWhen a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks they are following, but not edit them.\nWhen a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n\nIn any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private).'
required=True
string='Visibility'
tracking=True
args: [('followers', 'Invited internal users (private)'), ('employees', 'All internal users'), ('portal', 'Invited portal users and all internal users (public)')]
privacy_visibility_warning
Char
compute='_compute_privacy_visibility_warning'
export_string_translation=False
args: 'Privacy Visibility Warning'
rating_active
Boolean
default=<expr>
args: 'Customer Ratings'
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
export_string_translation=False
store=True
rating_status
Selection
default='stage'
help='Collect feedback from your customers by sending them a rating request when a task enters a certain stage. To do so, define a rating email template on the corresponding stages.\nRating when changing stage: an email will be automatically sent when the task reaches the stage on which the rating email template is set.\nPeriodic rating: an email will be automatically sent at regular intervals as long as the task remains in the stage in which the rating email template is set.'
required=True
args: [('stage', 'when reaching a given stage'), ('periodic', 'on a periodic basis')], 'Customer Ratings Status'
rating_status_period
Selection
default='monthly'
required=True
args: [('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a Month'), ('monthly', 'Once a Month'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')], 'Rating Frequency'
resource_calendar_id
Many2one → resource.calendar
compute='_compute_resource_calendar_id'
export_string_translation=False
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
export_string_translation=False
stage_id
Many2one → project.project.stage
copy=False
default=_default_stage_id
group_expand='_read_group_expand_full'
groups='project.group_project_stages'
index=True
ondelete='restrict'
string='Stage'
tracking=True
args: 'project.project.stage'
tag_ids
Many2many → project.tags
relation='project_project_project_tags_rel'
string='Tags'
args: 'project.tags'
task_completion_percentage
Float
compute='_compute_task_completion_percentage'
export_string_translation=False
task_count
Integer
compute='_compute_task_count'
export_string_translation=False
string='Task Count'
task_ids
One2many → project.task
domain=<expr>
export_string_translation=False
string='Tasks'
args: 'project.task', 'project_id'
task_properties_definition
PropertiesDefinition
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
export_string_translation=False
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
update_count
Integer
compute='_compute_total_update_ids'
export_string_translation=False
update_ids
One2many → project.update
export_string_translation=False
args: 'project.update', 'project_id'
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
tracking=True
args: 'res.users'
action_get_list_view(self)
action_open_share_project_wizard(self)
action_profitability_items(self, section_name, domain=None, res_id=False)
action_project_task_burndown_chart_report(self)
action_view_all_rating(self)
action_view_tasks(self)
action_view_tasks_analysis(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
get_last_update_or_default(self)
get_milestones(self)
get_panel_data(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_unsubscribe(self, partner_ids=None)
name_create(self, name)
project_update_all_action(self)
toggle_favorite(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
export_string_translation=False
company_id
Many2one → res.company
string='Company'
args: 'res.company'
fold
Boolean
help='If enabled, this stage will be displayed as folded in the Kanban view of your projects. Projects in a folded stage are considered as closed.'
args: 'Folded in Kanban'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.project')]
help='If set, an email will be automatically sent to the customer when the project reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
translate=True
sequence
Integer
default=50
export_string_translation=False
copy_data(self, default=None)
toggle_active(self)
unlink_wizard(self, stage_view=False)
write(self, vals)
projects_count
Integer
compute='_compute_projects_count'
export_string_translation=False
args: 'Number of Projects'
stage_ids
Many2many → project.project.stage
context={'active_test': False}
export_string_translation=False
ondelete='cascade'
string='Stages To Delete'
args: 'project.project.stage'
stages_active
Boolean
compute='_compute_stages_active'
export_string_translation=False
action_archive(self)
action_unarchive_project(self)
action_unlink(self)
access_mode
Selection
default='read'
help='Read: collaborators can view tasks but cannot edit them.\nEdit with limited access: collaborators can view and edit tasks they follow in the Kanban view.\nEdit: collaborators can view and edit all tasks in the Kanban view. Additionally, they can choose which tasks they want to follow.'
required=True
args: [('read', 'Read'), ('edit_limited', 'Edit with limited access'), ('edit', 'Edit')]
parent_wizard_id
Many2one → project.share.wizard
export_string_translation=False
args: 'project.share.wizard'
partner_id
Many2one → res.partner
required=True
string='Collaborator'
args: 'res.partner'
send_invitation
Boolean
compute='_compute_send_invitation'
default=True
readonly=False
store=True
string='Send Invitation'
No public methods.
collaborator_ids
One2many → project.share.collaborator.wizard
string='Collaborators'
args: 'project.share.collaborator.wizard', 'parent_wizard_id'
existing_partner_ids
Many2many → res.partner
compute='_compute_existing_partner_ids'
export_string_translation=False
args: 'res.partner'
share_link
Char
help='Anyone with this link can access the project in read mode.'
args: 'Public Link'
action_send_mail(self)
action_share_record(self)
create(self, vals_list)
default_get(self, fields)
color
Integer
default=_get_default_color
help='Transparent tags are not visible in the kanban view of your projects and tasks.'
string='Color'
name
Char
required=True
translate=True
args: 'Name'
project_ids
Many2many → project.project
export_string_translation=False
string='Projects'
args: 'project.project', 'project_project_project_tags_rel'
task_ids
Many2many → project.task
export_string_translation=False
string='Tasks'
args: 'project.task'
arrange_tag_list_by_id(self, tag_list, id_order)
name_create(self, name)
name_search(self, name='', args=None, operator='ilike', limit=100)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
active
Boolean
default=True
export_string_translation=False
allocated_hours
Float
tracking=True
args: 'Allocated Time'
allow_milestones
Boolean
export_string_translation=False
related='project_id.allow_milestones'
allow_task_dependencies
Boolean
export_string_translation=False
related='project_id.allow_task_dependencies'
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
export_string_translation=False
help="Attachments that don't come from a message"
string='Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
domain="[('recurring_task', '=', False)]"
export_string_translation=False
string='Sub-tasks'
args: 'project.task', 'parent_id'
closed_depend_on_count
Integer
compute='_compute_depend_on_count'
compute_sudo=True
string='Closed Depending on Tasks'
closed_subtask_count
Integer
compute='_compute_subtask_count'
export_string_translation=False
args: 'Closed Sub-tasks Count'
color
Integer
export_string_translation=False
string='Color Index'
company_id
Many2one → res.company
compute='_compute_company_id'
copy=True
default=_default_company_id
readonly=False
recursive=True
store=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
current_user_same_company_partner
Boolean
compute='_compute_current_user_same_company_partner'
compute_sudo=True
export_string_translation=False
date_assign
Datetime
copy=False
help='Date on which this task was last assigned (or unassigned). Based on this, you can get statistics on the time it usually takes to assign tasks.'
readonly=True
string='Assigning Date'
date_deadline
Datetime
index=True
string='Deadline'
tracking=True
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
help='Date on which the state of your task has last been modified.\nBased on this information you can identify tasks that are stalling and get statistics on the time it usually takes to move tasks from one stage/state to another.'
index=True
readonly=True
string='Last Stage Update'
depend_on_count
Integer
compute='_compute_depend_on_count'
compute_sudo=True
string='Depending on Tasks'
depend_on_ids
Many2many → project.task
column1='task_id'
column2='depends_on_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Blocked By'
tracking=True
args: 'project.task'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
export_string_translation=False
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
dependent_tasks_count
Integer
compute='_compute_dependent_tasks_count'
export_string_translation=False
string='Dependent Tasks'
description
Html
sanitize_attributes=False
string='Description'
display_follow_button
Boolean
compute='_compute_display_follow_button'
compute_sudo=True
export_string_translation=False
display_in_project
Boolean
compute='_compute_display_in_project'
export_string_translation=False
readonly=False
store=True
display_name
Char
compute='_compute_display_name'
help='Use these keywords in the title to set new tasks:\n\n #tags Set tags on the task\n @user Assign the task to a user\n !\xa0Set the task a high priority\n\n Make sure to use the right format and order\xa0e.g. Improve the configuration screen #feature #v16 @Mitchell !'
inverse='_inverse_display_name'
search='_search_display_name'
display_parent_task_button
Boolean
compute='_compute_display_parent_task_button'
compute_sudo=True
export_string_translation=False
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_cc
Char
help='Email addresses that were in the CC of the incoming emails from this task and that are not currently linked to an existing customer.'
has_late_and_unreached_milestone
Boolean
compute='_compute_has_late_and_unreached_milestone'
export_string_translation=False
search='_search_has_late_and_unreached_milestone'
is_closed
Boolean
compute='_compute_is_closed'
search='_search_is_closed'
args: 'Closed state'
link_preview_name
Char
compute='_compute_link_preview_name'
export_string_translation=False
milestone_id
Many2one → project.milestone
compute='_compute_milestone_id'
domain="[('project_id', '=', project_id)]"
help='Deliver your services automatically when a milestone is reached by linking it to a sales order item.'
index='btree_not_null'
readonly=False
store=True
tracking=True
args: 'project.milestone', 'Milestone'
name
Char
index='trigram'
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
domain="['!', ('id', 'child_of', id), ('project_id', '!=', False)]"
index=True
string='Parent Task'
tracking=True
args: 'project.task'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
domain="['|', ('company_id', '=?', company_id), ('company_id', '=', False)]"
readonly=False
recursive=True
store=True
string='Customer'
tracking=True
args: 'res.partner'
personal_stage_id
Many2one → project.task.stage.personal
compute='_compute_personal_stage_id'
compute_sudo=False
help="The current user's personal stage."
string='Personal Stage State'
args: 'project.task.stage.personal'
personal_stage_type_id
Many2one → project.task.type
compute='_compute_personal_stage_type_id'
default=_default_personal_stage_type_id
domain="[('user_id', '=', uid)]"
help="The current user's personal task stage."
inverse='_inverse_personal_stage_type_id'
search='_search_personal_stage_type_id'
store=False
string='Personal Stage'
args: 'project.task.type'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
copy=False
domain="[('user_id', '=', uid)]"
export_string_translation=False
group_expand='_read_group_personal_stage_type_ids'
ondelete='restrict'
string='Personal Stages'
args: 'project.task.type', 'project_task_user_rel'
portal_user_names
Char
compute='_compute_portal_user_names'
compute_sudo=True
export_string_translation=False
search='_search_portal_user_names'
priority
Selection
default='0'
index=True
string='Priority'
tracking=True
args: [('0', 'Low'), ('1', 'High')]
project_id
Many2one → project.project
change_default=True
compute='_compute_project_id'
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]"
index=True
precompute=True
readonly=False
recursive=True
store=True
string='Project'
tracking=True
args: 'project.project'
project_privacy_visibility
Selection
related='project_id.privacy_visibility'
string='Project Visibility'
tracking=False
rating_active
Boolean
related='project_id.rating_active'
string='Project Rating Status'
recurrence_id
Many2one → project.task.recurrence
copy=False
args: 'project.task.recurrence'
recurring_count
Integer
compute='_compute_recurring_count'
string='Tasks in Recurrence'
recurring_task
Boolean
string='Recurrent'
repeat_interval
Integer
compute='_compute_repeat'
compute_sudo=True
default=1
readonly=False
string='Repeat Every'
repeat_type
Selection
compute='_compute_repeat'
compute_sudo=True
default='forever'
readonly=False
string='Until'
args: [('forever', 'Forever'), ('until', 'Until')]
repeat_unit
Selection
compute='_compute_repeat'
compute_sudo=True
default='week'
readonly=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
compute='_compute_repeat'
compute_sudo=True
readonly=False
string='End Date'
sequence
Integer
default=10
export_string_translation=False
string='Sequence'
show_display_in_project
Boolean
compute='_compute_show_display_in_project'
stage_id
Many2one → project.task.type
compute='_compute_stage_id'
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
readonly=False
store=True
string='Stage'
tracking=True
args: 'project.task.type'
state
Selection
compute='_compute_state'
copy=False
default='01_in_progress'
index=True
inverse='_inverse_state'
readonly=False
recursive=True
required=True
store=True
string='State'
tracking=True
args: [('01_in_progress', 'In Progress'), ('02_changes_requested', 'Changes Requested'), ('03_approved', 'Approved'), *CLOSED_STATES.items(), ('04_waiting_normal', 'Waiting')]
subtask_allocated_hours
Float
compute='_compute_subtask_allocated_hours'
export_string_translation=False
help='Sum of the hours allocated for all the sub-tasks (and their own sub-tasks) linked to this task. Usually less than or equal to the allocated hours of this task.'
args: 'Sub-tasks Allocated Time'
subtask_completion_percentage
Float
compute='_compute_subtask_completion_percentage'
export_string_translation=False
subtask_count
Integer
compute='_compute_subtask_count'
export_string_translation=False
args: 'Sub-task Count'
tag_ids
Many2many → project.tags
string='Tags'
args: 'project.tags'
task_properties
Properties
copy=True
definition='project_id.task_properties_definition'
args: 'Properties'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
context={'active_test': False}
default=_default_user_ids
domain="[('share', '=', False), ('active', '=', True)]"
relation='project_task_user_rel'
string='Assignees'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
export_string_translation=False
working_days_close
Float
aggregator='avg'
compute='_compute_elapsed'
store=True
string='Working Days to Close'
working_days_open
Float
aggregator='avg'
compute='_compute_elapsed'
store=True
string='Working Days to Assign'
working_hours_close
Float
aggregator='avg'
compute='_compute_elapsed'
digits=(16, 2)
store=True
string='Working Hours to Close'
working_hours_open
Float
aggregator='avg'
compute='_compute_elapsed'
digits=(16, 2)
store=True
string='Working Hours to Assign'
write_date
Datetime
readonly=True
args: 'Last Updated On'
OPEN_STATES(self)
SELF_READABLE_FIELDS(self)
SELF_WRITABLE_FIELDS(self)
action_archive(self)
action_convert_to_subtask(self)
action_dependent_tasks(self)
action_open_parent_task(self)
action_open_ratings(self)
action_open_task(self)
action_project_sharing_open_blocking(self)
action_project_sharing_open_subtasks(self)
action_project_sharing_open_task(self)
action_project_sharing_recurring_tasks(self)
action_project_sharing_view_parent_task(self)
action_recurring_tasks(self)
action_redirect_to_project_task_form(self)
action_unlink_recurrence(self)
check_field_access_rights(self, operation, field_names)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, default_fields)
email_split(self, msg)
fields_get(self, allfields=None, attributes=None)
get_empty_list_help(self, help)
get_mention_suggestions(self, search, limit=8)
get_unusual_days(self, date_from, date_to=None)
is_blocked_by_dependences(self)
message_new(self, msg, custom_values=None)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_update(self, msg, update_vals=None)
project_sharing_toggle_is_follower(self)
rating_apply(self, rate, token=None, rating=None, feedback=None, subtype_xmlid=None, notify_delay_send=False)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
stage_find(self, section_id, domain=[], order='sequence, id')
unlink(self)
update_date_end(self, stage_id)
write(self, vals)
allocated_hours
Float
readonly=True
string='Allocated Time'
date
Datetime
readonly=True
args: 'Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_last_stage_update
Date
readonly=True
string='Last Stage Update'
is_closed
Selection
readonly=True
string='Closing Stage'
args: [('closed', 'Closed tasks'), ('open', 'Open tasks')]
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
project_id
Many2one → project.project
readonly=True
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
args: 'project.task.type'
state
Selection
readonly=True
string='State'
args: [('01_in_progress', 'In Progress'), ('1_done', 'Done'), ('04_waiting_normal', 'Waiting'), ('03_approved', 'Approved'), ('1_canceled', 'Cancelled'), ('02_changes_requested', 'Changes Requested')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
task_specific_fields(self)
repeat_interval
Integer
default=1
string='Repeat Every'
repeat_type
Selection
default='forever'
string='Until'
args: [('forever', 'Forever'), ('until', 'Until')]
repeat_unit
Selection
default='week'
export_string_translation=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
string='End Date'
task_ids
One2many → project.task
copy=False
args: 'project.task', 'recurrence_id'
No public methods.
stage_id
Many2one → project.task.type
domain="[('user_id', '=', user_id)]"
export_string_translation=False
ondelete='set null'
args: 'project.task.type'
task_id
Many2one → project.task
export_string_translation=False
index=True
ondelete='cascade'
required=True
args: 'project.task'
user_id
Many2one → res.users
export_string_translation=False
index=True
ondelete='cascade'
required=True
args: 'res.users'
No public methods.
active
Boolean
default=True
export_string_translation=False
args: 'Active'
auto_validation_state
Boolean
default=False
help="Automatically modify the state when the customer replies to the feedback for this stage.\n * Good feedback from the customer will update the state to 'Approved' (green bullet).\n * Neutral or bad feedback will set the kanban state to 'Changes Requested' (orange bullet).\n"
args: 'Automatic Kanban Status'
disabled_rating_warning
Text
compute='_compute_disabled_rating_warning'
export_string_translation=False
fold
Boolean
string='Folded in Kanban'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set, an email will be automatically sent to the customer when the task reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Name'
translate=True
project_ids
Many2many → project.project
default=<expr>
help='Projects in which this stage is present. If you follow a similar workflow in several projects, you can share this stage among them and get consolidated information this way.'
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set, a rating request will automatically be sent by email to the customer when the task reaches this stage. \nAlternatively, it will be sent at a regular interval as long as the task remains in this stage, depending on the configuration of your project. \nTo use this feature make sure that the 'Customer Ratings' option is enabled on your project."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
user_id
Many2one → res.users
compute='_compute_user_id'
default=_default_user_id
index=True
store=True
args: 'res.users', 'Stage Owner'
copy_data(self, default=None)
toggle_active(self)
unlink_wizard(self, stage_view=False)
write(self, vals)
project_ids
Many2many → project.project
domain="['|', ('active', '=', False), ('active', '=', True)]"
export_string_translation=False
ondelete='cascade'
string='Projects'
args: 'project.project'
stage_ids
Many2many → project.task.type
export_string_translation=False
ondelete='cascade'
string='Stages To Delete'
args: 'project.task.type'
stages_active
Boolean
compute='_compute_stages_active'
export_string_translation=False
tasks_count
Integer
compute='_compute_tasks_count'
export_string_translation=False
args: 'Number of Tasks'
action_archive(self)
action_confirm(self)
action_unarchive_task(self)
action_unlink(self)
closed_task_count
Integer
export_string_translation=False
readonly=True
args: 'Closed Task Count'
closed_task_percentage
Integer
compute='_compute_closed_task_percentage'
export_string_translation=False
args: 'Closed Task Percentage'
color
Integer
compute='_compute_color'
export_string_translation=False
date
Date
default=fields.Date.context_today
tracking=True
description
Html
name
Char
required=True
tracking=True
args: 'Title'
name_cropped
Char
compute='_compute_name_cropped'
export_string_translation=False
progress
Integer
tracking=True
progress_percentage
Float
compute='_compute_progress_percentage'
export_string_translation=False
project_id
Many2one → project.project
export_string_translation=False
required=True
args: 'project.project'
status
Selection
export_string_translation=False
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('done', 'Done')]
tracking=True
task_count
Integer
export_string_translation=False
readonly=True
args: 'Task Count'
user_id
Many2one → res.users
default=<expr>
required=True
string='Author'
args: 'res.users'
create(self, vals_list)
default_get(self, fields)
unlink(self)
active
Boolean
readonly=True
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
args: 'Create Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Datetime
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Days to Deadline'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
domain="[('allow_task_dependencies', '=', True), ('id', '!=', id)]"
readonly=True
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
description
Text
readonly=True
is_closed
Boolean
readonly=True
string='Closed state'
message_is_follower
Boolean
related='task_id.message_is_follower'
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
name
Char
readonly=True
string='Task'
nbr
Integer
readonly=True
args: '# of Tasks'
parent_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
readonly=True
relation='project_task_user_rel'
string='Personal Stage'
args: 'project.task.type'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low'), ('1', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
rating_avg
Float
aggregator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Average Rating (1-5)'
rating_last_value
Float
aggregator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Last Rating (1-5)'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='State'
args: [('01_in_progress', 'In Progress'), ('1_done', 'Done'), ('04_waiting_normal', 'Waiting'), ('03_approved', 'Approved'), ('1_canceled', 'Cancelled'), ('02_changes_requested', 'Changes Requested')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
task_id
Many2one → project.task
readonly=True
string='Tasks'
args: 'project.task'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
working_days_close
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Days to Close'
working_days_open
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Days to Assign'
working_hours_close
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Hours to Close'
working_hours_open
Float
aggregator='avg'
digits=(16, 2)
readonly=True
string='Working Hours to Assign'
init(self)
group_project_milestone
Boolean
group='base.group_portal,base.group_user'
implied_group='project.group_project_milestone'
args: 'Milestones'
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Customer Ratings'
group_project_recurring_tasks
Boolean
group='base.group_portal,base.group_user'
implied_group='project.group_project_recurring_tasks'
args: 'Recurring Tasks'
group_project_stages
Boolean
implied_group='project.group_project_stages'
args: 'Project Stages'
group_project_task_dependencies
Boolean
implied_group='project.group_project_task_dependencies'
args: 'Task Dependencies'
module_hr_timesheet
Boolean
string='Task Logs'
set_values(self)
project_ids
One2many → project.project
export_string_translation=False
string='Projects'
args: 'project.project', 'partner_id'
task_count
Integer
compute='_compute_task_count'
export_string_translation=False
string='# Tasks'
task_ids
One2many → project.task
export_string_translation=False
string='Tasks'
args: 'project.task', 'partner_id'
action_view_tasks(self)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
mail_activity_plan_view_form_project_and_task |
mail.activity.plan.view.form.project.and.task | mail.activity.plan | xpath | Inherits mail.mail_activity_plan_view_form |
open_view_all_tasks_list_view |
open.view.all.tasks.list.view | project.task | tree | Inherits view_task_tree2 |
open_view_my_tasks_list_view |
open.view.my.tasks.list.view | project.task | tree | Inherits view_task_tree2 |
personal_task_type_edit |
project.task.type.form | project.task.type | form | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Show Projects / Tasks | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | Inherits portal.portal_sidebar |
portal_my_task_allocated_hours_template |
portal_my_task_allocated_hours_template | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_my_tasks_priority_widget_template |
Priority Widget Template | ir.ui.view | qweb | New |
portal_my_tasks_state_widget_template |
Status Widget Template | ir.ui.view | qweb | New |
portal_tasks_list |
Tasks List | ir.ui.view | qweb | New |
project.milestone_deadline |
project.milestone_deadline | ir.ui.view | qweb | New |
project_collaborator_view_search |
project.collaborator.view.search | project.collaborator | search | New |
project_kanban_view_group_stage |
project.project.kanban.group.stage | project.project | xpath | Inherits view_project_kanban |
project_list_view_group_stage |
project.project.tree.group.stage | project.project | tree | Inherits view_project |
project_message_user_assigned |
project_message_user_assigned | ir.ui.view | qweb | New |
project_milestone_view_form |
project.milestone.view.form | project.milestone | form | New |
project_milestone_view_tree |
project.milestone.view.tree | project.milestone | tree | New |
project_project_stage_view_form |
project.project.stage.view.form | project.project.stage | form | New |
project_project_stage_view_form_quick_create |
project.project.stage.view.form.quick.create | project.project.stage | form | New |
project_project_stage_view_kanban |
project.project.stage.view.kanban | project.project.stage | kanban | New |
project_project_stage_view_search |
project.project.stage.view.search | project.project.stage | search | New |
project_project_stage_view_tree |
project.project.stage.view.tree | project.project.stage | tree | New |
project_project_view_activity |
project.project.view.activity | project.project | activity | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_share_wizard_confirm_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_share_wizard_view_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_sharing |
Project Sharing View | ir.ui.view | qweb | New |
project_sharing_access_view_tree |
project.collaborator.view.tree | project.collaborator | tree | New |
project_sharing_embed |
Project Sharing View Embed | ir.ui.view | qweb | New |
project_sharing_portal |
My Project | ir.ui.view | qweb | New |
project_sharing_project_task_view_form |
project.sharing.project.task.view.form | project.task | form | New |
project_sharing_project_task_view_kanban |
project.sharing.project.task.view.kanban | project.task | kanban | New |
project_sharing_project_task_view_search |
project.task.search.form | project.task | search | Inherits project.view_task_search_form_project_base |
project_sharing_project_task_view_tree |
project.sharing.project.task.tree | project.task | tree | Inherits project_task_view_tree_main_base |
project_sharing_quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | tree | New |
project_task_burndown_chart_report_view_graph |
project.task.burndown.chart.report.view.graph | project.task.burndown.chart.report | graph | New |
project_task_burndown_chart_report_view_search |
project.task.burndown.chart.report.view.search | project.task.burndown.chart.report | search | New |
project_task_convert_to_subtask_view_form |
project.task.convert.to.subtask.form | project.task | form | New |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_base |
project.task.view.tree.base | project.task | tree | Inherits project_task_view_tree_main_base |
project_task_view_tree_main_base |
project.task.view.tree.main.base | project.task | tree | New |
project_update_default_description |
Project Update Description | ir.ui.view | qweb | New |
project_update_view_form |
project.update.view.form | project.update | form | New |
project_update_view_kanban |
project.update.view.kanban | project.update | kanban | New |
project_update_view_search |
project.update.view.search | project.update | search | New |
project_update_view_tree |
project.update.view.tree | project.update | tree | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
project_view_kanban_inherit_project |
project.kanban.inherit.project | project.project | xpath | Inherits project.view_project_kanban |
quick_create_project_form |
project.form.quick_create | project.project | form | New |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
quick_create_task_form_inherit_view_default_project |
project.task.form.quick.create.sale.order.inherited | project.task | field | Inherits quick_create_task_form |
rating_rating_project_view_kanban |
rating.rating.kanban.project | rating.rating | xpath | Inherits rating.rating_rating_view_kanban |
rating_rating_view_form_project |
rating.rating.form.project | rating.rating | xpath | Inherits rating.rating_rating_view_form_text |
rating_rating_view_graph |
rating.rating.view.graph.project | rating.rating | xpath | Inherits rating.rating_rating_view_graph |
rating_rating_view_pivot |
rating.rating.view.pivot.project | rating.rating | xpath | Inherits rating.rating_rating_view_pivot |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_project |
rating.rating.tree.project | rating.rating | field | Inherits rating.rating_rating_view_tree |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_link_preview_front_end |
task_link_preview_front_end | ir.ui.view | qweb | Inherits portal.frontend_layout |
task_link_preview_portal_layout |
task_link_preview_portal_layout | ir.ui.view | qweb | Inherits portal.portal_layout |
task_track_depending_tasks |
task_track_depending_tasks | ir.ui.view | qweb | New |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
task_type_tree_inherited |
project.task.type.tree.inherited | project.task.type | xpath | Inherits task_type_tree |
view_project |
project.project.tree | project.project | tree | New |
view_project_calendar |
project.project.calendar | project.project | calendar | New |
view_project_config |
project.project.tree.config | project.project | xpath | Inherits project.view_project |
view_project_config_group_stage |
project.project.tree.config.group.stage | project.project | tree | Inherits view_project_config |
view_project_config_kanban |
project.kanban.inherit.config.project | project.project | xpath | Inherits view_project_kanban |
view_project_config_kanban_group_stage |
project.kanban.inherit.config.project.group.stage | project.project | xpath | Inherits view_project_config_kanban |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_project_stage_delete_wizard |
project.project.stage.delete.wizard.form | project.project.stage.delete.wizard | form | New |
view_project_project_stage_unarchive_wizard |
project.project.stage.delete.wizard.form | project.project.stage.delete.wizard | form | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_pivot_inherit |
project.task.pivot.inherit | project.task | xpath | Inherits project.view_project_task_pivot |
view_project_task_type_delete_confirmation_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_delete_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_project_task_type_unarchive_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_task_all_calendar |
project.task.all.calendar | project.task | xpath | Inherits view_task_calendar |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_kanban_inherit_all_task |
project.task.kanban.inherit.all.task | project.task | xpath | Inherits view_task_kanban |
view_task_kanban_inherit_my_task |
project.task.kanban.inherit.my.task | project.task | xpath | Inherits view_task_kanban |
view_task_kanban_inherit_view_default_project |
project.task.kanban.sale.order | project.task | kanban | Inherits view_task_kanban |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | Inherits project.view_task_search_form_project_fsm_base |
view_task_search_form |
project.task.search.form | project.task | filter | Inherits view_task_search_form_project_base |
view_task_search_form_base |
project.task.search.form | project.task | search | New |
view_task_search_form_project_base |
project.task.search.form.project.base | project.task | filter | Inherits view_task_search_form_project_fsm_base |
view_task_search_form_project_fsm_base |
project.task.search.form.project.base | project.task | field | Inherits view_task_search_form_base |
view_task_tree2 |
project.task.tree | project.task | tree | Inherits project_task_view_tree_base |
project_count
Integer
compute='_compute_project_count'
args: 'Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
action_view_projects(self)
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)init(self)
partner_email
Char
related='partner_id.email'
partner_id
Many2one → res.partner
readonly=True
required=True
args: 'res.partner', 'Collaborator'
project_id
Many2one → project.project
domain=[('privacy_visibility', '=', 'portal')]
readonly=True
required=True
args: 'project.project', 'Project Shared'
create(self, vals_list)
unlink(self)
can_be_marked_as_done
Boolean
compute='_compute_can_be_marked_as_done'
groups='project.group_project_milestone'
deadline
Date
copy=False
tracking=True
done_task_count
Integer
compute='_compute_task_count'
groups='project.group_project_milestone'
args: '# of Done Tasks'
is_deadline_exceeded
Boolean
compute='_compute_is_deadline_exceeded'
is_deadline_future
Boolean
compute='_compute_is_deadline_future'
is_reached
Boolean
copy=False
default=False
string='Reached'
name
Char
required=True
project_id
Many2one → project.project
default=_get_default_project_id
ondelete='cascade'
required=True
args: 'project.project'
reached_date
Date
compute='_compute_reached_date'
store=True
task_count
Integer
compute='_compute_task_count'
groups='project.group_project_milestone'
args: '# of Tasks'
task_ids
One2many → project.task
action_view_tasks(self)
copy(self, default=None)
toggle_is_reached(self, is_reached)
No new fields.
Public methods (0)No public methods.
access_instruction_message
Char
compute='_compute_access_instruction_message'
args: 'Access Instruction Message'
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_id
Many2one
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
allow_milestones
Boolean
default=<expr>
args: 'Milestones'
allow_rating
Boolean
compute='_compute_allow_rating'
default=<expr>
args: 'Allow Customer Ratings'
allow_task_dependencies
Boolean
default=<expr>
inverse='_inverse_allow_task_dependencies'
args: 'Task Dependencies'
analytic_account_balance
Monetary
related='analytic_account_id.balance'
analytic_account_id
Many2one → account.analytic.account
check_company=True
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]"
help='Analytic account to which this project, its tasks and its timesheets are linked. \nTrack the costs and revenues of your project by setting this analytic account on your related documents (e.g. sales orders, invoices, purchase orders, vendor bills, expenses etc.).\nThis analytic account can be changed on each task individually if necessary.\nAn analytic account is required in order to use timesheets.'
ondelete='set null'
string='Analytic Account'
args: 'account.analytic.account'
closed_task_count
Integer
compute='_compute_task_count'
string='Closed Task Count'
collaborator_count
Integer
compute='_compute_collaborator_count'
compute_sudo=True
args: '# Collaborators'
collaborator_ids
One2many → project.collaborator
copy=False
string='Collaborators'
args: 'project.collaborator', 'project_id'
color
Integer
string='Color Index'
company_id
Many2one → res.company
compute='_compute_company_id'
inverse='_inverse_company_id'
readonly=False
store=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
compute='_compute_currency_id'
readonly=True
string='Currency'
args: 'res.currency'
date
Date
help='Date on which this project ends. The timeframe defined on the project is taken into account when viewing its planning.'
index=True
string='Expiration Date'
tracking=True
date_start
Date
string='Start Date'
description
Html
help='Description to provide more information and context about this project'
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
compute_sudo=True
inverse='_inverse_is_favorite'
search='_search_is_favorite'
string='Show Project on Dashboard'
is_milestone_exceeded
Boolean
compute='_compute_is_milestone_exceeded'
search='_search_is_milestone_exceeded'
label_tasks
Char
default=<expr>
help='Name used to refer to the tasks of your project e.g. tasks, tickets, sprints, etc...'
string='Use Tasks as'
translate=True
last_update_color
Integer
compute='_compute_last_update_color'
last_update_id
Many2one → project.update
copy=False
string='Last Update'
args: 'project.update'
last_update_status
Selection
compute='_compute_last_update_status'
default='to_define'
readonly=False
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('to_define', 'Set Status'), ('done', 'Done')]
store=True
milestone_count
Integer
compute='_compute_milestone_count'
groups='project.group_project_milestone'
milestone_count_reached
Integer
compute='_compute_milestone_reached_count'
groups='project.group_project_milestone'
milestone_ids
One2many → project.milestone
name
Char
default_export_compatible=True
index='trigram'
required=True
tracking=True
translate=True
args: 'Name'
open_task_count
Integer
compute='_compute_task_count'
string='Open Task Count'
partner_id
Many2one → res.partner
auto_join=True
domain="['|', ('company_id', '=?', company_id), ('company_id', '=', False)]"
string='Customer'
tracking=True
args: 'res.partner'
privacy_visibility
Selection
default='portal'
help='People to whom this project and its tasks will be visible.\n\n- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n\n- All internal users: all internal users can access the project and all of its tasks without distinction.\n\n- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\nWhen following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n\nWhen a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks, but not edit them.\nWhen a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n\nIn any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private).'
required=True
string='Visibility'
args: [('followers', 'Invited internal users (private)'), ('employees', 'All internal users'), ('portal', 'Invited portal users and all internal users (public)')]
privacy_visibility_warning
Char
compute='_compute_privacy_visibility_warning'
args: 'Privacy Visibility Warning'
rating_active
Boolean
default=<expr>
args: 'Customer Ratings'
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
store=True
rating_status
Selection
default='stage'
help='Collect feedback from your customers by sending them a rating request when a task enters a certain stage. To do so, define a rating email template on the corresponding stages.\nRating when changing stage: an email will be automatically sent when the task reaches the stage on which the rating email template is set.\nPeriodic rating: an email will be automatically sent at regular intervals as long as the task remains in the stage in which the rating email template is set.'
required=True
args: [('stage', 'when reaching a given stage'), ('periodic', 'on a periodic basis')], 'Customer Ratings Status'
rating_status_period
Selection
default='monthly'
required=True
args: [('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a Month'), ('monthly', 'Once a Month'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')], 'Rating Frequency'
resource_calendar_id
Many2one → resource.calendar
compute='_compute_resource_calendar_id'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
stage_id
Many2one → project.project.stage
copy=False
default=_default_stage_id
group_expand='_read_group_stage_ids'
groups='project.group_project_stages'
index=True
ondelete='restrict'
string='Stage'
tracking=True
args: 'project.project.stage'
tag_ids
Many2many → project.tags
relation='project_project_project_tags_rel'
string='Tags'
args: 'project.tags'
task_count
Integer
compute='_compute_task_count'
string='Task Count'
task_ids
One2many → project.task
domain=<expr>
string='Tasks'
args: 'project.task', 'project_id'
task_properties_definition
PropertiesDefinition
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
update_ids
One2many → project.update
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
tracking=True
args: 'res.users'
action_get_list_view(self)
action_profitability_items(self, section_name, domain=None, res_id=False)
action_project_sharing(self)
action_project_task_burndown_chart_report(self)
action_project_timesheets(self)
action_view_all_rating(self)
action_view_tasks(self)
action_view_tasks_analysis(self)
copy(self, default=None)
create(self, vals_list)
get_last_update_or_default(self)
get_milestones(self)
get_panel_data(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, subtype_ids=None)
name_create(self, name)
project_update_all_action(self)
toggle_favorite(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
company_id
Many2one → res.company
string='Company'
args: 'res.company'
fold
Boolean
help='If enabled, this stage will be displayed as folded in the Kanban view of your projects. Projects in a folded stage are considered as closed.'
args: 'Folded in Kanban'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.project')]
help='If set, an email will be automatically sent to the customer when the project reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
translate=True
sequence
Integer
default=50
copy(self, default=None)
toggle_active(self)
unlink_wizard(self, stage_view=False)
write(self, vals)
projects_count
Integer
compute='_compute_projects_count'
args: 'Number of Projects'
stage_ids
Many2many → project.project.stage
context={'active_test': False}
ondelete='cascade'
string='Stages To Delete'
args: 'project.project.stage'
stages_active
Boolean
compute='_compute_stages_active'
action_archive(self)
action_unarchive_project(self)
action_unlink(self)
access_mode
Selection
display_access_mode
Boolean
action_send_mail(self)
action_share_record(self)
default_get(self, fields)
color
Integer
default=_get_default_color
help='Transparent tags are not visible in the kanban view of your projects and tasks.'
string='Color'
name
Char
required=True
translate=True
args: 'Name'
project_ids
Many2many → project.project
string='Projects'
args: 'project.project', 'project_project_project_tags_rel'
task_ids
Many2many → project.task
string='Tasks'
args: 'project.task'
arrange_tag_list_by_id(self, tag_list, id_order)
name_create(self, name)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allocated_hours
Float
tracking=True
args: 'Allocated Time'
allow_milestones
Boolean
related='project_id.allow_milestones'
allow_task_dependencies
Boolean
related='project_id.allow_task_dependencies'
analytic_account_id
Many2one → account.analytic.account
compute='_compute_analytic_account_id'
domain="[('company_id', '=?', company_id)]"
help='Analytic account to which this task and its timesheets are linked.\nTrack the costs and revenues of your task by setting its analytic account on your related documents (e.g. sales orders, invoices, purchase orders, vendor bills, expenses etc.).\nBy default, the analytic account of the project is set. However, it can be changed on each task individually if necessary.'
ondelete='set null'
readonly=False
store=True
args: 'account.analytic.account'
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachments that don't come from a message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
domain="[('recurring_task', '=', False)]"
string='Sub-tasks'
args: 'project.task', 'parent_id'
closed_subtask_count
Integer
compute='_compute_subtask_count'
args: 'Closed Sub-tasks Count'
color
Integer
string='Color Index'
company_id
Many2one → res.company
compute='_compute_company_id'
copy=True
default=_default_company_id
readonly=False
recursive=True
store=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
date_assign
Datetime
copy=False
help='Date on which this task was last assigned (or unassigned). Based on this, you can get statistics on the time it usually takes to assign tasks.'
readonly=True
string='Assigning Date'
date_deadline
Datetime
index=True
string='Deadline'
tracking=True
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
help='Date on which the state of your task has last been modified.\nBased on this information you can identify tasks that are stalling and get statistics on the time it usually takes to move tasks from one stage/state to another.'
index=True
readonly=True
string='Last Stage Update'
depend_on_ids
Many2many → project.task
column1='task_id'
column2='depends_on_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Blocked By'
tracking=True
args: 'project.task'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
dependent_tasks_count
Integer
compute='_compute_dependent_tasks_count'
string='Dependent Tasks'
description
Html
sanitize_attributes=False
string='Description'
display_in_project
Boolean
default=True
readonly=True
display_name
Char
compute='_compute_display_name'
help='Use these keywords in the title to set new tasks:\n\n #tags Set tags on the task\n @user Assign the task to a user\n !\xa0Set the task a high priority\n\n Make sure to use the right format and order\xa0e.g. Improve the configuration screen #feature #v16 @Mitchell !'
inverse='_inverse_display_name'
display_parent_task_button
Boolean
compute='_compute_display_parent_task_button'
compute_sudo=True
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_cc
Char
help='Email addresses that were in the CC of the incoming emails from this task and that are not currently linked to an existing customer.'
has_late_and_unreached_milestone
Boolean
compute='_compute_has_late_and_unreached_milestone'
search='_search_has_late_and_unreached_milestone'
milestone_id
Many2one → project.milestone
compute='_compute_milestone_id'
domain="[('project_id', '=', project_id)]"
help='Deliver your services automatically when a milestone is reached by linking it to a sales order item.'
index='btree_not_null'
readonly=False
store=True
tracking=True
args: 'project.milestone', 'Milestone'
name
Char
index='trigram'
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
domain="['!', ('id', 'child_of', id), ('project_id', '!=', False)]"
index=True
string='Parent Task'
tracking=True
args: 'project.task'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
domain="['|', ('company_id', '=?', company_id), ('company_id', '=', False)]"
readonly=False
recursive=True
store=True
string='Customer'
tracking=True
args: 'res.partner'
personal_stage_id
Many2one → project.task.stage.personal
compute='_compute_personal_stage_id'
compute_sudo=False
help="The current user's personal stage."
string='Personal Stage State'
args: 'project.task.stage.personal'
personal_stage_type_id
Many2one → project.task.type
compute='_compute_personal_stage_type_id'
default=_default_personal_stage_type_id
domain="[('user_id', '=', uid)]"
help="The current user's personal task stage."
inverse='_inverse_personal_stage_type_id'
search='_search_personal_stage_type_id'
store=False
string='Personal Stage'
args: 'project.task.type'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
copy=False
depends=['user_ids']
domain="[('user_id', '=', user.id)]"
group_expand='_read_group_personal_stage_type_ids'
ondelete='restrict'
string='Personal Stages'
args: 'project.task.type', 'project_task_user_rel'
portal_user_names
Char
compute='_compute_portal_user_names'
compute_sudo=True
search='_search_portal_user_names'
priority
Selection
default='0'
index=True
string='Priority'
tracking=True
args: [('0', 'Low'), ('1', 'High')]
project_id
Many2one → project.project
change_default=True
domain="['|', ('company_id', '=', False), ('company_id', '=?', company_id)]"
index=True
string='Project'
tracking=True
args: 'project.project'
project_privacy_visibility
Selection
related='project_id.privacy_visibility'
string='Project Visibility'
rating_active
Boolean
related='project_id.rating_active'
string='Project Rating Status'
recurrence_id
Many2one → project.task.recurrence
copy=False
args: 'project.task.recurrence'
recurring_count
Integer
compute='_compute_recurring_count'
string='Tasks in Recurrence'
recurring_task
Boolean
string='Recurrent'
repeat_interval
Integer
compute='_compute_repeat'
default=1
groups='project.group_project_user'
readonly=False
string='Repeat Every'
repeat_type
Selection
compute='_compute_repeat'
default='forever'
groups='project.group_project_user'
readonly=False
string='Until'
args: [('forever', 'Forever'), ('until', 'Until')]
repeat_unit
Selection
compute='_compute_repeat'
default='week'
groups='project.group_project_user'
readonly=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='End Date'
sequence
Integer
default=10
string='Sequence'
stage_id
Many2one → project.task.type
compute='_compute_stage_id'
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
readonly=False
store=True
string='Stage'
tracking=True
args: 'project.task.type'
state
Selection
compute='_compute_state'
copy=False
default='01_in_progress'
index=True
inverse='_inverse_state'
readonly=False
recursive=True
required=True
store=True
string='State'
tracking=True
args: [('01_in_progress', 'In Progress'), ('02_changes_requested', 'Changes Requested'), ('03_approved', 'Approved'), *CLOSED_STATES.items(), ('04_waiting_normal', 'Waiting')]
subtask_allocated_hours
Float
compute='_compute_subtask_allocated_hours'
help='Sum of the hours allocated for all the sub-tasks (and their own sub-tasks) linked to this task. Usually less than or equal to the allocated hours of this task.'
args: 'Sub-tasks Allocated Time'
subtask_count
Integer
compute='_compute_subtask_count'
args: 'Sub-task Count'
tag_ids
Many2many → project.tags
string='Tags'
args: 'project.tags'
task_properties
Properties
copy=True
definition='project_id.task_properties_definition'
args: 'Properties'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
context={'active_test': False}
default=_default_user_ids
domain="[('share', '=', False), ('active', '=', True)]"
relation='project_task_user_rel'
string='Assignees'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working Days to Close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working Days to Assign'
working_hours_close
Float
compute='_compute_elapsed'
digits=(16, 2)
group_operator='avg'
store=True
string='Working Hours to Close'
working_hours_open
Float
compute='_compute_elapsed'
digits=(16, 2)
group_operator='avg'
store=True
string='Working Hours to Assign'
write_date
Datetime
readonly=True
args: 'Last Updated On'
OPEN_STATES(self)
SELF_READABLE_FIELDS(self)
SELF_WRITABLE_FIELDS(self)
action_convert_to_subtask(self)
action_dependent_tasks(self)
action_open_parent_task(self)
action_open_ratings(self)
action_open_task(self)
action_project_sharing_open_subtasks(self)
action_project_sharing_open_task(self)
action_project_sharing_view_parent_task(self)
action_recurring_tasks(self)
action_redirect_to_project_task_form(self)
action_unlink_recurrence(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, default_fields)
email_split(self, msg)
fields_get(self, allfields=None, attributes=None)
filtered_domain(self, domain)
get_empty_list_help(self, help)
get_unusual_days(self, date_from, date_to=None)
is_blocked_by_dependences(self)
mapped(self, func)
message_new(self, msg, custom_values=None)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_update(self, msg, update_vals=None)
rating_apply(self, rate, token=None, rating=None, feedback=None, subtype_xmlid=None, notify_delay_send=False)
read(self, fields=None, load='_classic_read')
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
stage_find(self, section_id, domain=[], order='sequence, id')
unlink(self)
update_date_end(self, stage_id)
write(self, vals)
allocated_hours
Float
readonly=True
string='Allocated Time'
date
Datetime
readonly=True
args: 'Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_last_stage_update
Date
readonly=True
string='Last Stage Update'
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
project_id
Many2one → project.project
readonly=True
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
args: 'project.task.type'
state
Selection
readonly=True
string='State'
args: [('01_in_progress', 'In Progress'), ('1_done', 'Done'), ('04_waiting_normal', 'Waiting'), ('03_approved', 'Approved'), ('1_canceled', 'Canceled'), ('02_changes_requested', 'Changes Requested')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
task_specific_fields(self)
repeat_interval
Integer
default=1
string='Repeat Every'
repeat_type
Selection
default='forever'
string='Until'
args: [('forever', 'Forever'), ('until', 'Until')]
repeat_unit
Selection
default='week'
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
string='End Date'
task_ids
One2many → project.task
copy=False
args: 'project.task', 'recurrence_id'
No public methods.
stage_id
Many2one → project.task.type
domain="[('user_id', '=', user_id)]"
ondelete='set null'
args: 'project.task.type'
task_id
Many2one → project.task
index=True
ondelete='cascade'
required=True
args: 'project.task'
user_id
Many2one → res.users
index=True
ondelete='cascade'
required=True
args: 'res.users'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
auto_validation_state
Boolean
default=False
help="Automatically modify the state when the customer replies to the feedback for this stage.\n * Good feedback from the customer will update the state to 'Approved' (green bullet).\n * Neutral or bad feedback will set the kanban state to 'Changes Requested' (orange bullet).\n"
args: 'Automatic Kanban Status'
description
Text
translate=True
disabled_rating_warning
Text
compute='_compute_disabled_rating_warning'
fold
Boolean
string='Folded in Kanban'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set, an email will be automatically sent to the customer when the task reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Name'
translate=True
project_ids
Many2many → project.project
default=<expr>
help='Projects in which this stage is present. If you follow a similar workflow in several projects, you can share this stage among them and get consolidated information this way.'
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set, a rating request will automatically be sent by email to the customer when the task reaches this stage. \nAlternatively, it will be sent at a regular interval as long as the task remains in this stage, depending on the configuration of your project. \nTo use this feature make sure that the 'Customer Ratings' option is enabled on your project."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
user_id
Many2one → res.users
compute='_compute_user_id'
default=_default_user_id
index=True
store=True
args: 'res.users', 'Stage Owner'
copy(self, default=None)
toggle_active(self)
unlink_wizard(self, stage_view=False)
write(self, vals)
project_ids
Many2many → project.project
domain="['|', ('active', '=', False), ('active', '=', True)]"
ondelete='cascade'
string='Projects'
args: 'project.project'
stage_ids
Many2many → project.task.type
ondelete='cascade'
string='Stages To Delete'
args: 'project.task.type'
stages_active
Boolean
compute='_compute_stages_active'
tasks_count
Integer
compute='_compute_tasks_count'
args: 'Number of Tasks'
action_archive(self)
action_confirm(self)
action_unarchive_task(self)
action_unlink(self)
closed_task_count
Integer
readonly=True
args: 'Closed Task Count'
closed_task_percentage
Integer
compute='_compute_closed_task_percentage'
args: 'Closed Task Percentage'
color
Integer
compute='_compute_color'
date
Date
default=fields.Date.context_today
tracking=True
description
Html
name
Char
required=True
tracking=True
args: 'Title'
name_cropped
Char
compute='_compute_name_cropped'
progress
Integer
tracking=True
progress_percentage
Float
compute='_compute_progress_percentage'
project_id
Many2one → project.project
required=True
args: 'project.project'
status
Selection
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('done', 'Done')]
tracking=True
task_count
Integer
readonly=True
args: 'Task Count'
user_id
Many2one → res.users
default=<expr>
required=True
string='Author'
args: 'res.users'
create(self, vals_list)
default_get(self, fields)
unlink(self)
active
Boolean
readonly=True
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
args: 'Create Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Datetime
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Days to Deadline'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
domain="[('allow_task_dependencies', '=', True), ('id', '!=', id)]"
readonly=True
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
description
Text
readonly=True
message_is_follower
Boolean
related='task_id.message_is_follower'
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
name
Char
readonly=True
string='Task'
nbr
Integer
readonly=True
args: '# of Tasks'
parent_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
readonly=True
relation='project_task_user_rel'
string='Personal Stage'
args: 'project.task.type'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low'), ('1', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
rating_avg
Float
group_operator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Average Rating'
rating_last_value
Float
group_operator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Rating (/5)'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='State'
args: [('01_in_progress', 'In Progress'), ('1_done', 'Done'), ('04_waiting_normal', 'Waiting'), ('03_approved', 'Approved'), ('1_canceled', 'Canceled'), ('02_changes_requested', 'Changes Requested')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
task_id
Many2one → project.task
readonly=True
string='Tasks'
args: 'project.task'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Days to Assign'
working_hours_close
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Hours to Close'
working_hours_open
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Hours to Assign'
init(self)
analytic_plan_id
Many2one → account.analytic.plan
comodel_name='account.analytic.plan'
config_parameter='analytic.analytic_plan_projects'
string='Analytic Plan'
group_project_milestone
Boolean
group='base.group_portal,base.group_user'
implied_group='project.group_project_milestone'
args: 'Milestones'
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Customer Ratings'
group_project_recurring_tasks
Boolean
implied_group='project.group_project_recurring_tasks'
args: 'Recurring Tasks'
group_project_stages
Boolean
implied_group='project.group_project_stages'
args: 'Project Stages'
group_project_task_dependencies
Boolean
implied_group='project.group_project_task_dependencies'
args: 'Task Dependencies'
module_hr_timesheet
Boolean
string='Task Logs'
set_values(self)
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'partner_id'
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
personal_task_type_edit |
project.task.type.form | project.task.type | form | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Show Projects / Tasks | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | Inherits portal.portal_sidebar |
portal_my_task_planned_hours_template |
portal_my_task_planned_hours_template | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_my_tasks_priority_widget_template |
Priority Widget Template | ir.ui.view | qweb | New |
portal_my_tasks_state_widget_template |
Status Widget Template | ir.ui.view | qweb | New |
portal_tasks_list |
Tasks List | ir.ui.view | qweb | New |
project.milestone_deadline |
project.milestone_deadline | ir.ui.view | qweb | New |
project_collaborator_view_search |
project.collaborator.view.search | project.collaborator | search | New |
project_message_user_assigned |
project_message_user_assigned | ir.ui.view | qweb | New |
project_milestone_view_form |
project.milestone.view.form | project.milestone | form | New |
project_milestone_view_tree |
project.milestone.view.tree | project.milestone | tree | New |
project_project_stage_view_form |
project.project.stage.view.form | project.project.stage | form | New |
project_project_stage_view_form_quick_create |
project.project.stage.view.form.quick.create | project.project.stage | form | New |
project_project_stage_view_kanban |
project.project.stage.view.kanban | project.project.stage | kanban | New |
project_project_stage_view_search |
project.project.stage.view.search | project.project.stage | search | New |
project_project_stage_view_tree |
project.project.stage.view.tree | project.project.stage | tree | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_share_wizard_view_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_sharing |
Project Sharing View | ir.ui.view | qweb | New |
project_sharing_access_view_tree |
project.collaborator.view.tree | project.collaborator | tree | New |
project_sharing_embed |
Project Sharing View Embed | ir.ui.view | qweb | New |
project_sharing_portal |
Project Sharing View in Portal | ir.ui.view | qweb | New |
project_sharing_project_task_view_form |
project.sharing.project.task.view.form | project.task | form | New |
project_sharing_project_task_view_kanban |
project.sharing.project.task.view.kanban | project.task | kanban | New |
project_sharing_project_task_view_search |
project.task.search.form | project.task | search | New |
project_sharing_project_task_view_tree |
project.sharing.project.task.tree | project.task | tree | New |
project_sharing_quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | tree | New |
project_task_burndown_chart_report_view_graph |
project.task.burndown.chart.report.view.graph | project.task.burndown.chart.report | graph | New |
project_task_burndown_chart_report_view_search |
project.task.burndown.chart.report.view.search | project.task.burndown.chart.report | search | New |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_activity |
project.task.tree.activity | project.task | tree | New |
project_update_default_description |
Project Update Description | ir.ui.view | qweb | New |
project_update_view_form |
project.update.view.form | project.update | form | New |
project_update_view_kanban |
project.update.view.kanban | project.update | kanban | New |
project_update_view_search |
project.update.view.search | project.update | search | New |
project_update_view_tree |
project.update.view.tree | project.update | tree | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
project_view_kanban_inherit_project |
project.kanban.inherit.project | project.project | xpath | Inherits project.view_project_kanban |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
rating_rating_project_view_kanban |
rating.rating.kanban.project | rating.rating | xpath | Inherits rating.rating_rating_view_kanban |
rating_rating_view_form_project |
rating.rating.form.project | rating.rating | xpath | Inherits rating.rating_rating_view_form_text |
rating_rating_view_graph |
rating.rating.view.graph.project | rating.rating | xpath | Inherits rating.rating_rating_view_graph |
rating_rating_view_pivot |
rating.rating.view.pivot.project | rating.rating | xpath | Inherits rating.rating_rating_view_pivot |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_project |
rating.rating.tree.project | rating.rating | field | Inherits rating.rating_rating_view_tree |
report_project_task_user_view_tree |
report.project.task.user.view.tree | report.project.task.user | tree | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_track_depending_tasks |
task_track_depending_tasks | ir.ui.view | qweb | New |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
task_type_tree_inherited |
project.task.type.tree.inherited | project.task.type | xpath | Inherits task_type_tree |
view_project |
project.project.tree | project.project | tree | New |
view_project_calendar |
project.project.calendar | project.project | calendar | New |
view_project_config_kanban |
project.kanban.inherit.config.project | project.project | xpath | Inherits view_project_kanban |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_pivot_inherit |
project.task.pivot.inherit | project.task | xpath | Inherits project.view_project_task_pivot |
view_project_task_type_delete_confirmation_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_delete_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_project_task_type_unarchive_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_task_all_calendar |
project.task.all.calendar | project.task | xpath | Inherits view_task_calendar |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_kanban_inherit_my_task |
project.task.kanban.inherit.my.task | project.task | xpath | Inherits view_task_kanban |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_search_form_extended |
project.task.search.form.extended | project.task | xpath | Inherits view_task_search_form |
view_task_tree2 |
project.task.tree | project.task | tree | New |
project_count
Integer
compute='_compute_project_count'
args: 'Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
action_view_projects(self)
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)init(self)
partner_email
Char
related='partner_id.email'
partner_id
Many2one → res.partner
readonly=True
required=True
args: 'res.partner', 'Collaborator'
project_id
Many2one → project.project
domain=[('privacy_visibility', '=', 'portal')]
readonly=True
required=True
args: 'project.project', 'Project Shared'
create(self, vals_list)
name_get(self)
unlink(self)
can_be_marked_as_done
Boolean
compute='_compute_can_be_marked_as_done'
groups='project.group_project_milestone'
deadline
Date
copy=False
tracking=True
is_deadline_exceeded
Boolean
compute='_compute_is_deadline_exceeded'
is_deadline_future
Boolean
compute='_compute_is_deadline_future'
is_reached
Boolean
copy=False
default=False
string='Reached'
name
Char
required=True
project_id
Many2one → project.project
default=_get_default_project_id
ondelete='cascade'
required=True
args: 'project.project'
reached_date
Date
compute='_compute_reached_date'
store=True
task_count
Integer
compute='_compute_task_count'
groups='project.group_project_milestone'
args: '# of Tasks'
task_ids
One2many → project.task
action_view_tasks(self)
copy(self, default=None)
toggle_is_reached(self, is_reached)
No new fields.
Public methods (0)No public methods.
access_instruction_message
Char
compute='_compute_access_instruction_message'
args: 'Access Instruction Message'
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_enabled
Boolean
compute='_compute_alias_enabled'
readonly=False
string='Use Email Alias'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
alias_value
Char
compute='_compute_alias_value'
string='Alias email'
allow_milestones
Boolean
default=<expr>
args: 'Milestones'
allow_rating
Boolean
compute='_compute_allow_rating'
default=<expr>
args: 'Allow Customer Ratings'
allow_recurring_tasks
Boolean
default=<expr>
args: 'Recurring Tasks'
allow_subtasks
Boolean
default=<expr>
args: 'Sub-tasks'
allow_task_dependencies
Boolean
default=<expr>
args: 'Task Dependencies'
analytic_account_balance
Monetary
related='analytic_account_id.balance'
analytic_account_id
Many2one → account.analytic.account
check_company=True
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Analytic account to which this project, its tasks and its timesheets are linked. \nTrack the costs and revenues of your project by setting this analytic account on your related documents (e.g. sales orders, invoices, purchase orders, vendor bills, expenses etc.).\nThis analytic account can be changed on each task individually if necessary.\nAn analytic account is required in order to use timesheets.'
ondelete='set null'
string='Analytic Account'
args: 'account.analytic.account'
collaborator_count
Integer
compute='_compute_collaborator_count'
compute_sudo=True
args: '# Collaborators'
collaborator_ids
One2many → project.collaborator
copy=False
string='Collaborators'
args: 'project.collaborator', 'project_id'
color
Integer
string='Color Index'
commercial_partner_id
Many2one
related='partner_id.commercial_partner_id'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
string='Currency'
args: 'res.currency'
date
Date
help='Date on which this project ends. The timeframe defined on the project is taken into account when viewing its planning.'
index=True
string='Expiration Date'
tracking=True
date_start
Date
string='Start Date'
description
Html
help='Description to provide more information and context about this project'
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
compute_sudo=True
inverse='_inverse_is_favorite'
string='Show Project on Dashboard'
is_milestone_exceeded
Boolean
compute='_compute_is_milestone_exceeded'
search='_search_is_milestone_exceeded'
label_tasks
Char
default=<expr>
help='Name used to refer to the tasks of your project e.g. tasks, tickets, sprints, etc...'
string='Use Tasks as'
translate=True
last_update_color
Integer
compute='_compute_last_update_color'
last_update_id
Many2one → project.update
copy=False
string='Last Update'
args: 'project.update'
last_update_status
Selection
compute='_compute_last_update_status'
default='to_define'
readonly=False
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold'), ('to_define', 'Set Status')]
store=True
milestone_count
Integer
compute='_compute_milestone_count'
groups='project.group_project_milestone'
milestone_count_reached
Integer
compute='_compute_milestone_reached_count'
groups='project.group_project_milestone'
milestone_ids
One2many → project.milestone
name
Char
default_export_compatible=True
help='Name of your project. It can be anything you want e.g. the name of a customer or a service.'
index='trigram'
required=True
tracking=True
translate=True
args: 'Name'
partner_email
Char
compute='_compute_partner_email'
copy=False
inverse='_inverse_partner_email'
readonly=False
store=True
string='Email'
partner_id
Many2one → res.partner
auto_join=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
string='Customer'
tracking=True
args: 'res.partner'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Phone'
privacy_visibility
Selection
default='portal'
help='People to whom this project and its tasks will be visible.\n\n- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n\n- All internal users: all internal users can access the project and all of its tasks without distinction.\n\n- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\nWhen following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n\nWhen a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks, but not edit them.\nWhen a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n\nIn any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private).'
required=True
string='Visibility'
args: [('followers', 'Invited internal users'), ('employees', 'All internal users'), ('portal', 'Invited portal users and all internal users')]
privacy_visibility_warning
Char
compute='_compute_privacy_visibility_warning'
args: 'Privacy Visibility Warning'
rating_active
Boolean
default=<expr>
args: 'Customer Ratings'
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
store=True
rating_status
Selection
default='stage'
help='Collect feedback from your customers by sending them a rating request when a task enters a certain stage. To do so, define a rating email template on the corresponding stages.\nRating when changing stage: an email will be automatically sent when the task reaches the stage on which the rating email template is set.\nPeriodic rating: an email will be automatically sent at regular intervals as long as the task remains in the stage in which the rating email template is set.'
required=True
args: [('stage', 'Rating when changing stage'), ('periodic', 'Periodic rating')], 'Customer Ratings Status'
rating_status_period
Selection
default='monthly'
required=True
args: [('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a Month'), ('monthly', 'Once a Month'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')], 'Rating Frequency'
resource_calendar_id
Many2one → resource.calendar
related='company_id.resource_calendar_id'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
stage_id
Many2one → project.project.stage
copy=False
default=_default_stage_id
group_expand='_read_group_stage_ids'
groups='project.group_project_stages'
index=True
ondelete='restrict'
string='Stage'
tracking=True
args: 'project.project.stage'
tag_ids
Many2many → project.tags
relation='project_project_project_tags_rel'
string='Tags'
args: 'project.tags'
task_count
Integer
compute='_compute_task_count'
string='Task Count'
task_count_with_subtasks
Integer
compute='_compute_task_count'
task_ids
One2many → project.task
domain=[('is_closed', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
task_properties_definition
PropertiesDefinition
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
update_ids
One2many → project.update
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
tracking=True
args: 'res.users'
action_get_list_view(self)
action_profitability_items(self, section_name, domain=None, res_id=False)
action_project_task_burndown_chart_report(self)
action_project_timesheets(self)
action_view_all_rating(self)
action_view_tasks(self)
action_view_tasks_analysis(self)
copy(self, default=None)
create(self, vals_list)
get_last_update_or_default(self)
get_milestones(self)
get_panel_data(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, subtype_ids=None)
name_create(self, name)
project_update_all_action(self)
toggle_favorite(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
fold
Boolean
help='If enabled, this stage will be displayed as folded in the Kanban view of your projects. Projects in a folded stage are considered as closed.'
args: 'Folded in Kanban'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.project')]
help='If set, an email will be automatically sent to the customer when the project reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
translate=True
sequence
Integer
default=50
No public methods.
access_mode
Selection
display_access_mode
Boolean
action_send_mail(self)
default_get(self, fields)
color
Integer
default=_get_default_color
help='Transparent tags are not visible in the kanban view of your projects and tasks.'
string='Color'
name
Char
required=True
translate=True
args: 'Name'
project_ids
Many2many → project.project
string='Projects'
args: 'project.project', 'project_project_project_tags_rel'
task_ids
Many2many → project.task
string='Tasks'
args: 'project.task'
arrange_tag_list_by_id(self, tag_list, id_order)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
search_read(self, domain=None, fields=None, offset=0, limit=None, order=None)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allow_milestones
Boolean
related='project_id.allow_milestones'
allow_recurring_tasks
Boolean
related='project_id.allow_recurring_tasks'
allow_subtasks
Boolean
readonly=True
related='project_id.allow_subtasks'
string='Allow Sub-tasks'
allow_task_dependencies
Boolean
related='project_id.allow_task_dependencies'
analytic_account_id
Many2one → account.analytic.account
check_company=True
compute='_compute_analytic_account_id'
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Analytic account to which this task and its timesheets are linked.\nTrack the costs and revenues of your task by setting its analytic account on your related documents (e.g. sales orders, invoices, purchase orders, vendor bills, expenses etc.).\nBy default, the analytic account of the project is set. However, it can be changed on each task individually if necessary.'
ondelete='set null'
readonly=False
store=True
args: 'account.analytic.account'
ancestor_id
Many2one → project.task
compute='_compute_ancestor_id'
index='btree_not_null'
recursive=True
store=True
string='Ancestor Task'
args: 'project.task'
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachments that don't come from a message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
string='Sub-tasks'
args: 'project.task', 'parent_id'
child_text
Char
compute='_compute_child_text'
color
Integer
string='Color Index'
commercial_partner_id
Many2one
related='partner_id.commercial_partner_id'
company_id
Many2one → res.company
compute='_compute_company_id'
copy=True
default=_default_company_id
readonly=False
required=True
store=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
args: 'Created On'
date_assign
Datetime
copy=False
help='Date on which this task was last assigned (or unassigned). Based on this, you can get statistics on the time it usually takes to assign tasks.'
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
task_dependency_tracking=True
tracking=True
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
help='Date on which the stage of your task has last been modified.\nBased on this information you can identify tasks that are stalling and get statistics on the time it usually takes to move tasks from one stage to another.'
index=True
readonly=True
string='Last Stage Update'
depend_on_ids
Many2many → project.task
column1='task_id'
column2='depends_on_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Blocked By'
tracking=True
args: 'project.task'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
copy=False
domain="[('project_id', '!=', False), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
dependent_tasks_count
Integer
compute='_compute_dependent_tasks_count'
string='Dependent Tasks'
description
Html
sanitize_attributes=False
string='Description'
display_parent_task_button
Boolean
compute='_compute_display_parent_task_button'
compute_sudo=True
display_project_id
Many2one → project.project
index=True
args: 'project.project'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_cc
Char
help='Email addresses that were in the CC of the incoming emails from this task and that are not currently linked to an existing customer.'
email_from
Char
compute='_compute_email_from'
copy=False
help='These people will receive email.'
index='trigram'
readonly=False
recursive=True
store=True
string='Email From'
fri
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Fri'
has_late_and_unreached_milestone
Boolean
compute='_compute_has_late_and_unreached_milestone'
search='_search_has_late_and_unreached_milestone'
is_analytic_account_id_changed
Boolean
compute='_compute_is_analytic_account_id_changed'
store=True
args: 'Is Analytic Account Manually Changed'
is_blocked
Boolean
compute='_compute_is_blocked'
recursive=True
store=True
is_closed
Boolean
help='Folded in Kanban stages are closing stages.'
index=True
related='stage_id.fold'
store=True
string='Closing Stage'
is_private
Boolean
compute='_compute_is_private'
search='_search_is_private'
kanban_state
Selection
compute='_compute_kanban_state'
copy=False
default='normal'
readonly=False
required=True
store=True
string='Status'
args: [('normal', 'In Progress'), ('done', 'Ready'), ('blocked', 'Blocked')]
kanban_state_label
Char
compute='_compute_kanban_state_label'
string='Kanban State Label'
task_dependency_tracking=True
tracking=True
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
string='Project Manager'
args: 'res.users'
milestone_id
Many2one → project.milestone
compute='_compute_milestone_id'
domain="[('project_id', '=', project_id)]"
help='Deliver your services automatically when a milestone is reached by linking it to a sales order item.'
index='btree_not_null'
readonly=False
store=True
tracking=True
args: 'project.milestone', 'Milestone'
mon
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Mon'
name
Char
index='trigram'
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
index=True
string='Parent Task'
args: 'project.task'
partner_city
Char
readonly=False
related='partner_id.city'
partner_email
Char
compute='_compute_partner_email'
copy=False
inverse='_inverse_partner_email'
readonly=False
store=True
string='Email'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
readonly=False
recursive=True
store=True
string='Customer'
tracking=True
args: 'res.partner'
partner_is_company
Boolean
readonly=True
related='partner_id.is_company'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Phone'
personal_stage_id
Many2one → project.task.stage.personal
compute='_compute_personal_stage_id'
compute_sudo=False
help="The current user's personal stage."
string='Personal Stage State'
args: 'project.task.stage.personal'
personal_stage_type_id
Many2one → project.task.type
compute='_compute_personal_stage_type_id'
default=_default_personal_stage_type_id
help="The current user's personal task stage."
inverse='_inverse_personal_stage_type_id'
search='_search_personal_stage_type_id'
store=False
string='Personal User Stage'
args: 'project.task.type'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
copy=False
depends=['user_ids']
domain="[('user_id', '=', user.id)]"
group_expand='_read_group_personal_stage_type_ids'
ondelete='restrict'
string='Personal Stage'
args: 'project.task.type', 'project_task_user_rel'
planned_hours
Float
tracking=True
args: 'Initially Planned Hours'
portal_user_names
Char
compute='_compute_portal_user_names'
compute_sudo=True
search='_search_portal_user_names'
priority
Selection
default='0'
index=True
string='Priority'
tracking=True
args: [('0', 'Low'), ('1', 'High')]
project_analytic_account_id
Many2one → account.analytic.account
related='project_id.analytic_account_id'
string='Project Analytic Account'
args: 'account.analytic.account'
project_color
Integer
related='project_id.color'
string='Project Color'
project_id
Many2one → project.project
change_default=True
check_company=True
compute='_compute_project_id'
index=True
precompute=True
readonly=False
recursive=True
store=True
string='Project'
tracking=True
args: 'project.project'
project_privacy_visibility
Selection
related='project_id.privacy_visibility'
string='Project Visibility'
rating_active
Boolean
related='project_id.rating_active'
string='Project Rating Status'
recurrence_id
Many2one → project.task.recurrence
copy=False
args: 'project.task.recurrence'
recurrence_message
Char
compute='_compute_recurrence_message'
groups='project.group_project_user'
string='Next Recurrencies'
recurrence_update
Selection
default='this'
store=False
args: [('this', 'This task'), ('subsequent', 'This and following tasks'), ('all', 'All tasks')]
recurring_count
Integer
compute='_compute_recurring_count'
string='Tasks in Recurrence'
recurring_task
Boolean
string='Recurrent'
repeat_day
Selection
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
args: <expr>
repeat_interval
Integer
compute='_compute_repeat'
default=1
groups='project.group_project_user'
readonly=False
string='Repeat Every'
repeat_month
Selection
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
args: [('january', 'January'), ('february', 'February'), ('march', 'March'), ('april', 'April'), ('may', 'May'), ('june', 'June'), ('july', 'July'), ('august', 'August'), ('september', 'September'), ('october', 'October'), ('november', 'November'), ('december', 'December')]
repeat_number
Integer
compute='_compute_repeat'
default=1
groups='project.group_project_user'
readonly=False
string='Repetitions'
repeat_on_month
Selection
compute='_compute_repeat'
default='date'
groups='project.group_project_user'
readonly=False
args: [('date', 'Date of the Month'), ('day', 'Day of the Month')]
repeat_on_year
Selection
compute='_compute_repeat'
default='date'
groups='project.group_project_user'
readonly=False
args: [('date', 'Date of the Year'), ('day', 'Day of the Year')]
repeat_show_day
Boolean
compute='_compute_repeat_visibility'
groups='project.group_project_user'
repeat_show_dow
Boolean
compute='_compute_repeat_visibility'
groups='project.group_project_user'
repeat_show_month
Boolean
compute='_compute_repeat_visibility'
groups='project.group_project_user'
repeat_show_week
Boolean
compute='_compute_repeat_visibility'
groups='project.group_project_user'
repeat_type
Selection
compute='_compute_repeat'
default='forever'
groups='project.group_project_user'
readonly=False
string='Until'
args: [('forever', 'Forever'), ('until', 'End Date'), ('after', 'Number of Repetitions')]
repeat_unit
Selection
compute='_compute_repeat'
default='week'
groups='project.group_project_user'
readonly=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='End Date'
repeat_week
Selection
compute='_compute_repeat'
default='first'
groups='project.group_project_user'
readonly=False
args: [('first', 'First'), ('second', 'Second'), ('third', 'Third'), ('last', 'Last')]
repeat_weekday
Selection
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Day Of The Week'
args: [('mon', 'Monday'), ('tue', 'Tuesday'), ('wed', 'Wednesday'), ('thu', 'Thursday'), ('fri', 'Friday'), ('sat', 'Saturday'), ('sun', 'Sunday')]
sat
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Sat'
sequence
Integer
default=10
string='Sequence'
stage_id
Many2one → project.task.type
compute='_compute_stage_id'
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
readonly=False
store=True
string='Stage'
task_dependency_tracking=True
tracking=True
args: 'project.task.type'
subtask_count
Integer
compute='_compute_subtask_count'
args: 'Sub-task Count'
subtask_planned_hours
Float
compute='_compute_subtask_planned_hours'
help='Sum of the hours allocated for all the sub-tasks (and their own sub-tasks) linked to this task. Usually less than or equal to the allocated hours of this task.'
args: 'Sub-tasks Planned Hours'
sun
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Sun'
tag_ids
Many2many → project.tags
help="You can only see tags that are already present in your project. If you try creating a tag that is already existing in other projects, it won't generate any duplicates."
string='Tags'
args: 'project.tags'
task_properties
Properties
copy=True
definition='project_id.task_properties_definition'
args: 'Properties'
thu
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Thu'
tue
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Tue'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
context={'active_test': False}
relation='project_task_user_rel'
string='Assignees'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
wed
Boolean
compute='_compute_repeat'
groups='project.group_project_user'
readonly=False
string='Wed'
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working Days to Close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working Days to Assign'
working_hours_close
Float
compute='_compute_elapsed'
digits=(16, 2)
group_operator='avg'
store=True
string='Working Hours to Close'
working_hours_open
Float
compute='_compute_elapsed'
digits=(16, 2)
group_operator='avg'
store=True
string='Working Hours to Assign'
write_date
Datetime
readonly=True
args: 'Last Updated On'
SELF_READABLE_FIELDS(self)
SELF_WRITABLE_FIELDS(self)
action_assign_to_me(self)
action_continue_recurrence(self)
action_dependent_tasks(self)
action_open_parent_task(self)
action_open_ratings(self)
action_open_task(self)
action_project_sharing_open_subtasks(self)
action_project_sharing_open_task(self)
action_project_sharing_view_parent_task(self)
action_recurring_tasks(self)
action_stop_recurrence(self)
action_unassign_me(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, default_fields)
email_split(self, msg)
fields_get(self, allfields=None, attributes=None)
filtered_domain(self, domain)
get_empty_list_help(self, help)
get_unusual_days(self, date_from, date_to=None)
mapped(self, func)
message_new(self, msg, custom_values=None)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_update(self, msg, update_vals=None)
rating_apply(self, rate, token=None, rating=None, feedback=None, subtype_xmlid=None, notify_delay_send=False)
read(self, fields=None, load='_classic_read')
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
stage_find(self, section_id, domain=[], order='sequence, id')
update_date_end(self, stage_id)
write(self, vals)
date
Datetime
readonly=True
args: 'Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
display_project_id
Many2one → project.project
readonly=True
args: 'project.project'
has_late_and_unreached_milestone
Boolean
readonly=True
is_closed
Boolean
readonly=True
args: 'Closing Stage'
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
planned_hours
Float
readonly=True
string='Allocated Hours'
project_id
Many2one → project.project
readonly=True
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
args: 'project.task.type'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
No public methods.
fri
Boolean
string='Fri'
mon
Boolean
string='Mon'
next_recurrence_date
Date
recurrence_left
Integer
copy=False
string='Number of Tasks Left to Create'
repeat_day
Selection
repeat_interval
Integer
default=1
string='Repeat Every'
repeat_month
Selection
repeat_number
Integer
string='Repetitions'
repeat_on_month
Selection
repeat_on_year
Selection
repeat_type
Selection
default='forever'
string='Until'
args: [('forever', 'Forever'), ('until', 'End Date'), ('after', 'Number of Repetitions')]
repeat_unit
Selection
default='week'
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
string='End Date'
repeat_week
Selection
repeat_weekday
Selection
readonly=False
string='Day Of The Week'
args: [('mon', 'Monday'), ('tue', 'Tuesday'), ('wed', 'Wednesday'), ('thu', 'Thursday'), ('fri', 'Friday'), ('sat', 'Saturday'), ('sun', 'Sunday')]
sat
Boolean
string='Sat'
sun
Boolean
string='Sun'
task_ids
One2many → project.task
copy=False
args: 'project.task', 'recurrence_id'
thu
Boolean
string='Thu'
tue
Boolean
string='Tue'
wed
Boolean
string='Wed'
create(self, vals_list)
write(self, vals)
stage_id
Many2one → project.task.type
domain="[('user_id', '=', user_id)]"
ondelete='restrict'
args: 'project.task.type'
task_id
Many2one → project.task
index=True
ondelete='cascade'
required=True
args: 'project.task'
user_id
Many2one → res.users
index=True
ondelete='cascade'
required=True
args: 'res.users'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
auto_validation_kanban_state
Boolean
default=False
help="Automatically modify the kanban state when the customer replies to the feedback for this stage.\n * Good feedback from the customer will update the kanban state to 'ready for the new stage' (green bullet).\n * Neutral or bad feedback will set the kanban state to 'blocked' (red bullet).\n"
args: 'Automatic Kanban Status'
description
Text
translate=True
disabled_rating_warning
Text
compute='_compute_disabled_rating_warning'
fold
Boolean
help='If enabled, this stage will be displayed as folded in the Kanban view of your tasks. Tasks in a folded stage are considered as closed (not applicable to personal stages).'
string='Folded in Kanban'
legend_blocked
Char
default=<expr>
required=True
translate=True
args: 'Red Kanban Label'
legend_done
Char
default=<expr>
required=True
translate=True
args: 'Green Kanban Label'
legend_normal
Char
default=<expr>
required=True
translate=True
args: 'Grey Kanban Label'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set, an email will be automatically sent to the customer when the task reaches this stage.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Name'
translate=True
project_ids
Many2many → project.project
default=<expr>
help='Projects in which this stage is present. If you follow a similar workflow in several projects, you can share this stage among them and get consolidated information this way.'
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set, a rating request will automatically be sent by email to the customer when the task reaches this stage. \nAlternatively, it will be sent at a regular interval as long as the task remains in this stage, depending on the configuration of your project. \nTo use this feature make sure that the 'Customer Ratings' option is enabled on your project."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
user_id
Many2one → res.users
index=True
args: 'res.users', 'Stage Owner'
remove_personal_stage(self)
toggle_active(self)
unlink_wizard(self, stage_view=False)
write(self, vals)
project_ids
Many2many → project.project
domain="['|', ('active', '=', False), ('active', '=', True)]"
ondelete='cascade'
string='Projects'
args: 'project.project'
stage_ids
Many2many → project.task.type
ondelete='cascade'
string='Stages To Delete'
args: 'project.task.type'
stages_active
Boolean
compute='_compute_stages_active'
tasks_count
Integer
compute='_compute_tasks_count'
args: 'Number of Tasks'
action_archive(self)
action_confirm(self)
action_unarchive_task(self)
action_unlink(self)
color
Integer
compute='_compute_color'
date
Date
default=fields.Date.context_today
tracking=True
description
Html
name
Char
required=True
tracking=True
args: 'Title'
name_cropped
Char
compute='_compute_name_cropped'
progress
Integer
tracking=True
progress_percentage
Float
compute='_compute_progress_percentage'
project_id
Many2one → project.project
required=True
args: 'project.project'
status
Selection
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold')]
tracking=True
user_id
Many2one → res.users
default=<expr>
required=True
string='Author'
args: 'res.users'
create(self, vals_list)
default_get(self, fields)
unlink(self)
active
Boolean
readonly=True
ancestor_id
Many2one → project.task
readonly=True
string='Ancestor Task'
args: 'project.task'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
args: 'Create Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Days to Deadline'
is_closed
Boolean
help='Folded in Kanban stages are closing stages.'
readonly=True
args: 'Closing Stage'
milestone_deadline
Date
readonly=True
args: 'Milestone Deadline'
milestone_id
Many2one → project.milestone
readonly=True
args: 'project.milestone'
milestone_reached
Boolean
readonly=True
args: 'Is Milestone Reached'
name
Char
readonly=True
string='Task'
nbr
Integer
readonly=True
args: '# of Tasks'
parent_id
Many2one → project.task
readonly=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
readonly=True
relation='project_task_user_rel'
string='Personal Stage'
args: 'project.task.type'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low'), ('1', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
rating_avg
Float
group_operator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Average Rating'
rating_last_text
Selection
compute='_compute_rating_last_text'
search='_search_rating_last_text'
string='Rating Last Text'
args: RATING_TEXT
rating_last_value
Float
group_operator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Rating Value (/5)'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for Next Stage')]
tag_ids
Many2many → project.tags
column1='project_task_id'
column2='project_tags_id'
readonly=True
relation='project_tags_project_task_rel'
string='Tags'
args: 'project.tags'
task_id
Many2one → project.task
readonly=True
string='Tasks'
args: 'project.task'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Days to Assign'
working_hours_close
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Hours to Close'
working_hours_open
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Working Hours to Assign'
init(self)
analytic_plan_id
Many2one → account.analytic.plan
check_company=True
compute='_compute_analytic_plan_id'
help='Default Plan for a new analytic account for projects'
readonly=False
string='Default Plan'
args: 'account.analytic.plan'
write(self, values)
analytic_plan_id
Many2one → account.analytic.plan
comodel_name='account.analytic.plan'
readonly=False
related='company_id.analytic_plan_id'
string='Default Plan'
group_project_milestone
Boolean
group='base.group_portal,base.group_user'
implied_group='project.group_project_milestone'
args: 'Milestones'
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Customer Ratings'
group_project_recurring_tasks
Boolean
implied_group='project.group_project_recurring_tasks'
args: 'Recurring Tasks'
group_project_stages
Boolean
implied_group='project.group_project_stages'
args: 'Project Stages'
group_project_task_dependencies
Boolean
implied_group='project.group_project_task_dependencies'
args: 'Task Dependencies'
group_subtask_project
Boolean
implied_group='project.group_subtask_project'
args: 'Sub-tasks'
module_hr_timesheet
Boolean
string='Task Logs'
module_project_forecast
Boolean
string='Planning'
set_values(self)
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
personal_task_type_edit |
project.task.type.form | project.task.type | form | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Show Projects / Tasks | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | New |
portal_my_task_planned_hours_template |
portal_my_task_planned_hours_template | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_my_tasks_priority_widget_template |
Priority Widget Template | ir.ui.view | qweb | New |
portal_my_tasks_state_widget_template |
Status Widget Template | ir.ui.view | qweb | New |
portal_tasks_list |
Tasks List | ir.ui.view | qweb | New |
project.milestone_deadline |
project.milestone_deadline | ir.ui.view | qweb | New |
project_collaborator_view_form |
project.collaborator.view.form | project.collaborator | form | New |
project_collaborator_view_search |
project.collaborator.view.search | project.collaborator | search | New |
project_delete_wizard_form |
Delete Project | project.delete.wizard | form | New |
project_message_user_assigned |
project_message_user_assigned | ir.ui.view | qweb | New |
project_milestone_view_form |
project.milestone.view.form | project.milestone | form | New |
project_milestone_view_tree |
project.milestone.view.tree | project.milestone | tree | New |
project_project_stage_view_form |
project.project.stage.view.form | project.project.stage | form | New |
project_project_stage_view_form_quick_create |
project.project.stage.view.form.quick.create | project.project.stage | form | New |
project_project_stage_view_kanban |
project.project.stage.view.kanban | project.project.stage | kanban | New |
project_project_stage_view_search |
project.project.stage.view.search | project.project.stage | search | New |
project_project_stage_view_tree |
project.project.stage.view.tree | project.project.stage | tree | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_share_wizard_view_form |
project.share.wizard.view.form | project.share.wizard | form | New |
project_sharing |
Project Sharing View | ir.ui.view | qweb | New |
project_sharing_access_view_tree |
project.collaborator.view.tree | project.collaborator | tree | New |
project_sharing_embed |
Project Sharing View Embed | ir.ui.view | qweb | New |
project_sharing_portal |
Project Sharing View in Portal | ir.ui.view | qweb | New |
project_sharing_project_task_view_form |
project.sharing.project.task.view.form | project.task | form | New |
project_sharing_project_task_view_kanban |
project.sharing.project.task.view.kanban | project.task | kanban | New |
project_sharing_project_task_view_search |
project.task.search.form | project.task | search | New |
project_sharing_project_task_view_tree |
project.sharing.project.task.tree | project.task | tree | New |
project_sharing_quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | tree | New |
project_task_burndown_chart_report_view_graph |
project.task.burndown.chart.report.view.graph | project.task.burndown.chart.report | graph | New |
project_task_burndown_chart_report_view_pivot |
project.task.burndown.chart.report.view.pivot | project.task.burndown.chart.report | pivot | New |
project_task_burndown_chart_report_view_search |
project.task.burndown.chart.report.view.search | project.task.burndown.chart.report | search | New |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_activity |
project.task.tree.activity | project.task | tree | New |
project_update_default_description |
Project Update Description | ir.ui.view | qweb | New |
project_update_view_form |
project.update.view.form | project.update | form | New |
project_update_view_kanban |
project.update.view.kanban | project.update | kanban | New |
project_update_view_search |
project.update.view.search | project.update | search | New |
project_update_view_tree |
project.update.view.tree | project.update | tree | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
project_view_kanban_inherit_project |
project.kanban.inherit.project | project.project | xpath | Inherits project.view_project_kanban |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
rating_rating_view_form_project |
rating.rating.form.project | rating.rating | field | Inherits rating.rating_rating_view_form |
rating_rating_view_graph |
rating.rating.view.graph.project | rating.rating | xpath | Inherits rating.rating_rating_view_graph |
rating_rating_view_pivot |
rating.rating.view.pivot.project | rating.rating | xpath | Inherits rating.rating_rating_view_pivot |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_project |
rating.rating.tree.project | rating.rating | field | Inherits rating.rating_rating_view_tree |
report_project_task_user_view_tree |
report.project.task.user.view.tree | report.project.task.user | tree | New |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_track_depending_tasks |
task_track_depending_tasks | ir.ui.view | qweb | New |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_type_delete_confirmation_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_delete_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_search_form_extended |
project.task.search.form.extended | project.task | xpath | Inherits view_task_search_form |
view_task_tree2 |
project.task.tree | project.task | tree | New |
project_count
Integer
compute='_compute_project_count'
args: 'Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
action_view_projects(self)
task_ids
Many2many → project.task
string='Tasks'
args: 'project.task'
No public methods.
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
No public methods.
No new fields.
Public methods (0)No public methods.
partner_id
Many2one → res.partner
readonly=True
required=True
args: 'res.partner', 'Collaborator'
project_id
Many2one → project.project
domain=[('privacy_visibility', '=', 'portal')]
readonly=True
required=True
args: 'project.project', 'Project Shared'
create(self, vals_list)
name_get(self)
unlink(self)
project_ids
Many2many → project.project
string='Projects'
args: 'project.project'
projects_archived
Boolean
compute='_compute_projects_archived'
task_count
Integer
compute='_compute_task_count'
action_archive(self)
confirm_delete(self)
deadline
Date
tracking=True
is_deadline_exceeded
Boolean
compute='_compute_is_deadline_exceeded'
is_deadline_future
Boolean
compute='_compute_is_deadline_future'
is_reached
Boolean
default=False
string='Reached'
name
Char
required=True
project_id
Many2one → project.project
default=_get_default_project_id
required=True
args: 'project.project'
reached_date
Date
compute='_compute_reached_date'
store=True
toggle_is_reached(self, is_reached)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_enabled
Boolean
compute='_compute_alias_enabled'
readonly=False
string='Use Email Alias'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
alias_value
Char
compute='_compute_alias_value'
string='Alias email'
allow_recurring_tasks
Boolean
default=<expr>
args: 'Recurring Tasks'
allow_subtasks
Boolean
default=<expr>
args: 'Sub-tasks'
allow_task_dependencies
Boolean
default=<expr>
args: 'Task Dependencies'
analytic_account_balance
Monetary
related='analytic_account_id.balance'
analytic_account_id
Many2one → account.analytic.account
check_company=True
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Analytic account to which this project is linked for financial management. Use an analytic account to record cost and revenue on your project.'
ondelete='set null'
string='Analytic Account'
args: 'account.analytic.account'
collaborator_count
Integer
compute='_compute_collaborator_count'
compute_sudo=True
args: '# Collaborators'
collaborator_ids
One2many → project.collaborator
copy=False
string='Collaborators'
args: 'project.collaborator', 'project_id'
color
Integer
string='Color Index'
commercial_partner_id
Many2one
related='partner_id.commercial_partner_id'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
string='Currency'
args: 'res.currency'
date
Date
index=True
string='Expiration Date'
tracking=True
date_start
Date
string='Start Date'
description
Html
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
help='Whether this project should be displayed on your dashboard.'
inverse='_inverse_is_favorite'
string='Show Project on Dashboard'
label_tasks
Char
default=<expr>
help='Label used for the tasks of the project.'
string='Use Tasks as'
translate=True
last_update_color
Integer
compute='_compute_last_update_color'
last_update_id
Many2one → project.update
copy=False
string='Last Update'
args: 'project.update'
last_update_status
Selection
compute='_compute_last_update_status'
default='on_track'
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold')]
store=True
milestone_count
Integer
compute='_compute_milestone_count'
milestone_ids
One2many → project.milestone
name
Char
index=True
required=True
tracking=True
translate=True
args: 'Name'
partner_email
Char
compute='_compute_partner_email'
copy=False
inverse='_inverse_partner_email'
readonly=False
store=True
string='Email'
partner_id
Many2one → res.partner
auto_join=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
string='Customer'
tracking=True
args: 'res.partner'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Phone'
privacy_visibility
Selection
default='portal'
help='People to whom this project and its tasks will be visible.\n\n- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n\n- All internal users: all internal users can access the project and all of its tasks without distinction.\n\n- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\nWhen following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n\nWhen a project is shared in read-only, the portal user is redirected to their portal. They can view the tasks, but not edit them.\nWhen a project is shared in edit, the portal user is redirected to the kanban and list views of the tasks. They can modify a selected number of fields on the tasks.\n\nIn any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private).'
required=True
string='Visibility'
args: [('followers', 'Invited employees'), ('employees', 'All employees'), ('portal', 'Invited portal users and all employees')]
rating_active
Boolean
default=<expr>
args: 'Customer Ratings'
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
store=True
rating_status
Selection
default='stage'
help="How to get customer feedback?\n- Rating when changing stage: an email will be sent when a task is pulled to another stage.\n- Periodic rating: an email will be sent periodically.\n\nDon't forget to set up the email templates on the stages for which you want to get customer feedback."
required=True
args: [('stage', 'Rating when changing stage'), ('periodic', 'Periodic rating')], 'Customer Ratings Status'
rating_status_period
Selection
default='monthly'
required=True
args: [('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a Month'), ('monthly', 'Once a Month'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')], 'Rating Frequency'
resource_calendar_id
Many2one → resource.calendar
related='company_id.resource_calendar_id'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of Projects.'
stage_id
Many2one → project.project.stage
copy=False
default=_default_stage_id
group_expand='_read_group_stage_ids'
groups='project.group_project_stages'
index=True
ondelete='restrict'
string='Stage'
tracking=True
args: 'project.project.stage'
tag_ids
Many2many → project.tags
relation='project_project_project_tags_rel'
string='Tags'
args: 'project.tags'
task_count
Integer
compute='_compute_task_count'
string='Task Count'
task_count_with_subtasks
Integer
compute='_compute_task_count'
task_ids
One2many → project.task
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
update_ids
One2many → project.update
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
tracking=True
args: 'res.users'
action_unlink(self)
action_view_all_rating(self)
action_view_analytic_account_entries(self)
action_view_kanban_project(self)
action_view_tasks(self)
action_view_tasks_analysis(self)
attachment_tree_view(self)
copy(self, default=None)
create(self, vals)
get_last_update_or_default(self)
get_panel_data(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, subtype_ids=None)
message_unsubscribe(self, partner_ids=None)
toggle_favorite(self)
unlink(self)
write(self, vals)
active
Boolean
default=True
fold
Boolean
help='This stage is folded in the kanban view.'
args: 'Folded in Kanban'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.project')]
help='If set, an email will be sent to the customer when the project reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
translate=True
sequence
Integer
default=50
No public methods.
access_mode
Selection
display_access_mode
Boolean
action_send_mail(self)
default_get(self, fields)
color
Integer
default=_get_default_color
string='Color'
name
Char
required=True
args: 'Name'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allow_recurring_tasks
Boolean
related='project_id.allow_recurring_tasks'
allow_subtasks
Boolean
readonly=True
related='project_id.allow_subtasks'
string='Allow Sub-tasks'
allow_task_dependencies
Boolean
related='project_id.allow_task_dependencies'
analytic_account_id
Many2one → account.analytic.account
check_company=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Analytic account to which this task is linked for financial management. Use an analytic account to record cost and revenue on your task. If empty, the analytic account of the project will be used.'
ondelete='set null'
args: 'account.analytic.account'
analytic_tag_ids
Many2many → account.analytic.tag
check_company=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
args: 'account.analytic.tag'
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachments that don't come from a message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
string='Sub-tasks'
args: 'project.task', 'parent_id'
child_text
Char
compute='_compute_child_text'
color
Integer
string='Color Index'
commercial_partner_id
Many2one
related='partner_id.commercial_partner_id'
company_id
Many2one → res.company
compute='_compute_company_id'
copy=True
default=_default_company_id
readonly=False
required=True
store=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
date_assign
Datetime
copy=False
index=True
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
task_dependency_tracking=True
tracking=True
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
index=True
readonly=True
string='Last Stage Update'
depend_on_ids
Many2many → project.task
column1='task_id'
column2='depends_on_id'
copy=False
domain="[('allow_task_dependencies', '=', True), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Blocked By'
tracking=True
args: 'project.task'
dependent_ids
Many2many → project.task
column1='depends_on_id'
column2='task_id'
copy=False
domain="[('allow_task_dependencies', '=', True), ('id', '!=', id)]"
relation='task_dependencies_rel'
string='Block'
args: 'project.task'
dependent_tasks_count
Integer
compute='_compute_dependent_tasks_count'
string='Dependent Tasks'
description
Html
sanitize_attributes=False
string='Description'
display_project_id
Many2one → project.project
index=True
args: 'project.project'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_from
Char
compute='_compute_email_from'
copy=False
help='These people will receive email.'
index=True
readonly=False
recursive=True
store=True
string='Email From'
fri
Boolean
compute='_compute_repeat'
readonly=False
string='Fri'
is_closed
Boolean
readonly=True
related='stage_id.is_closed'
related_sudo=False
string='Closing Stage'
is_private
Boolean
compute='_compute_is_private'
kanban_state
Selection
copy=False
default='normal'
required=True
string='Status'
args: [('normal', 'In Progress'), ('done', 'Ready'), ('blocked', 'Blocked')]
kanban_state_label
Char
compute='_compute_kanban_state_label'
string='Kanban State Label'
task_dependency_tracking=True
tracking=True
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
related_sudo=False
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
related_sudo=False
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
related_sudo=False
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
string='Project Manager'
args: 'res.users'
mon
Boolean
compute='_compute_repeat'
readonly=False
string='Mon'
name
Char
index=True
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
index=True
string='Parent Task'
args: 'project.task'
partner_city
Char
readonly=False
related='partner_id.city'
partner_email
Char
compute='_compute_partner_email'
copy=False
inverse='_inverse_partner_email'
readonly=False
store=True
string='Email'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
readonly=False
recursive=True
store=True
string='Customer'
tracking=True
args: 'res.partner'
partner_is_company
Boolean
readonly=True
related='partner_id.is_company'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Phone'
personal_stage_id
Many2one → project.task.stage.personal
compute='_compute_personal_stage_id'
compute_sudo=False
help="The current user's personal stage."
string='Personal Stage State'
args: 'project.task.stage.personal'
personal_stage_type_id
Many2one → project.task.type
compute='_compute_personal_stage_type_id'
help="The current user's personal task stage."
inverse='_inverse_personal_stage_type_id'
search='_search_personal_stage_type_id'
store=False
string='Personal User Stage'
args: 'project.task.type'
personal_stage_type_ids
Many2many → project.task.type
column1='task_id'
column2='stage_id'
copy=False
depends=['user_ids']
domain="[('user_id', '=', user.id)]"
group_expand='_read_group_personal_stage_type_ids'
ondelete='restrict'
string='Personal Stage'
args: 'project.task.type', 'project_task_user_rel'
planned_hours
Float
help='Time planned to achieve this task (including its sub-tasks).'
tracking=True
args: 'Initially Planned Hours'
portal_user_names
Char
compute='_compute_portal_user_names'
compute_sudo=True
search='_search_portal_user_names'
priority
Selection
default='0'
index=True
string='Starred'
tracking=True
args: [('0', 'Normal'), ('1', 'Important')]
project_analytic_account_id
Many2one → account.analytic.account
related='project_id.analytic_account_id'
string='Project Analytic Account'
args: 'account.analytic.account'
project_id
Many2one → project.project
change_default=True
check_company=True
compute='_compute_project_id'
index=True
readonly=False
recursive=True
store=True
string='Project'
tracking=True
args: 'project.project'
project_privacy_visibility
Selection
related='project_id.privacy_visibility'
string='Project Visibility'
recurrence_id
Many2one → project.task.recurrence
copy=False
args: 'project.task.recurrence'
recurrence_message
Char
compute='_compute_recurrence_message'
string='Next Recurrencies'
recurrence_update
Selection
default='this'
store=False
args: [('this', 'This task'), ('subsequent', 'This and following tasks'), ('all', 'All tasks')]
recurring_count
Integer
compute='_compute_recurring_count'
string='Tasks in Recurrence'
recurring_task
Boolean
string='Recurrent'
repeat_day
Selection
compute='_compute_repeat'
readonly=False
args: <expr>
repeat_interval
Integer
compute='_compute_repeat'
default=1
readonly=False
string='Repeat Every'
repeat_month
Selection
compute='_compute_repeat'
readonly=False
args: [('january', 'January'), ('february', 'February'), ('march', 'March'), ('april', 'April'), ('may', 'May'), ('june', 'June'), ('july', 'July'), ('august', 'August'), ('september', 'September'), ('october', 'October'), ('november', 'November'), ('december', 'December')]
repeat_number
Integer
compute='_compute_repeat'
default=1
readonly=False
string='Repetitions'
repeat_on_month
Selection
compute='_compute_repeat'
default='date'
readonly=False
args: [('date', 'Date of the Month'), ('day', 'Day of the Month')]
repeat_on_year
Selection
compute='_compute_repeat'
default='date'
readonly=False
args: [('date', 'Date of the Year'), ('day', 'Day of the Year')]
repeat_show_day
Boolean
compute='_compute_repeat_visibility'
repeat_show_dow
Boolean
compute='_compute_repeat_visibility'
repeat_show_month
Boolean
compute='_compute_repeat_visibility'
repeat_show_week
Boolean
compute='_compute_repeat_visibility'
repeat_type
Selection
compute='_compute_repeat'
default='forever'
readonly=False
string='Until'
args: [('forever', 'Forever'), ('until', 'End Date'), ('after', 'Number of Repetitions')]
repeat_unit
Selection
compute='_compute_repeat'
default='week'
readonly=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
compute='_compute_repeat'
readonly=False
string='End Date'
repeat_week
Selection
compute='_compute_repeat'
default='first'
readonly=False
args: [('first', 'First'), ('second', 'Second'), ('third', 'Third'), ('last', 'Last')]
repeat_weekday
Selection
compute='_compute_repeat'
readonly=False
string='Day Of The Week'
args: [('mon', 'Monday'), ('tue', 'Tuesday'), ('wed', 'Wednesday'), ('thu', 'Thursday'), ('fri', 'Friday'), ('sat', 'Saturday'), ('sun', 'Sunday')]
sat
Boolean
compute='_compute_repeat'
readonly=False
string='Sat'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of tasks.'
index=True
string='Sequence'
stage_id
Many2one → project.task.type
compute='_compute_stage_id'
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
readonly=False
store=True
string='Stage'
task_dependency_tracking=True
tracking=True
args: 'project.task.type'
subtask_count
Integer
compute='_compute_subtask_count'
args: 'Sub-task Count'
subtask_planned_hours
Float
compute='_compute_subtask_planned_hours'
help='Sum of the time planned of all the sub-tasks linked to this task. Usually less than or equal to the initially planned time of this task.'
args: 'Sub-tasks Planned Hours'
sun
Boolean
compute='_compute_repeat'
readonly=False
string='Sun'
tag_ids
Many2many → project.tags
string='Tags'
args: 'project.tags'
thu
Boolean
compute='_compute_repeat'
readonly=False
string='Thu'
tue
Boolean
compute='_compute_repeat'
readonly=False
string='Tue'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
context={'active_test': False}
default=<expr>
relation='project_task_user_rel'
string='Assignees'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
wed
Boolean
compute='_compute_repeat'
readonly=False
string='Wed'
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working Days to Close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working Days to Assign'
working_hours_close
Float
compute='_compute_elapsed'
digits=(16, 2)
group_operator='avg'
store=True
string='Working Hours to Close'
working_hours_open
Float
compute='_compute_elapsed'
digits=(16, 2)
group_operator='avg'
store=True
string='Working Hours to Assign'
write_date
Datetime
index=True
readonly=True
args: 'Last Updated On'
SELF_READABLE_FIELDS(self)
SELF_WRITABLE_FIELDS(self)
action_assign_to_me(self)
action_continue_recurrence(self)
action_dependent_tasks(self)
action_open_parent_task(self)
action_open_task(self)
action_recurring_tasks(self)
action_stop_recurrence(self)
action_unassign_me(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
default_get(self, default_fields)
email_split(self, msg)
fields_get(self, allfields=None, attributes=None)
filtered_domain(self, domain)
get_empty_list_help(self, help)
mapped(self, func)
message_new(self, msg, custom_values=None)
message_update(self, msg, update_vals=None)
rating_apply(self, rate, token=None, feedback=None, subtype_xmlid=None)
rating_get_partner_id(self)
rating_get_rated_partner_id(self)
read(self, fields=None, load='_classic_read')
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
stage_find(self, section_id, domain=[], order='sequence, id')
update_date_end(self, stage_id)
write(self, vals)
date
Datetime
readonly=True
args: 'Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_group_by
Selection
readonly=True
string='Date Group By'
args: [('day', 'By Day'), ('month', 'By Month'), ('quarter', 'By quarter'), ('year', 'By Year')]
display_project_id
Many2one → project.project
readonly=True
args: 'project.project'
nb_tasks
Integer
group_operator='sum'
readonly=True
args: '# of Tasks'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
project_id
Many2one → project.project
readonly=True
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
args: 'project.task.type'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
init(self)
read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)
fri
Boolean
string='Fri'
mon
Boolean
string='Mon'
next_recurrence_date
Date
recurrence_left
Integer
copy=False
string='Number of Tasks Left to Create'
repeat_day
Selection
repeat_interval
Integer
default=1
string='Repeat Every'
repeat_month
Selection
repeat_number
Integer
string='Repetitions'
repeat_on_month
Selection
repeat_on_year
Selection
repeat_type
Selection
default='forever'
string='Until'
args: [('forever', 'Forever'), ('until', 'End Date'), ('after', 'Number of Repetitions')]
repeat_unit
Selection
default='week'
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
string='End Date'
repeat_week
Selection
repeat_weekday
Selection
readonly=False
string='Day Of The Week'
args: [('mon', 'Monday'), ('tue', 'Tuesday'), ('wed', 'Wednesday'), ('thu', 'Thursday'), ('fri', 'Friday'), ('sat', 'Saturday'), ('sun', 'Sunday')]
sat
Boolean
string='Sat'
sun
Boolean
string='Sun'
task_ids
One2many → project.task
copy=False
args: 'project.task', 'recurrence_id'
thu
Boolean
string='Thu'
tue
Boolean
string='Tue'
wed
Boolean
string='Wed'
create(self, vals)
write(self, vals)
stage_id
Many2one → project.task.type
domain="[('user_id', '=', user_id)]"
ondelete='restrict'
args: 'project.task.type'
task_id
Many2one → project.task
index=True
ondelete='cascade'
required=True
args: 'project.task'
user_id
Many2one → res.users
index=True
ondelete='cascade'
required=True
args: 'res.users'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
auto_validation_kanban_state
Boolean
default=False
help="Automatically modify the kanban state when the customer replies to the feedback for this stage.\n * Good feedback from the customer will update the kanban state to 'ready for the new stage' (green bullet).\n * Neutral or bad feedback will set the kanban state to 'blocked' (red bullet).\n"
args: 'Automatic kanban status'
description
Text
translate=True
disabled_rating_warning
Text
compute='_compute_disabled_rating_warning'
fold
Boolean
help='This stage is folded in the kanban view when there are no records in that stage to display.'
string='Folded in Kanban'
is_closed
Boolean
help='Tasks in this stage are considered as closed.'
args: 'Closing Stage'
legend_blocked
Char
default=<expr>
help='Override the default value displayed for the blocked state for kanban selection when the task or issue is in that stage.'
required=True
translate=True
args: 'Red Kanban Label'
legend_done
Char
default=<expr>
help='Override the default value displayed for the done state for kanban selection when the task or issue is in that stage.'
required=True
translate=True
args: 'Green Kanban Label'
legend_normal
Char
default=<expr>
help='Override the default value displayed for the normal state for kanban selection when the task or issue is in that stage.'
required=True
translate=True
args: 'Grey Kanban Label'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set, an email will be sent to the customer when the task or issue reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Name'
translate=True
project_ids
Many2many → project.project
default=<expr>
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set and if the project's rating configuration is 'Rating when changing stage', then an email will be sent to the customer when the task reaches this step."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
user_id
Many2one → res.users
index=True
args: 'res.users', 'Stage Owner'
remove_personal_stage(self)
unlink_wizard(self, stage_view=False)
write(self, vals)
project_ids
Many2many → project.project
domain="['|', ('active', '=', False), ('active', '=', True)]"
ondelete='cascade'
string='Projects'
args: 'project.project'
stage_ids
Many2many → project.task.type
ondelete='cascade'
string='Stages To Delete'
args: 'project.task.type'
stages_active
Boolean
compute='_compute_stages_active'
tasks_count
Integer
compute='_compute_tasks_count'
args: 'Number of Tasks'
action_archive(self)
action_confirm(self)
action_unlink(self)
color
Integer
compute='_compute_color'
date
Date
default=fields.Date.context_today
tracking=True
description
Html
name
Char
required=True
tracking=True
args: 'Title'
name_cropped
Char
compute='_compute_name_cropped'
progress
Integer
tracking=True
progress_percentage
Float
compute='_compute_progress_percentage'
project_id
Many2one → project.project
required=True
args: 'project.project'
status
Selection
required=True
selection=[('on_track', 'On Track'), ('at_risk', 'At Risk'), ('off_track', 'Off Track'), ('on_hold', 'On Hold')]
tracking=True
user_id
Many2one → res.users
default=<expr>
required=True
string='Author'
args: 'res.users'
create(self, vals)
default_get(self, fields)
unlink(self)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
create_date
Datetime
readonly=True
args: 'Create Date'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
digits=(16, 2)
group_operator='avg'
readonly=True
string='Days to Deadline'
name
Char
readonly=True
string='Task'
nbr
Integer
readonly=True
args: '# of Tasks'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
rating_last_value
Float
group_operator='avg'
groups='project.group_project_rating'
readonly=True
args: 'Rating Value (/5)'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for Next Stage')]
task_id
Many2one → project.task
readonly=True
string='Tasks'
args: 'project.task'
user_ids
Many2many → res.users
column1='task_id'
column2='user_id'
readonly=True
relation='project_task_user_rel'
string='Assignees'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to close the task'
readonly=True
string='Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to open the task'
readonly=True
string='Working Days to Assign'
working_hours_close
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Hours to close the task'
readonly=True
string='Working Hours to Close'
working_hours_open
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Hours to open the task'
readonly=True
string='Working Hours to Assign'
init(self)
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Customer Ratings'
group_project_recurring_tasks
Boolean
implied_group='project.group_project_recurring_tasks'
args: 'Recurring Tasks'
group_project_stages
Boolean
implied_group='project.group_project_stages'
args: 'Project Stages'
group_project_task_dependencies
Boolean
implied_group='project.group_project_task_dependencies'
args: 'Task Dependencies'
group_subtask_project
Boolean
implied_group='project.group_subtask_project'
args: 'Sub-tasks'
module_hr_timesheet
Boolean
string='Task Logs'
module_project_forecast
Boolean
string='Planning'
set_values(self)
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | div | Inherits analytic.view_account_analytic_account_form |
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_frontend |
Rating Project Assets | ir.ui.view | qweb | Inherits web.assets_frontend |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Show Projects / Tasks | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
project_delete_wizard_form |
Delete Project | project.delete.wizard | form | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | tree | New |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_activity |
project.task.tree.activity | project.task | tree | New |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
rating_rating_view_form_project |
rating.rating.form.project | rating.rating | field | Inherits rating.rating_rating_view_form |
rating_rating_view_graph |
rating.rating.view.graph.project | rating.rating | xpath | Inherits rating.rating_rating_view_graph |
rating_rating_view_pivot |
rating.rating.view.pivot.project | rating.rating | xpath | Inherits rating.rating_rating_view_pivot |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
rating_rating_view_tree_project |
rating.rating.tree.project | rating.rating | field | Inherits rating.rating_rating_view_tree |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_type_delete_confirmation_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_delete_wizard |
project.task.type.delete.wizard.form | project.task.type.delete.wizard | form | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
project_count
Integer
compute='_compute_project_count'
args: 'Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
action_view_projects(self)
unlink(self)
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
No public methods.
project_ids
Many2many → project.project
string='Projects'
args: 'project.project'
projects_archived
Boolean
compute='_compute_projects_archived'
task_count
Integer
compute='_compute_task_count'
action_archive(self)
confirm_delete(self)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_enabled
Boolean
compute='_compute_alias_enabled'
readonly=False
string='Use email alias'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
allow_recurring_tasks
Boolean
default=<expr>
args: 'Recurring Tasks'
allow_subtasks
Boolean
default=<expr>
args: 'Sub-tasks'
allowed_internal_user_ids
Many2many → res.users
default=<expr>
domain=[('share', '=', False)]
string='Allowed Internal Users'
args: 'res.users', 'project_allowed_internal_users_rel'
allowed_portal_user_ids
Many2many → res.users
domain=[('share', '=', True)]
string='Allowed Portal Users'
args: 'res.users', 'project_allowed_portal_users_rel'
allowed_user_ids
Many2many → res.users
compute='_compute_allowed_users'
inverse='_inverse_allowed_user'
args: 'res.users'
analytic_account_id
Many2one → account.analytic.account
check_company=True
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Analytic account to which this project is linked for financial management. Use an analytic account to record cost and revenue on your project.'
ondelete='set null'
string='Analytic Account'
args: 'account.analytic.account'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
string='Currency'
args: 'res.currency'
date
Date
index=True
string='Expiration Date'
tracking=True
date_start
Date
string='Start Date'
description
Html
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
help='Whether this project should be displayed on your dashboard.'
inverse='_inverse_is_favorite'
string='Show Project on dashboard'
label_tasks
Char
default='Tasks'
help='Label used for the tasks of the project.'
string='Use Tasks as'
translate=True
name
Char
index=True
required=True
tracking=True
args: 'Name'
partner_email
Char
compute='_compute_partner_email'
copy=False
inverse='_inverse_partner_email'
readonly=False
store=True
string='Email'
partner_id
Many2one → res.partner
auto_join=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
string='Customer'
tracking=True
args: 'res.partner'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Phone'
privacy_visibility
Selection
default='portal'
help='People to whom this project and its tasks will be visible.\n\n- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n\n- All internal users: all internal users can access the project and all of its tasks without distinction.\n\n- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\nWhen following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.'
required=True
string='Visibility'
args: [('followers', 'Invited internal users'), ('employees', 'All internal users'), ('portal', 'Invited portal users and all internal users')]
rating_active
Boolean
default=<expr>
args: 'Customer Ratings'
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
store=True
rating_status
Selection
default='stage'
help="How to get customer feedback?\n- Rating when changing stage: an email will be sent when a task is pulled in another stage.\n- Periodical Rating: email will be sent periodically.\n\nDon't forget to set up the mail templates on the stages for which you want to get the customer's feedbacks."
required=True
args: [('stage', 'Rating when changing stage'), ('periodic', 'Periodical Rating')], 'Customer Ratings Status'
rating_status_period
Selection
default='monthly'
required=True
args: [('daily', 'Daily'), ('weekly', 'Weekly'), ('bimonthly', 'Twice a Month'), ('monthly', 'Once a Month'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')], 'Rating Frequency'
resource_calendar_id
Many2one → resource.calendar
related='company_id.resource_calendar_id'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of Projects.'
subtask_project_id
Many2one → project.project
help='Project in which sub-tasks of the current project will be created. It can be the current project itself.'
ondelete='restrict'
string='Sub-task Project'
args: 'project.project'
task_count
Integer
compute='_compute_task_count'
string='Task Count'
task_ids
One2many → project.task
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
tracking=True
args: 'res.users'
action_unlink(self)
action_view_account_analytic_line(self)
action_view_all_rating(self)
action_view_tasks(self)
attachment_tree_view(self)
copy(self, default=None)
create(self, vals)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
message_unsubscribe(self, partner_ids=None, channel_ids=None)
toggle_favorite(self)
unlink(self)
write(self, vals)
color
Integer
default=_get_default_color
string='Color'
name
Char
required=True
args: 'Name'
No public methods.
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
allow_recurring_tasks
Boolean
related='project_id.allow_recurring_tasks'
allow_subtasks
Boolean
readonly=True
related='project_id.allow_subtasks'
string='Allow Sub-tasks'
allowed_user_ids
Many2many → res.users
compute='_compute_allowed_user_ids'
copy=False
groups='project.group_project_manager'
readonly=False
store=True
string='Visible to'
args: 'res.users'
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachment that don't come from message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
context={'active_test': False}
string='Sub-tasks'
args: 'project.task', 'parent_id'
color
Integer
string='Color Index'
commercial_partner_id
Many2one
related='partner_id.commercial_partner_id'
company_id
Many2one → res.company
compute='_compute_company_id'
copy=True
default=_default_company_id
readonly=False
required=True
store=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
date_assign
Datetime
copy=False
index=True
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
tracking=True
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
index=True
readonly=True
string='Last Stage Update'
description
Html
string='Description'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_from
Char
compute='_compute_email_from'
copy=False
help='These people will receive email.'
index=True
readonly=False
store='True'
string='Email From'
fri
Boolean
compute='_compute_repeat'
readonly=False
string='Fri'
is_closed
Boolean
readonly=True
related='stage_id.is_closed'
related_sudo=False
string='Closing Stage'
kanban_state
Selection
copy=False
default='normal'
required=True
string='Kanban State'
args: [('normal', 'In Progress'), ('done', 'Ready'), ('blocked', 'Blocked')]
kanban_state_label
Char
compute='_compute_kanban_state_label'
string='Kanban State Label'
tracking=True
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
related_sudo=False
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
related_sudo=False
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
related_sudo=False
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
string='Project Manager'
args: 'res.users'
mon
Boolean
compute='_compute_repeat'
readonly=False
string='Mon'
name
Char
index=True
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
index=True
string='Parent Task'
args: 'project.task'
partner_city
Char
readonly=False
related='partner_id.city'
partner_email
Char
compute='_compute_partner_email'
copy=False
inverse='_inverse_partner_email'
readonly=False
store=True
string='Email'
partner_id
Many2one → res.partner
compute='_compute_partner_id'
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
readonly=False
store=True
string='Customer'
args: 'res.partner'
partner_is_company
Boolean
readonly=True
related='partner_id.is_company'
partner_phone
Char
compute='_compute_partner_phone'
copy=False
inverse='_inverse_partner_phone'
readonly=False
store=True
string='Phone'
planned_hours
Float
help='Time planned to achieve this task (including its sub-tasks).'
tracking=True
args: 'Initially Planned Hours'
priority
Selection
default='0'
index=True
string='Priority'
args: [('0', 'Normal'), ('1', 'Important')]
project_id
Many2one → project.project
change_default=True
check_company=True
compute='_compute_project_id'
index=True
readonly=False
store=True
string='Project'
tracking=True
args: 'project.project'
project_privacy_visibility
Selection
related='project_id.privacy_visibility'
string='Project Visibility'
recurrence_id
Many2one → project.task.recurrence
copy=False
args: 'project.task.recurrence'
recurrence_message
Char
compute='_compute_recurrence_message'
string='Next Recurrencies'
recurrence_update
Selection
default='this'
store=False
args: [('this', 'This task'), ('subsequent', 'This and following tasks'), ('all', 'All tasks')]
recurring_count
Integer
compute='_compute_recurring_count'
string='Tasks in Recurrence'
recurring_task
Boolean
string='Recurrent'
repeat_day
Selection
compute='_compute_repeat'
readonly=False
args: <expr>
repeat_interval
Integer
compute='_compute_repeat'
default=1
readonly=False
string='Repeat Every'
repeat_month
Selection
compute='_compute_repeat'
readonly=False
args: [('january', 'January'), ('february', 'February'), ('march', 'March'), ('april', 'April'), ('may', 'May'), ('june', 'June'), ('july', 'July'), ('august', 'August'), ('september', 'September'), ('october', 'October'), ('november', 'November'), ('december', 'December')]
repeat_number
Integer
compute='_compute_repeat'
default=1
readonly=False
string='Repetitions'
repeat_on_month
Selection
compute='_compute_repeat'
default='date'
readonly=False
args: [('date', 'Date of the Month'), ('day', 'Day of the Month')]
repeat_on_year
Selection
compute='_compute_repeat'
default='date'
readonly=False
args: [('date', 'Date of the Year'), ('day', 'Day of the Year')]
repeat_show_day
Boolean
compute='_compute_repeat_visibility'
repeat_show_dow
Boolean
compute='_compute_repeat_visibility'
repeat_show_month
Boolean
compute='_compute_repeat_visibility'
repeat_show_week
Boolean
compute='_compute_repeat_visibility'
repeat_type
Selection
compute='_compute_repeat'
default='forever'
readonly=False
string='Until'
args: [('forever', 'Forever'), ('until', 'End Date'), ('after', 'Number of Repetitions')]
repeat_unit
Selection
compute='_compute_repeat'
default='week'
readonly=False
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
compute='_compute_repeat'
readonly=False
string='End Date'
repeat_week
Selection
compute='_compute_repeat'
default='first'
readonly=False
args: [('first', 'First'), ('second', 'Second'), ('third', 'Third'), ('last', 'Last')]
repeat_weekday
Selection
compute='_compute_repeat'
readonly=False
string='Day Of The Week'
args: [('mon', 'Monday'), ('tue', 'Tuesday'), ('wed', 'Wednesday'), ('thu', 'Thursday'), ('fri', 'Friday'), ('sat', 'Saturday'), ('sun', 'Sunday')]
ribbon_message
Char
compute='_compute_ribbon_message'
args: 'Ribbon message'
sat
Boolean
compute='_compute_repeat'
readonly=False
string='Sat'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of tasks.'
index=True
string='Sequence'
stage_id
Many2one → project.task.type
compute='_compute_stage_id'
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
readonly=False
store=True
string='Stage'
tracking=True
args: 'project.task.type'
subtask_count
Integer
compute='_compute_subtask_count'
args: 'Sub-task count'
subtask_planned_hours
Float
compute='_compute_subtask_planned_hours'
help='Sum of the time planned of all the sub-tasks linked to this task. Usually less or equal to the initially time planned of this task.'
args: 'Sub-tasks Planned Hours'
subtask_project_id
Many2one → project.project
readonly=True
related='project_id.subtask_project_id'
string='Sub-task Project'
args: 'project.project'
sun
Boolean
compute='_compute_repeat'
readonly=False
string='Sun'
tag_ids
Many2many → project.tags
string='Tags'
args: 'project.tags'
thu
Boolean
compute='_compute_repeat'
readonly=False
string='Thu'
tue
Boolean
compute='_compute_repeat'
readonly=False
string='Tue'
user_email
Char
readonly=True
related='user_id.email'
related_sudo=False
string='User Email'
user_id
Many2one → res.users
default=<expr>
index=True
string='Assigned to'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
wed
Boolean
compute='_compute_repeat'
readonly=False
string='Wed'
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to assign'
working_hours_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to close'
working_hours_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to assign'
write_date
Datetime
index=True
readonly=True
args: 'Last Updated On'
action_assign_to_me(self)
action_open_parent_task(self)
action_recurring_tasks(self)
action_subtask(self)
copy(self, default=None)
create(self, vals_list)
default_get(self, default_fields)
email_split(self, msg)
get_empty_list_help(self, help)
message_new(self, msg, custom_values=None)
message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
message_update(self, msg, update_vals=None)
rating_apply(self, rate, token=None, feedback=None, subtype_xmlid=None)
rating_get_partner_id(self)
stage_find(self, section_id, domain=[], order='sequence')
unlink(self)
update_date_end(self, stage_id)
write(self, vals)
fri
Boolean
string='Fri'
mon
Boolean
string='Mon'
next_recurrence_date
Date
recurrence_left
Integer
string='Number of tasks left to create'
repeat_day
Selection
repeat_interval
Integer
default=1
string='Repeat Every'
repeat_month
Selection
repeat_number
Integer
string='Repetitions'
repeat_on_month
Selection
repeat_on_year
Selection
repeat_type
Selection
default='forever'
string='Until'
args: [('forever', 'Forever'), ('until', 'End Date'), ('after', 'Number of Repetitions')]
repeat_unit
Selection
default='week'
args: [('day', 'Days'), ('week', 'Weeks'), ('month', 'Months'), ('year', 'Years')]
repeat_until
Date
string='End Date'
repeat_week
Selection
repeat_weekday
Selection
readonly=False
string='Day Of The Week'
args: [('mon', 'Monday'), ('tue', 'Tuesday'), ('wed', 'Wednesday'), ('thu', 'Thursday'), ('fri', 'Friday'), ('sat', 'Saturday'), ('sun', 'Sunday')]
sat
Boolean
string='Sat'
sun
Boolean
string='Sun'
task_ids
One2many → project.task
thu
Boolean
string='Thu'
tue
Boolean
string='Tue'
wed
Boolean
string='Wed'
create(self, vals)
write(self, vals)
No new fields.
Public methods (0)No public methods.
active
Boolean
default=True
args: 'Active'
auto_validation_kanban_state
Boolean
default=False
help="Automatically modify the kanban state when the customer replies to the feedback for this stage.\n * A good feedback from the customer will update the kanban state to 'ready for the new stage' (green bullet).\n * A medium or a bad feedback will set the kanban state to 'blocked' (red bullet).\n"
args: 'Automatic kanban status'
description
Text
translate=True
disabled_rating_warning
Text
compute='_compute_disabled_rating_warning'
fold
Boolean
help='This stage is folded in the kanban view when there are no records in that stage to display.'
string='Folded in Kanban'
is_closed
Boolean
help='Tasks in this stage are considered as closed.'
args: 'Closing Stage'
legend_blocked
Char
default=<expr>
help='Override the default value displayed for the blocked state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Red Kanban Label'
legend_done
Char
default=<expr>
help='Override the default value displayed for the done state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Green Kanban Label'
legend_normal
Char
default=<expr>
help='Override the default value displayed for the normal state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Grey Kanban Label'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set an email will be sent to the customer when the task or issue reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Stage Name'
translate=True
project_ids
Many2many → project.project
default=_get_default_project_ids
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set and if the project's rating configuration is 'Rating when changing stage', then an email will be sent to the customer when the task reaches this step."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
unlink_wizard(self, stage_view=False)
write(self, vals)
project_ids
Many2many → project.project
domain="['|', ('active', '=', False), ('active', '=', True)]"
ondelete='cascade'
string='Projects'
args: 'project.project'
stage_ids
Many2many → project.task.type
ondelete='cascade'
string='Stages To Delete'
args: 'project.task.type'
stages_active
Boolean
compute='_compute_stages_active'
tasks_count
Integer
compute='_compute_tasks_count'
args: 'Number of tasks'
action_archive(self)
action_confirm(self)
action_unlink(self)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date_assign
Datetime
readonly=True
string='Assignment Date'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
digits=(16, 2)
readonly=True
string='# Days to Deadline'
name
Char
readonly=True
string='Task Title'
nbr
Integer
readonly=True
args: '# of Tasks'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')]
user_id
Many2one → res.users
readonly=True
string='Assigned To'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to close the task'
readonly=True
string='# Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to Open the task'
readonly=True
string='# Working Days to Assign'
init(self)
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Customer Ratings'
group_project_recurring_tasks
Boolean
implied_group='project.group_project_recurring_tasks'
args: 'Recurring Tasks'
group_subtask_project
Boolean
implied_group='project.group_subtask_project'
args: 'Sub-tasks'
module_hr_timesheet
Boolean
string='Task Logs'
module_project_forecast
Boolean
string='Planning'
set_values(self)
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
account_analytic_account_view_form_inherit |
account.analytic.account.form.inherit | account.analytic.account | div | Inherits analytic.view_account_analytic_account_form |
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_frontend |
Rating Project Assets | ir.ui.view | qweb | Inherits web.assets_frontend |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Portal My Home: project entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_project_rating_partner_stat |
portal_project_rating_partner_stat | ir.ui.view | qweb | New |
portal_project_rating_popover |
portal_project_rating_popover | ir.ui.view | qweb | New |
portal_project_rating_progressbar |
portal_project_rating_progressbar | ir.ui.view | qweb | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_project_view_form_simplified_footer |
project.project.view.form.simplified | project.project | xpath | Inherits project.project_project_view_form_simplified |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_tags_tree_view |
Tags | project.tags | tree | New |
project_task_view_activity |
project.task.activity | project.task | activity | New |
project_task_view_tree_activity |
project.task.tree.activity | project.task | tree | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
rating_index |
Project Rating List | ir.ui.view | qweb | New |
rating_project_rating_page |
Project Rating Page | ir.ui.view | qweb | New |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
project_count
Integer
compute='_compute_project_count'
args: 'Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
action_view_projects(self)
unlink(self)
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
compute_kpis_actions(self, company, user)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
analytic_account_id
Many2one → account.analytic.account
check_company=True
copy=False
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Analytic account to which this project is linked for financial management. Use an analytic account to record cost and revenue on your project.'
ondelete='set null'
string='Analytic Account'
args: 'account.analytic.account'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
string='Currency'
args: 'res.currency'
date
Date
index=True
string='Expiration Date'
tracking=True
date_start
Date
string='Start Date'
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
help='Whether this project should be displayed on your dashboard.'
inverse='_inverse_is_favorite'
string='Show Project on dashboard'
label_tasks
Char
default='Tasks'
help='Label used for the tasks of the project.'
string='Use Tasks as'
translate=True
name
Char
index=True
required=True
tracking=True
args: 'Name'
partner_id
Many2one → res.partner
auto_join=True
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
string='Customer'
tracking=True
args: 'res.partner'
portal_show_rating
Boolean
copy=False
args: 'Rating visible publicly'
privacy_visibility
Selection
default='portal'
help='People to whom this project and its tasks will be visible.\n\n- Invited internal users: when following a project, internal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n A user with the project > administrator access right level can still access this project and its tasks, even if they are not explicitly part of the followers.\n\n- All internal users: all internal users can access the project and all of its tasks without distinction.\n\n- Invited portal users and all internal users: all internal users can access the project and all of its tasks without distinction.\nWhen following a project, portal users will get access to all of its tasks without distinction. Otherwise, they will only get access to the specific tasks they are following.\n\nIn any case, an internal user with no project access rights can still access a task, provided that they are given the corresponding URL (and that they are part of the followers if the project is private).'
required=True
string='Visibility'
args: [('followers', 'Invited internal users'), ('employees', 'All internal users'), ('portal', 'Invited portal users and all internal users')]
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
store=True
rating_status
Selection
default='no'
help="How to get customer feedback?\n- Rating when changing stage: an email will be sent when a task is pulled in another stage.\n- Periodical Rating: email will be sent periodically.\n\nDon't forget to set up the mail templates on the stages for which you want to get the customer's feedbacks."
required=True
args: [('stage', 'Rating when changing stage'), ('periodic', 'Periodical Rating'), ('no', 'No rating')], 'Customer(s) Ratings'
rating_status_period
Selection
resource_calendar_id
Many2one → resource.calendar
default=<expr>
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
help='Timetable working hours to adjust the gantt diagram report'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of Projects.'
subtask_project_id
Many2one → project.project
help='Project in which sub-tasks of the current project will be created. It can be the current project itself.'
ondelete='restrict'
string='Sub-task Project'
args: 'project.project'
task_count
Integer
compute='_compute_task_count'
string='Task Count'
task_ids
One2many → project.task
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
tracking=True
args: 'res.users'
action_view_account_analytic_line(self)
action_view_all_rating(self)
activate_sample_project(self)
attachment_tree_view(self)
copy(self, default=None)
create(self, vals)
get_alias_model_name(self, vals)
get_alias_values(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
message_unsubscribe(self, partner_ids=None, channel_ids=None)
open_tasks(self)
toggle_favorite(self)
unlink(self)
write(self, vals)
color
Integer
string='Color Index'
name
Char
required=True
args: 'Tag Name'
No public methods.
active
Boolean
default=True
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachment that don't come from message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
context={'active_test': False}
string='Sub-tasks'
args: 'project.task', 'parent_id'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=_default_company_id
required=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
date_assign
Datetime
copy=False
index=True
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
tracking=True
date_deadline_formatted
Char
compute='_compute_date_deadline_formatted'
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
index=True
readonly=True
string='Last Stage Update'
description
Html
string='Description'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_from
Char
help='These people will receive email.'
index=True
string='Email'
kanban_state
Selection
copy=False
default='normal'
required=True
string='Kanban State'
args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
kanban_state_label
Char
compute='_compute_kanban_state_label'
string='Kanban State Label'
tracking=True
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
related_sudo=False
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
related_sudo=False
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
related_sudo=False
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
related_sudo=False
string='Project Manager'
args: 'res.users'
name
Char
index=True
required=True
string='Title'
tracking=True
parent_id
Many2one → project.task
index=True
string='Parent Task'
args: 'project.task'
partner_city
Char
readonly=False
related='partner_id.city'
partner_id
Many2one → res.partner
default=<expr>
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]"
string='Customer'
args: 'res.partner'
planned_hours
Float
help='It is the time planned to achieve the task. If this document has sub-tasks, it means the time needed to achieve this tasks and its childs.'
tracking=True
args: 'Planned Hours'
priority
Selection
default='0'
index=True
string='Priority'
args: [('0', 'Normal'), ('1', 'Important')]
project_id
Many2one → project.project
change_default=True
check_company=True
default=<expr>
index=True
string='Project'
tracking=True
args: 'project.project'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of tasks.'
index=True
string='Sequence'
stage_id
Many2one → project.task.type
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
string='Stage'
tracking=True
args: 'project.task.type'
subtask_count
Integer
compute='_compute_subtask_count'
args: 'Sub-task count'
subtask_planned_hours
Float
compute='_compute_subtask_planned_hours'
help='Computed using sum of hours planned of all subtasks created from main task. Usually these hours are less or equal to the Planned Hours (of main task).'
args: 'Subtasks'
subtask_project_id
Many2one → project.project
readonly=True
related='project_id.subtask_project_id'
string='Sub-task Project'
args: 'project.project'
tag_ids
Many2many → project.tags
string='Tags'
args: 'project.tags'
user_email
Char
readonly=True
related='user_id.email'
related_sudo=False
string='User Email'
user_id
Many2one → res.users
default=<expr>
index=True
string='Assigned to'
tracking=True
args: 'res.users'
website_message_ids
One2many
domain=<expr>
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to assign'
working_hours_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to close'
working_hours_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to assign'
write_date
Datetime
index=True
readonly=True
args: 'Last Updated On'
action_assign_to_me(self)
action_open_parent_task(self)
action_subtask(self)
copy(self, default=None)
create(self, vals)
default_get(self, fields_list)
email_split(self, msg)
get_empty_list_help(self, help)
message_new(self, msg, custom_values=None)
message_update(self, msg, update_vals=None)
rating_apply(self, rate, token=None, feedback=None, subtype=None)
rating_get_partner_id(self)
stage_find(self, section_id, domain=[], order='sequence')
update_date_end(self, stage_id)
write(self, vals)
auto_validation_kanban_state
Boolean
default=False
help="Automatically modify the kanban state when the customer replies to the feedback for this stage.\n * A good feedback from the customer will update the kanban state to 'ready for the new stage' (green bullet).\n * A medium or a bad feedback will set the kanban state to 'blocked' (red bullet).\n"
args: 'Automatic kanban status'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no records in that stage to display.'
string='Folded in Kanban'
legend_blocked
Char
default=<expr>
help='Override the default value displayed for the blocked state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Red Kanban Label'
legend_done
Char
default=<expr>
help='Override the default value displayed for the done state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Green Kanban Label'
legend_normal
Char
default=<expr>
help='Override the default value displayed for the normal state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Grey Kanban Label'
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set an email will be sent to the customer when the task or issue reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Stage Name'
translate=True
project_ids
Many2many → project.project
default=_get_default_project_ids
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set and if the project's rating configuration is 'Rating when changing stage', then an email will be sent to the customer when the task reaches this step."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
unlink(self)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date_assign
Datetime
readonly=True
string='Assignation Date'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
delay_endings_days
Float
digits=(16, 2)
readonly=True
string='# Days to Deadline'
name
Char
readonly=True
string='Task Title'
nbr
Integer
readonly=True
args: '# of Tasks'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
priority
Selection
readonly=True
string='Priority'
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')]
user_id
Many2one → res.users
readonly=True
string='Assigned To'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to close the task'
readonly=True
string='# Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to Open the task'
readonly=True
string='# Working Days to Assign'
init(self)
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Use Rating on Project'
group_subtask_project
Boolean
implied_group='project.group_subtask_project'
args: 'Sub-tasks'
module_hr_timesheet
Boolean
string='Task Logs'
module_project_forecast
Boolean
string='Forecasts'
No public methods.
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
assets_frontend |
Rating Project Assets | ir.ui.view | qweb | Inherits web.assets_frontend |
digest_digest_view_form |
digest.digest.view.form.inherit.project.task | digest.digest | xpath | Inherits digest.digest_digest_view_form |
edit_project |
project.project.form | project.project | form | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_breadcrumbs |
portal_my_home |
Portal My Home: project entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
portal_project_rating_partner_stat |
portal_project_rating_partner_stat | ir.ui.view | qweb | New |
portal_project_rating_popover |
portal_project_rating_popover | ir.ui.view | qweb | New |
portal_project_rating_progressbar |
portal_project_rating_progressbar | ir.ui.view | qweb | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_task_view_tree_activity |
project.task.tree.activity | project.task | tree | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
quick_create_task_form |
project.task.form.quick_create | project.task | form | New |
qunit_suite |
project_test | ir.ui.view | qweb | Inherits web.qunit_suite |
rating_index |
Project Rating List | ir.ui.view | qweb | New |
rating_project_rating_page |
Project Rating Page | ir.ui.view | qweb | New |
rating_rating_view_search_project |
rating.rating.search.project | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | button | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
kpi_project_task_opened
Boolean
kpi_project_task_opened_value
Integer
compute='_compute_project_task_opened_value'
compute_kpis_actions(self, company, user)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
currency_id
Many2one → res.currency
readonly=True
related='company_id.currency_id'
string='Currency'
args: 'res.currency'
date
Date
index=True
string='Expiration Date'
track_visibility='onchange'
date_start
Date
string='Start Date'
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
help='Whether this project should be displayed on the dashboard or not'
inverse='_inverse_is_favorite'
string='Show Project on dashboard'
label_tasks
Char
default=<expr>
help="Gives label to tasks on project's kanban view."
string='Use Tasks as'
translate=True
name
Char
index=True
required=True
track_visibility='onchange'
args: 'Name'
partner_id
Many2one → res.partner
auto_join=True
string='Customer'
track_visibility='onchange'
args: 'res.partner'
percentage_satisfaction_project
Integer
compute='_compute_percentage_satisfaction_project'
default=-1
store=True
string='Happy % on Project'
percentage_satisfaction_task
Integer
compute='_compute_percentage_satisfaction_task'
default=-1
store=True
string='Happy % on Task'
portal_show_rating
Boolean
copy=False
oldname='website_published'
args: 'Rating visible publicly'
privacy_visibility
Selection
default='portal'
help='Holds visibility of the tasks or issues that belong to the current project:\n- On invitation only: Employees may only see the followed project, tasks or issues\n- Visible by all employees: Employees may see all project, tasks or issues\n- Visible by following customers: employees see everything;\n if website is activated, portal users may see project, tasks or issues followed by\n them or by someone of their company\n'
required=True
string='Privacy'
args: [('followers', 'On invitation only'), ('employees', 'Visible by all employees'), ('portal', 'Visible by following customers')]
rating_request_deadline
Datetime
compute='_compute_rating_request_deadline'
store=True
rating_status
Selection
default='no'
help="How to get the customer's feedbacks?\n- Rating when changing stage: Email will be sent when a task/issue is pulled in another stage\n- Periodical Rating: Email will be sent periodically\n\nDon't forget to set up the mail templates on the stages for which you want to get the customer's feedbacks."
required=True
args: [('stage', 'Rating when changing stage'), ('periodic', 'Periodical Rating'), ('no', 'No rating')], 'Customer(s) Ratings'
rating_status_period
Selection
resource_calendar_id
Many2one → resource.calendar
default=<expr>
help='Timetable working hours to adjust the gantt diagram report'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of Projects.'
subtask_project_id
Many2one → project.project
help='Choosing a sub-tasks project will both enable sub-tasks and set their default project (possibly the project itself)'
ondelete='restrict'
string='Sub-task Project'
args: 'project.project'
task_count
Integer
compute='_compute_task_count'
string='Task Count'
task_ids
One2many → project.task
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
track_visibility='onchange'
args: 'res.users'
action_view_all_rating(self)
activate_sample_project(self)
attachment_tree_view(self)
copy(self, default=None)
create(self, vals)
get_alias_model_name(self, vals)
get_alias_values(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None)
message_unsubscribe(self, partner_ids=None, channel_ids=None)
open_tasks(self)
toggle_favorite(self)
unlink(self)
write(self, vals)
color
Integer
string='Color Index'
name
Char
required=True
No public methods.
active
Boolean
default=True
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachment that don't come from message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
context={'active_test': False}
string='Sub-tasks'
args: 'project.task', 'parent_id'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=_default_company_id
required=True
string='Company'
args: 'res.company'
create_date
Datetime
index=True
readonly=True
args: 'Created On'
date_assign
Datetime
copy=False
index=True
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
track_visibility='onchange'
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
index=True
readonly=True
string='Last Stage Update'
date_start
Datetime
copy=False
default=fields.Datetime.now
index=True
string='Starting Date'
description
Html
string='Description'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_cc
Char
help='These email addresses will be added to the CC field of all inbound\n and outbound emails for this record before being sent. Separate multiple email addresses with a comma'
string='Watchers Emails'
email_from
Char
help='These people will receive email.'
index=True
string='Email'
kanban_state
Selection
copy=False
default='normal'
required=True
string='Kanban State'
args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
kanban_state_label
Char
compute='_compute_kanban_state_label'
string='Kanban State Label'
track_visibility='onchange'
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
related_sudo=False
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
related_sudo=False
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
related_sudo=False
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
related_sudo=False
string='Project Manager'
args: 'res.users'
name
Char
index=True
required=True
string='Title'
track_visibility='always'
notes
Text
string='Notes'
parent_id
Many2one → project.task
index=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
default=<expr>
string='Customer'
args: 'res.partner'
planned_hours
Float
help='It is the time planned to achieve the task. If this document has sub-tasks, it means the time needed to achieve this tasks and its childs.'
track_visibility='onchange'
args: 'Planned Hours'
priority
Selection
default='0'
index=True
string='Priority'
args: [('0', 'Low'), ('1', 'Normal')]
project_id
Many2one → project.project
change_default=True
default=<expr>
index=True
string='Project'
track_visibility='onchange'
args: 'project.project'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of tasks.'
index=True
string='Sequence'
stage_id
Many2one → project.task.type
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
ondelete='restrict'
string='Stage'
track_visibility='onchange'
args: 'project.task.type'
subtask_count
Integer
compute='_compute_subtask_count'
args: 'Sub-task count'
subtask_planned_hours
Float
compute='_compute_subtask_planned_hours'
help='Computed using sum of hours planned of all subtasks created from main task. Usually these hours are less or equal to the Planned Hours (of main task).'
args: 'Subtasks'
subtask_project_id
Many2one → project.project
readonly=True
related='project_id.subtask_project_id'
string='Sub-task Project'
args: 'project.project'
tag_ids
Many2many → project.tags
oldname='categ_ids'
string='Tags'
args: 'project.tags'
user_email
Char
readonly=True
related='user_id.email'
related_sudo=False
string='User Email'
user_id
Many2one → res.users
default=<expr>
index=True
string='Assigned to'
track_visibility='always'
args: 'res.users'
website_message_ids
One2many
domain=<expr>
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to assign'
working_hours_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to close'
working_hours_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to assign'
write_date
Datetime
index=True
readonly=True
args: 'Last Updated On'
action_assign_to_me(self)
action_open_parent_task(self)
action_subtask(self)
copy(self, default=None)
create(self, vals)
default_get(self, fields_list)
email_split(self, msg)
get_empty_list_help(self, help)
message_get_suggested_recipients(self)
message_new(self, msg, custom_values=None)
message_update(self, msg, update_vals=None)
rating_apply(self, rate, token=None, feedback=None, subtype=None)
rating_get_parent(self)
rating_get_partner_id(self)
stage_find(self, section_id, domain=[], order='sequence')
update_date_end(self, stage_id)
write(self, vals)
auto_validation_kanban_state
Boolean
default=False
help="Automatically modify the kanban state when the customer replies to the feedback for this stage.\n * A good feedback from the customer will update the kanban state to 'ready for the new stage' (green bullet).\n * A medium or a bad feedback will set the kanban state to 'blocked' (red bullet).\n"
args: 'Automatic kanban status'
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no records in that stage to display.'
string='Folded in Kanban'
legend_blocked
Char
default=<expr>
help='Override the default value displayed for the blocked state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Red Kanban Label'
legend_done
Char
default=<expr>
help='Override the default value displayed for the done state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Green Kanban Label'
legend_normal
Char
default=<expr>
help='Override the default value displayed for the normal state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Grey Kanban Label'
legend_priority
Char
help='Explanation text to help users using the star on tasks or issues in this stage.'
string='Starred Explanation'
translate=True
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set an email will be sent to the customer when the task or issue reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Stage Name'
translate=True
project_ids
Many2many → project.project
default=_get_default_project_ids
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
rating_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help="If set and if the project's rating configuration is 'Rating when changing stage', then an email will be sent to the customer when the task reaches this step."
string='Rating Email Template'
args: 'mail.template'
sequence
Integer
default=1
unlink(self)
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
date_start
Datetime
readonly=True
string='Assignation Date'
delay_endings_days
Float
digits=(16, 2)
readonly=True
string='# Days to Deadline'
name
Char
readonly=True
string='Task Title'
nbr
Integer
readonly=True
args: '# of Tasks'
partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
priority
Selection
readonly=True
size=1
string='Priority'
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')]
user_id
Many2one → res.users
readonly=True
string='Assigned To'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to close the task'
readonly=True
string='# Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to Open the task'
readonly=True
string='# Working Days to Assign'
init(self)
group_project_rating
Boolean
implied_group='project.group_project_rating'
args: 'Use Rating on Project'
group_subtask_project
Boolean
implied_group='project.group_subtask_project'
args: 'Sub-tasks'
module_hr_timesheet
Boolean
string='Task Logs'
module_project_forecast
Boolean
string='Forecasts'
No public methods.
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/11.0/project |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Project |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, Richard Mathot, Aaron Bohy, ged-odoo, GitHub, Lucas Perais (lpe), Olivier Colson, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, Toufik Benjaa, jem-odoo, Adrien Dieudonne, Nans Lefebvre, Denis Vermylen, XavierDo, Julien Castiaux |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/project-management |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base_setup - base - web - product - decimal_precision - bus - web_tour - analytic - portal - http_routing - resource - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
analytic_account_inherited_form |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
edit_project |
project.project.form | project.project | form | New |
mail_template_task_merge |
mail_template_task_merge | ir.ui.view | qweb | New |
portal_layout |
Portal layout: project menu entry | ir.ui.view | qweb | Inherits portal.portal_layout |
portal_my_home |
Portal My Home: project entries | ir.ui.view | qweb | Inherits portal.portal_my_home |
portal_my_project |
My Project | ir.ui.view | qweb | New |
portal_my_projects |
My Projects | ir.ui.view | qweb | New |
portal_my_task |
My Task | ir.ui.view | qweb | New |
portal_my_tasks |
My Tasks | ir.ui.view | qweb | New |
project_planner |
project_planner | ir.ui.view | qweb | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
project_task_merge_wizard_form |
project.task.merge.wizard.form | project.task.merge.wizard | form | New |
project_task_view_tree_activity |
project.task.tree.activity | project.task | tree | New |
project_view_kanban |
project.project.kanban | project.project | kanban | New |
qunit_suite |
project_test | ir.ui.view | qweb | Inherits web.qunit_suite |
res_config_settings_view_form |
res.config.settings.view.form.inherit.project | res.config.settings | xpath | Inherits base.res_config_settings_view_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_project_task_type_kanban |
project.task.type.kanban | project.task.type | kanban | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | button | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
company_uom_id
Many2one → product.uom
related='company_id.project_time_mode_id'
string='Company UOM'
args: 'product.uom'
project_count
Integer
compute='_compute_project_count'
string='Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
name_search(self, name, args=None, operator='ilike', limit=100)
projects_action(self)
unlink(self)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
analytic_account_id
Many2one → account.analytic.account
auto_join=True
help='Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.'
ondelete='cascade'
required=True
string='Contract/Analytic'
args: 'account.analytic.account'
color
Integer
string='Color Index'
date
Date
index=True
string='Expiration Date'
track_visibility='onchange'
date_start
Date
string='Start Date'
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
help='Whether this project should be displayed on the dashboard or not'
inverse='_inverse_is_favorite'
string='Show Project on dashboard'
label_tasks
Char
default='Tasks'
help="Gives label to tasks on project's kanban view."
string='Use Tasks as'
privacy_visibility
Selection
default='employees'
help='Holds visibility of the tasks or issues that belong to the current project:\n- On invitation only: Employees may only see the followed project, tasks or issues\n- Visible by all employees: Employees may see all project, tasks or issues\n- Visible by following customers: employees see everything;\n if website is activated, portal users may see project, tasks or issues followed by\n them or by someone of their company\n'
required=True
string='Privacy'
args: [('followers', 'On invitation only'), ('employees', 'Visible by all employees'), ('portal', 'Visible by following customers')]
resource_calendar_id
Many2one → resource.calendar
default=<expr>
help='Timetable working hours to adjust the gantt diagram report'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of Projects.'
subtask_project_id
Many2one → project.project
help='Choosing a sub-tasks project will both enable sub-tasks and set their default project (possibly the project itself)'
ondelete='restrict'
string='Sub-task Project'
args: 'project.project'
task_count
Integer
compute='_compute_task_count'
string='Tasks'
task_ids
One2many → project.task
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
task_needaction_count
Integer
compute='_compute_task_needaction_count'
string='Tasks'
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
track_visibility='onchange'
args: 'res.users'
activate_sample_project(self)
attachment_tree_view(self)
close_dialog(self)
copy(self, default=None)
create(self, vals)
edit_dialog(self)
get_access_action(self, access_uid=None)
get_alias_model_name(self, vals)
get_alias_values(self)
map_tasks(self, new_project_id)
message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, force=True)
message_unsubscribe(self, partner_ids=None, channel_ids=None)
toggle_favorite(self)
unlink(self)
write(self, vals)
color
Integer
default=10
string='Color Index'
name
Char
required=True
No public methods.
active
Boolean
default=True
attachment_ids
One2many → ir.attachment
compute='_compute_attachment_ids'
help="Attachment that don't come from message."
string='Main Attachments'
args: 'ir.attachment'
child_ids
One2many → project.task
context={'active_test': False}
string='Sub-tasks'
args: 'project.task', 'parent_id'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
create_date
Datetime
index=True
date_assign
Datetime
copy=False
index=True
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
default=fields.Datetime.now
index=True
readonly=True
string='Last Stage Update'
date_start
Datetime
copy=False
default=fields.Datetime.now
index=True
string='Starting Date'
description
Html
string='Description'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Cover Image'
args: 'ir.attachment'
email_cc
Char
help='These email addresses will be added to the CC field of all inbound\n and outbound emails for this record before being sent. Separate multiple email addresses with a comma'
string='Watchers Emails'
email_from
Char
help='These people will receive email.'
index=True
string='Email'
kanban_state
Selection
copy=False
default='normal'
help="A task's kanban state indicates special situations affecting it:\n * Grey is the default situation\n * Red indicates something is preventing the progress of this task\n * Green indicates the task is ready to be pulled to the next stage"
required=True
string='Kanban State'
args: [('normal', 'Grey'), ('done', 'Green'), ('blocked', 'Red')]
kanban_state_label
Char
compute='_compute_kanban_state_label'
string='Kanban State'
track_visibility='onchange'
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
related_sudo=False
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
related_sudo=False
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
related_sudo=False
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
related_sudo=False
string='Project Manager'
args: 'res.users'
name
Char
index=True
required=True
string='Task Title'
track_visibility='always'
notes
Text
string='Notes'
parent_id
Many2one → project.task
index=True
string='Parent Task'
args: 'project.task'
partner_id
Many2one → res.partner
default=_get_default_partner
string='Customer'
args: 'res.partner'
planned_hours
Float
help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'
string='Initially Planned Hours'
priority
Selection
default='0'
index=True
string='Priority'
args: [('0', 'Low'), ('1', 'Normal')]
project_id
Many2one → project.project
change_default=True
default=<expr>
index=True
string='Project'
track_visibility='onchange'
args: 'project.project'
remaining_hours
Float
digits=(16, 2)
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
string='Remaining Hours'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of tasks.'
index=True
string='Sequence'
stage_id
Many2one → project.task.type
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'project.task.type'
subtask_count
Integer
compute='_compute_subtask_count'
string='Sub-task count'
type='integer'
subtask_project_id
Many2one → project.project
readonly=True
related='project_id.subtask_project_id'
string='Sub-task Project'
args: 'project.project'
tag_ids
Many2many → project.tags
oldname='categ_ids'
string='Tags'
args: 'project.tags'
user_email
Char
readonly=True
related='user_id.email'
related_sudo=False
string='User Email'
user_id
Many2one → res.users
default=<expr>
index=True
string='Assigned to'
track_visibility='always'
args: 'res.users'
website_message_ids
One2many
domain=<expr>
working_days_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to close'
working_days_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working days to assign'
working_hours_close
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to close'
working_hours_open
Float
compute='_compute_elapsed'
group_operator='avg'
store=True
string='Working hours to assign'
write_date
Datetime
index=True
action_assign_to_me(self)
action_open_parent_task(self)
action_subtask(self)
copy(self, default=None)
create(self, vals)
email_split(self, msg)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
get_access_action(self, access_uid=None)
get_empty_list_help(self, help)
message_get_email_values(self, notif_mail=None)
message_get_reply_to(self, res_ids, default=None)
message_get_suggested_recipients(self)
message_new(self, msg, custom_values=None)
message_update(self, msg, update_vals=None)
stage_find(self, section_id, domain=[], order='sequence')
update_date_end(self, stage_id)
write(self, vals)
create_new_task
Boolean
target_project_id
Many2one → project.project
string='Target Project'
args: 'project.project'
target_task_id
Many2one → project.task
string='Merge into an existing task'
args: 'project.task'
target_task_name
Char
task_ids
Many2many → project.task
required=True
string='Tasks to Merge'
args: 'project.task'
user_id
Many2one → res.users
string='Assigned to'
args: 'res.users'
default_get(self, fields)
merge_description(self)
merge_followers(self)
merge_tasks(self)
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no records in that stage to display.'
string='Folded in Kanban'
legend_blocked
Char
default=<expr>
help='Override the default value displayed for the blocked state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Red Kanban Label'
legend_done
Char
default=<expr>
help='Override the default value displayed for the done state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Green Kanban Label'
legend_normal
Char
default=<expr>
help='Override the default value displayed for the normal state for kanban selection, when the task or issue is in that stage.'
required=True
translate=True
args: 'Grey Kanban Label'
legend_priority
Char
help='Explanation text to help users using the star on tasks or issues in this stage.'
string='Starred Explanation'
translate=True
mail_template_id
Many2one → mail.template
domain=[('model', '=', 'project.task')]
help='If set an email will be sent to the customer when the task or issue reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Stage Name'
translate=True
project_ids
Many2many → project.project
default=_get_default_project_ids
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
sequence
Integer
default=1
No public methods.
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
date_start
Datetime
readonly=True
string='Assignation Date'
delay_endings_days
Float
digits=(16, 2)
readonly=True
string='# Days to Deadline'
name
Char
readonly=True
string='Task Title'
nbr
Integer
readonly=True
args: '# of Tasks'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
priority
Selection
readonly=True
size=1
string='Priority'
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')]
user_id
Many2one → res.users
readonly=True
string='Assigned To'
args: 'res.users'
working_days_close
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to close the task'
readonly=True
string='# Working Days to Close'
working_days_open
Float
digits=(16, 2)
group_operator='avg'
help='Number of Working Days to Open the task'
readonly=True
string='# Working Days to Assign'
init(self)
project_time_mode_id
Many2one → product.uom
default=<expr>
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'product.uom'
No public methods.
group_subtask_project
Boolean
implied_group='project.group_subtask_project'
args: 'Sub-tasks'
module_hr_timesheet
Boolean
module_project_forecast
Boolean
string='Forecasts'
module_rating_project
Boolean
string='Rating on Tasks'
project_time_mode_id
Many2one → product.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
related='company_id.project_time_mode_id'
string='Project Time Unit'
args: 'product.uom'
No public methods.
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/project |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Project |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, qdp-odoo, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Damien Bouvy, Yannick Tivisse, qsm-odoo, Martin Geubelle, Pierre Masereel, Denis Vermylen (dve), Tanguy Charlier, Adrien Dieudonne |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/project-management |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base_setup - base - web_kanban - web - product - decimal_precision - bus - web_tour - report - analytic - resource - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Track multi-level projects, tasks, work done on tasks
=====================================================
This application allows an operational project management system to organize your activities into tasks and plan the work you need to get the tasks completed.
Gantt diagrams will give you a graphical representation of your project plans, as well as resources availability and workload.
Dashboard / Reports for Project Management will include:
--------------------------------------------------------
* My Tasks
* Open Tasks
* Tasks Analysis
* Cumulative Flow
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
analytic_account_inherited_form |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
edit_project |
project.project.form | project.project | form | New |
project_planner |
project_planner | ir.ui.view | qweb | New |
project_project_view_form_simplified |
project.project.view.form.simplified | project.project | form | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_config_settings |
project settings | project.config.settings | form | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
company_uom_id
Many2one → product.uom
related='company_id.project_time_mode_id'
string='Company UOM'
args: 'product.uom'
project_count
Integer
compute='_compute_project_count'
string='Project Count'
project_ids
One2many → project.project
string='Projects'
args: 'project.project', 'analytic_account_id'
use_tasks
Boolean
help='Check this box to manage internal activities through this project'
string='Use Tasks'
create(self, vals)
name_search(self, name, args=None, operator='ilike', limit=100)
project_create(self, vals)
projects_action(self)
unlink(self)
write(self, vals)
company_id
Many2one → res.company
default=<expr>
required=True
string='Company'
args: 'res.company'
generate_project_alias
Selection
help='Odoo will generate an email alias at the project creation from project name.'
string='Project Alias'
args: [(0, 'Do not create an email alias automatically'), (1, 'Automatically generate an email alias at the project creation')]
module_pad
Selection
help='Lets the company customize which Pad installation should be used to link to new pads (for example: http://ietherpad.com/).\n-This installs the module pad.'
string='Pads'
args: [(0, 'Task description is plain text'), (1, 'Collaborative rich text on task description')]
module_project_forecast
Boolean
string='Forecasts, planning and Gantt charts'
module_rating_project
Selection
help='This allows customers to give rating on provided services'
string='Rating on task'
args: [(0, 'No customer rating'), (1, 'Track customer satisfaction on tasks')]
project_time_mode_id
Many2one
related='company_id.project_time_mode_id'
string='Project Time Unit *'
set_default_generate_project_alias(self)
active
Boolean
default=True
help='If the active field is set to False, it will allow you to hide the project without removing it.'
alias_id
Many2one → mail.alias
help='Internal email associated with this project. Incoming emails are automatically synchronized with Tasks (or optionally Issues if the Issue Tracker module is installed).'
ondelete='restrict'
required=True
string='Alias'
args: 'mail.alias'
alias_model
Selection
default='project.task'
help="The kind of document created when an email is received on this project's email alias"
index=True
required=True
string='Alias Model'
args: _alias_models
analytic_account_id
Many2one → account.analytic.account
auto_join=True
help='Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.'
ondelete='cascade'
required=True
string='Contract/Analytic'
args: 'account.analytic.account'
color
Integer
string='Color Index'
date
Date
index=True
string='Expiration Date'
track_visibility='onchange'
date_start
Date
string='Start Date'
doc_count
Integer
compute='_compute_attached_docs_count'
string='Number of documents attached'
favorite_user_ids
Many2many → res.users
default=_get_default_favorite_user_ids
string='Members'
args: 'res.users', 'project_favorite_user_rel', 'project_id', 'user_id'
is_favorite
Boolean
compute='_compute_is_favorite'
help='Whether this project should be displayed on the dashboard or not'
string='Show Project on dashboard'
label_tasks
Char
default='Tasks'
help="Gives label to tasks on project's kanban view."
string='Use Tasks as'
privacy_visibility
Selection
default='employees'
help='Holds visibility of the tasks or issues that belong to the current project:\n- On invitation only: Employees may only see the followed project, tasks or issues\n- Visible by all employees: Employees may see all project, tasks or issues\n- Visible by following customers: employees see everything;\n if website is activated, portal users may see project, tasks or issues followed by\n them or by someone of their company\n'
required=True
string='Privacy'
args: [('followers', _('On invitation only')), ('employees', _('Visible by all employees')), ('portal', _('Visible by following customers'))]
resource_calendar_id
Many2one → resource.calendar
help='Timetable working hours to adjust the gantt diagram report'
string='Working Time'
args: 'resource.calendar'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of Projects.'
task_count
Integer
compute='_compute_task_count'
string='Tasks'
task_ids
One2many → project.task
domain=['|', ('stage_id.fold', '=', False), ('stage_id', '=', False)]
string='Tasks'
args: 'project.task', 'project_id'
task_needaction_count
Integer
compute='_compute_task_needaction_count'
string='Tasks'
tasks
One2many → project.task
string='Task Activities'
args: 'project.task', 'project_id'
type_ids
Many2many → project.task.type
string='Tasks Stages'
args: 'project.task.type', 'project_task_type_rel', 'project_id', 'type_id'
user_id
Many2one → res.users
default=<expr>
string='Project Manager'
args: 'res.users'
activate_sample_project(self)
attachment_tree_view(self)
close_dialog(self)
copy(self, default=None)
create(self, vals)
default_get(self, flds)
get_alias_model_name(self, vals)
get_alias_values(self)
map_tasks(self, new_project_id)
toggle_favorite(self)
unlink(self)
write(self, vals)
color
Integer
string='Color Index'
name
Char
required=True
No public methods.
active
Boolean
default=True
attachment_ids
One2many → ir.attachment
auto_join=True
domain=<expr>
string='Attachments'
args: 'ir.attachment', 'res_id'
color
Integer
string='Color Index'
company_id
Many2one → res.company
default=<expr>
string='Company'
args: 'res.company'
create_date
Datetime
index=True
date_assign
Datetime
copy=False
index=True
readonly=True
string='Assigning Date'
date_deadline
Date
copy=False
index=True
string='Deadline'
date_end
Datetime
copy=False
index=True
string='Ending Date'
date_last_stage_update
Datetime
copy=False
default=fields.Datetime.now
index=True
readonly=True
string='Last Stage Update'
date_start
Datetime
copy=False
default=fields.Datetime.now
index=True
string='Starting Date'
description
Html
string='Description'
displayed_image_id
Many2one → ir.attachment
domain="[('res_model', '=', 'project.task'), ('res_id', '=', id), ('mimetype', 'ilike', 'image')]"
string='Displayed Image'
args: 'ir.attachment'
kanban_state
Selection
copy=False
default='normal'
help="A task's kanban state indicates special situations affecting it:\n * Normal is the default situation\n * Blocked indicates something is preventing the progress of this task\n * Ready for next stage indicates the task is ready to be pulled to the next stage"
required=True
string='Kanban State'
track_visibility='onchange'
args: [('normal', 'In Progress'), ('done', 'Ready for next stage'), ('blocked', 'Blocked')]
legend_blocked
Char
readonly=True
related='stage_id.legend_blocked'
string='Kanban Blocked Explanation'
legend_done
Char
readonly=True
related='stage_id.legend_done'
string='Kanban Valid Explanation'
legend_normal
Char
readonly=True
related='stage_id.legend_normal'
string='Kanban Ongoing Explanation'
manager_id
Many2one → res.users
readonly=True
related='project_id.user_id'
string='Project Manager'
args: 'res.users'
name
Char
index=True
required=True
string='Task Title'
track_visibility='always'
notes
Text
string='Notes'
partner_id
Many2one → res.partner
default=_get_default_partner
string='Customer'
args: 'res.partner'
planned_hours
Float
help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'
string='Initially Planned Hours'
priority
Selection
default='0'
index=True
args: [('0', 'Normal'), ('1', 'High')]
project_id
Many2one → project.project
change_default=True
default=<expr>
index=True
string='Project'
track_visibility='onchange'
args: 'project.project'
remaining_hours
Float
digits=(16, 2)
help='Total remaining time, can be re-estimated periodically by the assignee of the task.'
string='Remaining Hours'
sequence
Integer
default=10
help='Gives the sequence order when displaying a list of tasks.'
index=True
string='Sequence'
stage_id
Many2one → project.task.type
copy=False
default=_get_default_stage_id
domain="[('project_ids', '=', project_id)]"
group_expand='_read_group_stage_ids'
index=True
string='Stage'
track_visibility='onchange'
args: 'project.task.type'
tag_ids
Many2many → project.tags
oldname='categ_ids'
string='Tags'
args: 'project.tags'
user_email
Char
readonly=True
related='user_id.email'
string='User Email'
user_id
Many2one → res.users
default=<expr>
index=True
string='Assigned to'
track_visibility='always'
args: 'res.users'
write_date
Datetime
index=True
copy(self, default=None)
create(self, vals)
default_get(self, field_list)
email_split(self, msg)
fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False)
get_empty_list_help(self, help)
message_get_email_values(self, notif_mail=None)
message_get_reply_to(self, res_ids, default=None)
message_get_suggested_recipients(self)
message_new(self, msg, custom_values=None)
message_update(self, msg, update_vals=None)
stage_find(self, section_id, domain=[], order='sequence')
write(self, vals)
description
Text
translate=True
fold
Boolean
help='This stage is folded in the kanban view when there are no records in that stage to display.'
string='Folded in Kanban'
legend_blocked
Char
help='Override the default value displayed for the blocked state for kanban selection, when the task or issue is in that stage.'
string='Kanban Blocked Explanation'
translate=True
legend_done
Char
help='Override the default value displayed for the done state for kanban selection, when the task or issue is in that stage.'
string='Kanban Valid Explanation'
translate=True
legend_normal
Char
help='Override the default value displayed for the normal state for kanban selection, when the task or issue is in that stage.'
string='Kanban Ongoing Explanation'
translate=True
legend_priority
Char
help='Explanation text to help users using the star and priority mechanism on stages or issues that are in this stage.'
string='Priority Management Explanation'
translate=True
mail_template_id
Many2one → mail.template
domain=<expr>
help='If set an email will be sent to the customer when the task or issue reaches this step.'
string='Email Template'
args: 'mail.template'
name
Char
required=True
string='Stage Name'
translate=True
project_ids
Many2many → project.project
default=_get_default_project_ids
string='Projects'
args: 'project.project', 'project_task_type_rel', 'type_id', 'project_id'
sequence
Integer
default=1
No public methods.
closing_days
Float
digits=(16, 2)
group_operator='avg'
help='Number of Days to close the task'
readonly=True
string='# Days to Close'
company_id
Many2one → res.company
readonly=True
string='Company'
args: 'res.company'
date_deadline
Date
readonly=True
string='Deadline'
date_end
Datetime
readonly=True
string='Ending Date'
date_last_stage_update
Datetime
readonly=True
string='Last Stage Update'
date_start
Datetime
readonly=True
string='Assignation Date'
delay_endings_days
Float
digits=(16, 2)
readonly=True
string='# Days to Deadline'
name
Char
readonly=True
string='Task Title'
nbr
Integer
readonly=True
args: '# of Tasks'
no_of_days
Integer
readonly=True
string='# Working Days'
opening_days
Float
digits=(16, 2)
group_operator='avg'
help='Number of Days to Open the task'
readonly=True
string='# Days to Assign'
partner_id
Many2one → res.partner
readonly=True
string='Contact'
args: 'res.partner'
priority
Selection
readonly=True
size=1
args: [('0', 'Low'), ('1', 'Normal'), ('2', 'High')]
project_id
Many2one → project.project
readonly=True
string='Project'
args: 'project.project'
stage_id
Many2one → project.task.type
readonly=True
string='Stage'
args: 'project.task.type'
state
Selection
readonly=True
string='Kanban State'
args: [('normal', 'In Progress'), ('blocked', 'Blocked'), ('done', 'Ready for next stage')]
user_id
Many2one → res.users
readonly=True
string='Assigned To'
args: 'res.users'
init(self)
project_time_mode_id
Many2one → product.uom
help="This will set the unit of measure used in projects and tasks.\nIf you use the timesheet linked to projects, don't forget to setup the right unit of measure in your employees."
string='Project Time Unit'
args: 'product.uom'
No public methods.
task_count
Integer
compute='_compute_task_count'
string='# Tasks'
task_ids
One2many → project.task
string='Tasks'
args: 'project.task', 'partner_id'
No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/project |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Project Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, David Monjoie, Goffin Simon, Simon Lejeune, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, Géry Debongnie, Aaron Bohy, Damien Bouvy, Yannick Tivisse, qsm-odoo, Martin Geubelle, odoo-tac, Jigar Patel |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/project-management |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:31 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base_setup - base - web_kanban - web - product - decimal_precision - bus - report - analytic - portal - auth_signup - resource - web_tip - web_planner |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Track multi-level projects, tasks, work done on tasks
=====================================================
This application allows an operational project management system to organize your activities into tasks and plan the work you need to get the tasks completed.
Gantt diagrams will give you a graphical representation of your project plans, as well as resources availability and workload.
Dashboard / Reports for Project Management will include:
--------------------------------------------------------
* My Tasks
* Open Tasks
* Tasks Analysis
* Cumulative Flow
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
analytic_account_inherited_form |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
edit_project |
project.project.form | project.project | form | New |
project_planner |
project_planner | ir.ui.view | qweb | New |
project_tags_form_view |
Tags | project.tags | form | New |
project_tags_search_view |
Tags | project.tags | search | New |
task_company |
res.company.task.config | res.company | xpath | Inherits base.view_company_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_config_settings |
project settings | project.config.settings | form | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_pivot |
project.task.pivot | project.task | pivot | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_history_graph |
project.task.history.cumulative.graph | project.task.history.cumulative | graph | New |
view_task_history_pivot |
project.task.history.cumulative.pivot | project.task.history.cumulative | pivot | New |
view_task_history_search |
project.task.history.cumulative.search | project.task.history.cumulative | search | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | div | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_pivot |
report.project.task.user.pivot | report.project.task.user | pivot | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/project |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Project Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Randhir Mayatra (OpenERP), Odoo Translation Bot, Turkesh Patel (Open ERP), Christophe Matthieu, Martin Trigaux, Ajay Chauhan (OpenERP), Foram Katharotiya (OpenERP), Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Josse Colpaert, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Denis Ledoux, Fabien Meghazi, niv-openerp, ggh-openerp, Christophe Simonis, David Monjoie, Xavier Morel, Goffin Simon, Cedric Snauwaert, Simon Lejeune, Vishmita, Kersten Jeremy, Amit Bhavsar (Open ERP), Paramjit Singh Sahota, Anand Patel (OpenERP), Vidhin Mehta, Richard Mathot, Géry Debongnie, Aaron Bohy, Vishmita Jadeja (openerp), Bharat R. Devnani (OpenERP), Richard Mathot (OpenERP), ged-odoo, Mahendra Barad (OpenERP), ima-openerp, Gery Debongnie, Randhir Mayatra rma-openerp, sgo@tinyerp.com, Darshan Kalola (OpenERP), Darshan Kalola, Sunil Sharma (OpenERP), Sanjay Gohel (OpenERP), Jignesh Rathod (OpenERP), Rashmin Lumbhani (OpenERP), Barad Mahendra |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/project-management |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:40 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base_setup - base - web_kanban - web - product - decimal_precision - report - analytic - board - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Track multi-level projects, tasks, work done on tasks
=====================================================
This application allows an operational project management system to organize your activities into tasks and plan the work you need to get the tasks completed.
Gantt diagrams will give you a graphical representation of your project plans, as well as resources availability and workload.
Dashboard / Reports for Project Management will include:
--------------------------------------------------------
* My Tasks
* Open Tasks
* Tasks Analysis
* Cumulative Flow
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
analytic_account_inherited_form |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
assets_backend |
project assets | ir.ui.view | qweb | Inherits web.assets_backend |
edit_project |
project.project.form | project.project | form | New |
project_category_form_view |
Tags | project.category | form | New |
project_category_search_view |
Tags | project.category | search | New |
task_company |
res.company.task.config | res.company | xpath | Inherits base.view_company_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_config_settings |
project settings | project.config.settings | form | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_project_gantt |
project.project.gantt | project.project | gantt | New |
view_project_task_delegate |
Project Task Delegate | project.task.delegate | form | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_gantt |
project.task.gantt | project.task | gantt | New |
view_task_history_graph |
project.task.history.cumulative.graph | project.task.history.cumulative | graph | New |
view_task_history_search |
project.task.history.cumulative.search | project.task.history.cumulative | search | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.buttons | res.partner | xpath | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
view_task_work_form |
project.task.work.form | project.task.work | form | New |
view_task_work_tree |
project.task.work.tree | project.task.work | tree | New |
No models found for this module.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
analytic_account_inherited_form |
account.analytic.account.form.inherit | account.analytic.account | xpath | Inherits analytic.view_account_analytic_account_form |
board_project_form |
board.project.form | board.board | form | New |
edit_project |
project.project.form | project.project | form | New |
project_category_form_view |
Tags | project.category | form | New |
project_category_search_view |
Tags | project.category | search | New |
task_company |
res.company.task.config | res.company | xpath | Inherits base.view_company_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_config_settings |
project settings | project.config.settings | form | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_kanban |
project.project.kanban | project.project | kanban | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_project_gantt |
project.project.gantt | project.project | gantt | New |
view_project_task_delegate |
Project Task Delegate | project.task.delegate | form | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_reevaluate |
Re-evaluate Task | project.task.reevaluate | form | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_gantt |
project.task.gantt | project.task | gantt | New |
view_task_history_graph |
project.task.history.cumulative.graph | project.task.history.cumulative | graph | New |
view_task_history_search |
project.task.history.cumulative.search | project.task.history.cumulative | search | New |
view_task_history_tree |
project.task.history.cumulative.tree | project.task.history.cumulative | tree | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.info.inherit | res.partner | xpath | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_project_user_tree |
report.project.task.user.tree | report.project.task.user | tree | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree |
project.task.tree | project.task | tree | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
view_task_work_form |
project.task.work.form | project.task.work | form | New |
view_task_work_tree |
project.task.work.tree | project.task.work | tree | New |
No models found for this module.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/6.1/project |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Project Management |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Jagdish Panchal (Open ERP), Rucha (Open ERP), Atul Patel (OpenERP), Stephane Wirtel, Turkesh Patel (Open ERP), Numerigraphe - Lionel Sausin, DBR (OpenERP), Harry (OpenERP), Stéphane Bidoul, Fabien Pinckaers, Antony Lesuisse, Meera Trambadia (OpenERP), Olivier Dony, Thibault Delavallée, Vo Minh Thu, Launchpad Translations on behalf of openerp, Quentin (OpenERP), Kuldeep Joshi (OpenERP), Nimesh (Open ERP), Mayur Maheshwari (OpenERP), Jigar Amin - OpenERP, Fabien Meghazi, niv-openerp, Xavier ALT, Christophe Simonis, Ujjvala Collins (OpenERP), Xavier Morel, Khushboo Bhatt (Open ERP), Chris Biersbach, Jigar Amin, Serpent Consulting Services, Amit (OpenERP), Minh Tran, Amit Bhavsar (Open ERP), Thibault Francois, Carlos Vásquez, ksa (Open ERP), Els Van Vossel, Israel Fermin Montilla, Rifakat Haradwala (Open ERP), Hardik Ansodariy (OpenERP), ssu, rch-openerp, aag (OpenERP), Yogesh (OpenERP), Sbh (OpenERP), jam-openerp, tfr@openerp.com, ron@tinyerp.com, fp, AMP (OpenERP), Tejas (OpenERP), RME (OpenERP), RavishchanraMurari (Open ERP), Kirti Savalia (OpenERP), YSA (Openerp), Atik Agewan (OpenERP), Ravi Gohil (Open ERP) |
| WEBSITE | |
| WEBSITE | http://www.openerp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:41:35 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base_setup - base - product - process - decimal_precision - analytic - board - base_tools - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Project management module tracks multi-level projects, tasks, work done on tasks, eso.
======================================================================================
It is able to render planning, order tasks, eso.
Dashboard for project members that includes:
--------------------------------------------
* List of my open tasks
* List of my delegated tasks
* Graph of My Projects: Planned vs Total Hours
* Graph of My Remaining Hours by Project
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
base.view_crm_partner_info_History |
res.partner.crm.history.inherit1 | res.partner | xpath | Inherits base.view_partner_form |
board_project_form |
board.project.form | board.board | form | New |
edit_project |
project.project.form | project.project | form | New |
task_company |
res.company.task.config | res.company | page | Inherits base.view_company_form |
task_type_edit |
project.task.type.form | project.task.type | form | New |
task_type_search |
project.task.type.search | project.task.type | search | New |
task_type_tree |
project.task.type.tree | project.task.type | tree | New |
view_delegated_task_tree |
project.task.delegated.tree | project.task | tree | New |
view_project |
project.project.tree | project.project | tree | New |
view_project_project_filter |
project.project.select | project.project | search | New |
view_project_project_gantt |
project.project.gantt | project.project | gantt | New |
view_project_task_delegate |
Project Task Delegate | project.task.delegate | form | New |
view_project_task_graph |
project.task.graph | project.task | graph | New |
view_project_task_reevaluate |
Re-evaluate Task | project.task.reevaluate | form | New |
view_project_users_form_simple |
res.users.project.form1 | res.users | group | Inherits base.view_users_form |
view_project_vs_planned_total_hours_graph |
project.vs.planned.total.hour.graph | project.vs.hours | graph | New |
view_project_vs_planned_total_hours_tree |
project.vs.planned.total.hour.tree | project.vs.hours | tree | New |
view_project_vs_remaining_hours_graph |
project.vs.remaining.hour.graph | project.vs.hours | graph | New |
view_project_vs_remaining_hours_tree |
project.vs.remaining.hour.tree | project.vs.hours | tree | New |
view_task_by_days_graph |
task.by.days.graph | task.by.days | graph | New |
view_task_by_days_tree |
task.by.days.tree | task.by.days | tree | New |
view_task_calendar |
project.task.calendar | project.task | calendar | New |
view_task_form2 |
project.task.form | project.task | form | New |
view_task_gantt |
project.task.gantt | project.task | gantt | New |
view_task_history_burndown_graph |
project.task.history.burndown.graph | project.task.history.burndown | graph | New |
view_task_history_graph |
project.task.history.cumulative.graph | project.task.history.cumulative | graph | New |
view_task_history_search |
project.task.history.cumulative.search | project.task.history.cumulative | search | New |
view_task_history_tree |
project.task.history.cumulative.tree | project.task.history.cumulative | tree | New |
view_task_kanban |
project.task.kanban | project.task | kanban | New |
view_task_partner_info_form |
res.partner.task.info.inherit | res.partner | page | Inherits base.view_partner_form |
view_task_project_user_graph |
report.project.task.user.graph | report.project.task.user | graph | New |
view_task_project_user_search |
report.project.task.user.search | report.project.task.user | search | New |
view_task_project_user_tree |
report.project.task.user.tree | report.project.task.user | tree | New |
view_task_search_form |
project.task.search.form | project.task | search | New |
view_task_tree |
project.task.tree | project.task | tree | New |
view_task_tree2 |
project.task.tree | project.task | tree | New |
view_task_work_form |
project.task.work.form | project.task.work | form | New |
view_task_work_tree |
project.task.work.tree | project.task.work | tree | New |
view_users_form_project_modif_inherited1 |
view.users.form.project.modif.inherited1 | res.users | group | Inherits base.view_users_form_simple_modif |
No models found for this module.