summaryrefslogtreecommitdiff
path: root/helpdesk_mgmt/controllers/main.py
diff options
context:
space:
mode:
authorRichard Sassine <richardsassine@tutanota.com>2021-05-04 18:00:38 +0300
committerRichard Sassine <richardsassine@tutanota.com>2021-05-04 18:00:38 +0300
commitad97722b1b35aff50d0adf13a19715f7b8373c07 (patch)
treeedf36f1114b896a01602e31dafd74efe45736427 /helpdesk_mgmt/controllers/main.py
initial commit
Diffstat (limited to 'helpdesk_mgmt/controllers/main.py')
-rw-r--r--helpdesk_mgmt/controllers/main.py76
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")