summaryrefslogtreecommitdiff
path: root/helpdesk_mgmt/models/helpdesk_ticket_team.py
diff options
context:
space:
mode:
Diffstat (limited to 'helpdesk_mgmt/models/helpdesk_ticket_team.py')
-rw-r--r--helpdesk_mgmt/models/helpdesk_ticket_team.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/helpdesk_mgmt/models/helpdesk_ticket_team.py b/helpdesk_mgmt/models/helpdesk_ticket_team.py
new file mode 100644
index 0000000..f52b03b
--- /dev/null
+++ b/helpdesk_mgmt/models/helpdesk_ticket_team.py
@@ -0,0 +1,86 @@
+from odoo import api, fields, models
+from odoo.tools.safe_eval import safe_eval
+
+
+class HelpdeskTeam(models.Model):
+
+ _name = "helpdesk.ticket.team"
+ _description = "Helpdesk Ticket Team"
+ _inherit = ["mail.thread", "mail.alias.mixin"]
+
+ name = fields.Char(string="Name", required=True)
+ user_ids = fields.Many2many(comodel_name="res.users", string="Members")
+ active = fields.Boolean(default=True)
+ category_ids = fields.Many2many(
+ comodel_name="helpdesk.ticket.category", string="Category"
+ )
+ company_id = fields.Many2one(
+ comodel_name="res.company",
+ string="Company",
+ default=lambda self: self.env.company,
+ )
+ user_id = fields.Many2one(
+ comodel_name="res.users",
+ string="Team Leader",
+ check_company=True,
+ )
+ alias_id = fields.Many2one(
+ comodel_name="mail.alias",
+ string="Email",
+ ondelete="restrict",
+ required=True,
+ help="The email address associated with \
+ this channel. New emails received will \
+ automatically create new tickets assigned \
+ to the channel.",
+ )
+ color = fields.Integer(string="Color Index", default=0)
+ ticket_ids = fields.One2many(
+ comodel_name="helpdesk.ticket",
+ inverse_name="team_id",
+ string="Tickets",
+ )
+ todo_ticket_ids = fields.One2many(
+ related="ticket_ids",
+ domain="[('closed', '=', False)]",
+ string="Todo tickets",
+ readonly=True,
+ )
+ todo_ticket_count = fields.Integer(
+ string="Number of tickets", compute="_compute_todo_tickets"
+ )
+ todo_ticket_count_unassigned = fields.Integer(
+ string="Number of tickets unassigned", compute="_compute_todo_tickets"
+ )
+ todo_ticket_count_unattended = fields.Integer(
+ string="Number of tickets unattended", compute="_compute_todo_tickets"
+ )
+ todo_ticket_count_high_priority = fields.Integer(
+ string="Number of tickets in high priority", compute="_compute_todo_tickets"
+ )
+
+ @api.depends("ticket_ids", "ticket_ids.stage_id")
+ def _compute_todo_tickets(self):
+ for record in self:
+ record.todo_ticket_ids = record.ticket_ids.filtered(
+ lambda ticket: not ticket.closed
+ )
+ record.todo_ticket_count = len(record.todo_ticket_ids)
+ record.todo_ticket_count_unassigned = len(
+ record.todo_ticket_ids.filtered(lambda ticket: not ticket.user_id)
+ )
+ record.todo_ticket_count_unattended = len(
+ record.todo_ticket_ids.filtered(lambda ticket: ticket.unattended)
+ )
+ record.todo_ticket_count_high_priority = len(
+ record.todo_ticket_ids.filtered(lambda ticket: ticket.priority == "3")
+ )
+
+ def _alias_get_creation_values(self):
+ values = super()._alias_get_creation_values()
+ values["alias_model_id"] = self.env.ref(
+ "helpdesk_mgmt.model_helpdesk_ticket"
+ ).id
+ values["alias_defaults"] = defaults = safe_eval(self.alias_defaults or "{}")
+ defaults["team_id"] = self.id
+ return values