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(
Group,
blank=True,
help_text="Assign the ticket to a Group(s)",
related_name="+",
symmetrical=False,
verbose_name="Assigned Group(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=PROTECT,
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(
Group,
blank=True,
help_text="Subscribe a Group(s) to the ticket to receive updates",
related_name="+",
symmetrical=False,
verbose_name="Subscribed Group(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