Ticket Object
This page contains the Ticket API Documentation.
Ticket Status
Ticket Status
Status of the ticket. By design, not all statuses are available for ALL ticket types.
Request / Incident ticket
- Draft
- New
- Assigned
- Assigned (Planned)
- Pending
- Solved
- Closed
Problem Ticket
- Draft
- New
- Accepted
- Assigned
- Assigned (Planned)
- Pending
- Solved
- Under Observation
- Closed
Change Ticket
- Draft
- New
- Evaluation
- Approvals
- Accepted
- Pending
- Testing
- Qualification
- Applied
- Review
- Closed
- Cancelled
- Refused
Ticket External System
Bases: IntegerChoices
Attributes
Ticket Type
Bases: IntegerChoices
Centurion ERP has the following ticket types available:
-
Request
-
Incident
-
Change
-
Problem
As we use a common model for ALL ticket types. Effort has been made to limit fields showing for a ticket type that it does not belong. If you find a field displayed that does not belong to a ticket, please create an issue.
Ticket Urgency
Ticket Impact
Ticket Priority
Ticket Object Model Abstract class
Bases: SlashCommands
, TenancyObject
, TicketCommonFields
Attributes
assigned_teams
assigned_teams = ManyToManyField(Team, blank=True, help_text='Assign the ticket to a Team(s)', related_name='assigned_teams', symmetrical=False, verbose_name='Assigned Team(s)')
assigned_users
assigned_users = ManyToManyField(AUTH_USER_MODEL, blank=True, help_text='Assign the ticket to a User(s)', related_name='assigned_users', symmetrical=False, verbose_name='Assigned User(s)')
category
category = ForeignKey(TicketCategory, blank=True, help_text='Category for this ticket', null=True, on_delete=SET_NULL, verbose_name='Category')
common_fields
common_fields: list(str()) = ['organization', 'title', 'description', 'opened_by', 'ticket_type', 'assigned_users', 'assigned_teams', 'estimate']
common_itsm_fields
common_itsm_fields: list(str()) = common_fields + ['status', 'categoryurgency', 'project', 'milestone', 'priority', 'impact', 'subscribed_teams', 'subscribed_users']
date_closed
date_closed = DateTimeField(blank=True, help_text='Date ticket closed', null=True, verbose_name='Closed Date')
description
description = TextField(blank=False, help_text='Ticket Description', null=False, verbose_name='Description')
estimate
estimate = IntegerField(blank=False, default=0, help_text='Time Eastimated to complete this ticket in seconds', null=False, verbose_name='Estimation')
external_ref
external_ref = IntegerField(blank=True, default=None, help_text='External System reference', null=True, verbose_name='Reference Number')
external_system
external_system = IntegerField(blank=True, choices=Ticket_ExternalSystem, default=None, help_text='External system this item derives', null=True, verbose_name='External System')
fields_project_task
fields_project_task: list(str()) = common_fields + ['category', 'milestone', 'status', 'urgency', 'priority', 'impact', 'subscribed_teams', 'subscribed_users', 'planned_start_date', 'planned_finish_date', 'real_start_date', 'real_finish_date']
impact
impact = IntegerField(blank=True, choices=TicketImpact, default=VERY_LOW, help_text='End user assessed impact', null=True, verbose_name='Impact')
is_deleted
is_deleted = BooleanField(blank=False, default=False, help_text='Is the ticket deleted? And ready to be purged', null=False, verbose_name='Deleted')
linked_items
Fetch items linked to ticket
Returns:
Type | Description |
---|---|
list(dict())
|
List of dict (list): List of dictionary with fields: id, name, type and url. |
list(dict())
|
Empty List (list): No items were found |
milestone
milestone = ForeignKey(ProjectMilestone, blank=True, help_text='Assign to a milestone', null=True, on_delete=SET_NULL, verbose_name='Project Milestone')
opened_by
opened_by = ForeignKey(AUTH_USER_MODEL, blank=False, help_text='Who is the ticket for', null=False, on_delete=DO_NOTHING, related_name='opened_by', verbose_name='Opened By')
parent_ticket
parent_ticket = ForeignKey('self', blank=True, default=None, help_text='Parent of this ticket', null=True, on_delete=SET_NULL, verbose_name='Parent Ticket')
planned_finish_date
planned_finish_date = DateTimeField(blank=True, help_text='Planned finish date', null=True, verbose_name='Planned Finish Date')
planned_start_date
planned_start_date = DateTimeField(blank=True, help_text='Planned start date.', null=True, verbose_name='Planned Start Date')
priority
priority = IntegerField(blank=True, choices=TicketPriority, default=VERY_LOW, help_text='What priority should this ticket for its completion', null=True, verbose_name='Priority')
project
project = ForeignKey(Project, blank=True, help_text='Assign to a project', null=True, on_delete=SET_NULL, verbose_name='Project')
real_finish_date
real_finish_date = DateTimeField(blank=True, help_text='Real finish date', null=True, verbose_name='Real Finish Date')
real_start_date
real_start_date = DateTimeField(blank=True, help_text='Real start date', null=True, verbose_name='Real Start Date')
status
status = IntegerField(blank=False, choices=All, default=NEW, help_text='Status of ticket', verbose_name='Status')
subscribed_teams
subscribed_teams = ManyToManyField(Team, blank=True, help_text='Subscribe a Team(s) to the ticket to receive updates', related_name='subscribed_teams', symmetrical=False, verbose_name='Subscribed Team(s)')
subscribed_users
subscribed_users = ManyToManyField(AUTH_USER_MODEL, blank=True, help_text='Subscribe a User(s) to the ticket to receive updates', related_name='subscribed_users', symmetrical=False, verbose_name='Subscribed User(s)')
table_fields
table_fields: list = ['id', 'title', 'status_badge', 'priority_badge', 'impact_badge', 'urgency_badge', 'opened_by', 'organization', 'created']
tech_fields
tech_fields = ['category', 'project', 'milestone', 'assigned_users', 'assigned_teams', 'subscribed_teams', 'subscribed_users', 'status', 'urgency', 'impact', 'priority', 'planned_start_date', 'planned_finish_date']
ticket_type
ticket_type = IntegerField(blank=False, choices=TicketType, help_text='The type of ticket this is', validators=[validation_ticket_type], verbose_name='Type')
title
title = CharField(blank=False, help_text='Title of the Ticket', max_length=100, unique=True, verbose_name='Title')
urgency
urgency = IntegerField(blank=True, choices=TicketUrgency, default=VERY_LOW, help_text='How urgent is this tickets resolution for the user?', null=True, verbose_name='Urgency')
Classes
Meta
Attributes
permissions
permissions = [('add_ticket_request', 'Can add a request ticket'), ('change_ticket_request', 'Can change any request ticket'), ('delete_ticket_request', 'Can delete a request ticket'), ('import_ticket_request', 'Can import a request ticket'), ('purge_ticket_request', 'Can purge a request ticket'), ('triage_ticket_request', 'Can triage all request ticket'), ('view_ticket_request', 'Can view all request ticket'), ('add_ticket_incident', 'Can add a incident ticket'), ('change_ticket_incident', 'Can change any incident ticket'), ('delete_ticket_incident', 'Can delete a incident ticket'), ('import_ticket_incident', 'Can import a incident ticket'), ('purge_ticket_incident', 'Can purge a incident ticket'), ('triage_ticket_incident', 'Can triage all incident ticket'), ('view_ticket_incident', 'Can view all incident ticket'), ('add_ticket_problem', 'Can add a problem ticket'), ('change_ticket_problem', 'Can change any problem ticket'), ('delete_ticket_problem', 'Can delete a problem ticket'), ('import_ticket_problem', 'Can import a problem ticket'), ('purge_ticket_problem', 'Can purge a problem ticket'), ('triage_ticket_problem', 'Can triage all problem ticket'), ('view_ticket_problem', 'Can view all problem ticket'), ('add_ticket_change', 'Can add a change ticket'), ('change_ticket_change', 'Can change any change ticket'), ('delete_ticket_change', 'Can delete a change ticket'), ('import_ticket_change', 'Can import a change ticket'), ('purge_ticket_change', 'Can purge a change ticket'), ('triage_ticket_change', 'Can triage all change ticket'), ('view_ticket_change', 'Can view all change ticket'), ('add_ticket_project_task', 'Can add a project task'), ('change_ticket_project_task', 'Can change any project task'), ('delete_ticket_project_task', 'Can delete a project task'), ('import_ticket_project_task', 'Can import a project task'), ('purge_ticket_project_task', 'Can purge a project task'), ('triage_ticket_project_task', 'Can triage all project task'), ('view_ticket_project_task', 'Can view all project task')]
Functions
action_comment_ticket_teams
Ticket *_teams many2many field
- Create the action comment
- Update ticket status to New/Assigned
action_comment_ticket_users
Ticket *_users many2many field
- Create the action comment
- Update ticket status to New/Assigned
assigned_status_update
Update Ticket status based off of assigned
- If the ticket has any assigned team(s)/user(s), update the status to assigned.
- If the ticket does not have any assigned team(s)/user(s), update the status to new.
This method only updates the status if the existing status is New or Assigned.
circular_dependency_check
Confirm the parent ticket does not create circular dependencies
A recursive check from ticket
to depth
. If a dependency is found.
False
will be returned
Parameters:
Name | Type | Description | Default |
---|---|---|---|
ticket |
Ticket
|
The initial ticket to check against |
required |
parent |
Ticket
|
The parent ticket to check, |
required |
depth |
int
|
How deep the recursive check should go. Defaults to 0. |
0
|
Returns:
Name | Type | Description |
---|---|---|
True |
bool
|
No circular dependency found |
False |
bool
|
Circular dependency was found |
ticketassigned
Check if the ticket has any assigned user(s)/team(s)
About:
This page forms part of our Project Centurion ERP.
Page Metadata
Version: ToDo: place files short git commit hereDate Created: 2024-09-01
Date Edited: 2024-09-01
Contribution:
Would You like to contribute to our Centurion ERP project? You can assist in the following ways:
- Edit This Page If there is a mistake or a way you can improve it.
- Add a Page to the Manual if you would like to add an item to our manual
- Raise an Issue if there is something about this page you would like to improve, and git is unfamiliar to you.
ToDo: Add the page list of contributors