diff options
| author | Richard Sassine <richardsassine@tutanota.com> | 2021-05-04 18:00:38 +0300 |
|---|---|---|
| committer | Richard Sassine <richardsassine@tutanota.com> | 2021-05-04 18:00:38 +0300 |
| commit | ad97722b1b35aff50d0adf13a19715f7b8373c07 (patch) | |
| tree | edf36f1114b896a01602e31dafd74efe45736427 /helpdesk_mgmt/controllers/main.py | |
initial commit
Diffstat (limited to 'helpdesk_mgmt/controllers/main.py')
| -rw-r--r-- | helpdesk_mgmt/controllers/main.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/helpdesk_mgmt/controllers/main.py b/helpdesk_mgmt/controllers/main.py new file mode 100644 index 0000000..8c910fc --- /dev/null +++ b/helpdesk_mgmt/controllers/main.py @@ -0,0 +1,76 @@ +import base64 +import logging + +import werkzeug + +import odoo.http as http +from odoo.http import request + +_logger = logging.getLogger(__name__) + + +class HelpdeskTicketController(http.Controller): + @http.route("/ticket/close", type="http", auth="user") + def support_ticket_close(self, **kw): + """Close the support ticket""" + values = {} + for field_name, field_value in kw.items(): + if field_name.endswith("_id"): + values[field_name] = int(field_value) + else: + values[field_name] = field_value + ticket = ( + http.request.env["helpdesk.ticket"] + .sudo() + .search([("id", "=", values["ticket_id"])]) + ) + ticket.stage_id = values.get("stage_id") + + return werkzeug.utils.redirect("/my/ticket/" + str(ticket.id)) + + @http.route("/new/ticket", type="http", auth="user", website=True) + def create_new_ticket(self, **kw): + categories = http.request.env["helpdesk.ticket.category"].search( + [("active", "=", True)] + ) + email = http.request.env.user.email + name = http.request.env.user.name + return http.request.render( + "helpdesk_mgmt.portal_create_ticket", + {"categories": categories, "email": email, "name": name}, + ) + + @http.route("/submitted/ticket", type="http", auth="user", website=True, csrf=True) + def submit_ticket(self, **kw): + vals = { + "partner_name": kw.get("name"), + "company_id": http.request.env.user.company_id.id, + "category_id": kw.get("category"), + "partner_email": kw.get("email"), + "description": kw.get("description"), + "name": kw.get("subject"), + "attachment_ids": False, + "channel_id": request.env["helpdesk.ticket.channel"] + .sudo() + .search([("name", "=", "Web")]) + .id, + "partner_id": request.env["res.partner"] + .sudo() + .search([("name", "=", kw.get("name")), ("email", "=", kw.get("email"))]) + .id, + } + new_ticket = request.env["helpdesk.ticket"].sudo().create(vals) + new_ticket.message_subscribe(partner_ids=request.env.user.partner_id.ids) + if kw.get("attachment"): + for c_file in request.httprequest.files.getlist("attachment"): + data = c_file.read() + if c_file.filename: + request.env["ir.attachment"].sudo().create( + { + "name": c_file.filename, + "datas": base64.b64encode(data), + "res_model": "helpdesk.ticket", + "res_id": new_ticket.id, + } + ) + return werkzeug.utils.redirect("/my/tickets") |
