from odoo import http from odoo.exceptions import AccessError, MissingError from odoo.http import request from odoo.addons.portal.controllers.portal import CustomerPortal class PortalFolio(CustomerPortal): def _prepare_home_portal_values(self, counters): partner = request.env.user.partner_id values = super()._prepare_home_portal_values(counters) Folio = request.env["pms.folio"] if "folio_count" in counters: values["folio_count"] = ( Folio.search_count( [ ("partner_id", "child_of", partner.id), ] ) if Folio.check_access_rights("read", raise_exception=False) else 0 ) return values def _folio_get_page_view_values(self, folio, access_token, **kwargs): values = {"folio": folio, "token": access_token} return self._get_page_view_values( folio, access_token, values, "my_folios_history", False, **kwargs ) @http.route(["/my/folios"], type="http", auth="user", website=True) def portal_my_folios( self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw ): partner = request.env.user.partner_id values = self._prepare_portal_layout_values() values["folios"] = ( request.env["pms.folio"] .sudo() .search( [ ("partner_id", "child_of", partner.id), ] ) ) return request.render("pms.portal_my_folio", values) @http.route(["/my/folios/"], type="http", auth="user", website=True) def portal_my_folio_detail( self, folio_id, access_token=None, report_type=None, download=False, **kw ): try: folio_sudo = self._document_check_access( "pms.folio", folio_id, access_token="9a6f4fc8-59f6-4f50-ae45-5af6492e7aba", ) except (AccessError, MissingError): return request.redirect("/my") if report_type in ("html", "pdf", "text"): return self._show_report( model=folio_sudo, report_type=report_type, report_ref="action_report_folio", download=download, ) values = self._folio_get_page_view_values(folio_sudo, access_token, **kw) return request.render("pms.folio_portal_template", values)