diff options
Diffstat (limited to 'helpdesk_mgmt/models/helpdesk_ticket_team.py')
| -rw-r--r-- | helpdesk_mgmt/models/helpdesk_ticket_team.py | 86 |
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 |
