Files
encoach_be_odoo19/encoach_ticket/models/ticket.py
Talal Sharabi bf3981028b Fix model-controller mismatches and routing issues
- ticket: add user_id, priority, category fields; fix _serialize_ticket -> _serialize
- package: fix is_active -> active (Odoo auto-filter), remove invalid entity_id filter
- walkthrough: add sequence field; fix controller to use name/content instead of title/steps
- users: fix encoach_user_type -> encoach_type, encoach_entity_id -> entity_rel_ids.entity_id
- generation: use EncoachGenerationService class instead of nonexistent ORM model,
  fix /api/exam/level/ route conflict (separate GET and POST URLs)

Made-with: Cursor
2026-03-15 01:08:36 +04:00

66 lines
2.1 KiB
Python

from odoo import models, fields
class EncoachTicket(models.Model):
_name = "encoach.ticket"
_description = "EnCoach Support Ticket"
user_id = fields.Many2one(
"res.users", string="Reporter", ondelete="set null", index=True,
)
reporter_name = fields.Char()
reporter_email = fields.Char()
subject = fields.Char(required=True)
description = fields.Text()
priority = fields.Selection(
[("low", "Low"), ("medium", "Medium"), ("high", "High")],
default="medium",
)
category = fields.Char()
ticket_type = fields.Selection(
[
("feedback", "Feedback"),
("bug", "Bug Report"),
("help", "Help Request"),
],
string="Type",
)
status = fields.Selection(
[
("open", "Open"),
("in_progress", "In Progress"),
("resolved", "Resolved"),
("closed", "Closed"),
],
default="open",
)
exam_information = fields.Json()
assigned_to_id = fields.Many2one(
"res.users", string="Assigned To", ondelete="set null",
)
created_at = fields.Datetime(default=fields.Datetime.now)
legacy_id = fields.Char(index=True)
def to_encoach_dict(self):
self.ensure_one()
return {
"id": self.id,
"_id": str(self.id),
"userId": str(self.user_id.id) if self.user_id else None,
"reporterName": self.reporter_name or "",
"reporterEmail": self.reporter_email or "",
"subject": self.subject or "",
"description": self.description or "",
"type": self.ticket_type or "",
"priority": self.priority or "medium",
"category": self.category or "",
"status": self.status,
"examInformation": self.exam_information,
"assignedTo": (
self.assigned_to_id.name if self.assigned_to_id else None
),
"createdAt": (
self.created_at.isoformat() if self.created_at else None
),
}