diff --git a/helpdesk_portal_restriction/controllers/main.py b/helpdesk_portal_restriction/controllers/main.py index 0f28953ddc..060274d0dd 100644 --- a/helpdesk_portal_restriction/controllers/main.py +++ b/helpdesk_portal_restriction/controllers/main.py @@ -21,7 +21,7 @@ def _get_teams(self): else: return False - def _get_category(self): + def _get_categories(self, **kw): return ( http.request.env.user.partner_id.helpdesk_category_ids if http.request.env.user.partner_id.helpdesk_category_ids @@ -29,26 +29,3 @@ def _get_category(self): [("active", "=", True)] ) ) - - @http.route("/new/ticket", type="http", auth="user", website=True) - def create_new_ticket(self, **kw): - session_info = http.request.env["ir.http"].session_info() - email = http.request.env.user.email - name = http.request.env.user.name - company = request.env.company - return http.request.render( - "helpdesk_mgmt.portal_create_ticket", - { - "categories": self._get_category(), - "teams": self._get_teams(), - "email": email, - "name": name, - "ticket_team_id_required": ( - company.helpdesk_mgmt_portal_team_id_required - ), - "ticket_category_id_required": ( - company.helpdesk_mgmt_portal_category_id_required - ), - "max_upload_size": session_info["max_file_upload_size"], - }, - ) diff --git a/helpdesk_portal_restriction/models/__init__.py b/helpdesk_portal_restriction/models/__init__.py index 63fb3e3ffa..2e284591d2 100644 --- a/helpdesk_portal_restriction/models/__init__.py +++ b/helpdesk_portal_restriction/models/__init__.py @@ -1,3 +1,4 @@ +from . import helpdesk_ticket from . import helpdesk_ticket_category from . import helpdesk_ticket_team from . import res_partner diff --git a/helpdesk_portal_restriction/models/helpdesk_ticket.py b/helpdesk_portal_restriction/models/helpdesk_ticket.py new file mode 100644 index 0000000000..105e2bd8a7 --- /dev/null +++ b/helpdesk_portal_restriction/models/helpdesk_ticket.py @@ -0,0 +1,20 @@ +from odoo import api, models +from odoo.osv.expression import AND + + +class HelpdeskTicket(models.Model): + _inherit = "helpdesk.ticket" + + @api.model + def _search(self, domain, offset=0, limit=None, order=None): + if not self.env.su and self.env.user.has_group("base.group_portal"): + partner = self.env.user.partner_id.sudo() + if partner.helpdesk_team_ids: + domain = AND( + [domain, [("team_id", "in", partner.helpdesk_team_ids.ids)]] + ) + if partner.helpdesk_category_ids: + domain = AND( + [domain, [("category_id", "in", partner.helpdesk_category_ids.ids)]] + ) + return super()._search(domain, offset=offset, limit=limit, order=order) diff --git a/helpdesk_portal_restriction/models/res_partner.py b/helpdesk_portal_restriction/models/res_partner.py index 912b48a8ba..6f57caabcc 100644 --- a/helpdesk_portal_restriction/models/res_partner.py +++ b/helpdesk_portal_restriction/models/res_partner.py @@ -8,7 +8,6 @@ class ResPartner(models.Model): "helpdesk.ticket.team", "helpdesk_partner_ids", string="Available teams", - required=True, ) helpdesk_category_ids = fields.Many2many(