mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP]pms: Folio user portal
This commit is contained in:
@@ -2,4 +2,5 @@
|
||||
|
||||
from . import models
|
||||
from . import wizards
|
||||
from . import controllers
|
||||
from .init_hook import post_init_hook
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
"views/webclient_templates.xml",
|
||||
"views/ir_sequence_views.xml",
|
||||
"views/account_journal_views.xml",
|
||||
"views/folio_portal_templates.xml",
|
||||
"wizards/wizard_reservation.xml",
|
||||
"wizards/wizard_massive_changes.xml",
|
||||
"wizards/wizard_advanced_filters.xml",
|
||||
|
||||
1
pms/controllers/__init__.py
Normal file
1
pms/controllers/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import pms_portal
|
||||
34
pms/controllers/pms_portal.py
Normal file
34
pms/controllers/pms_portal.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from odoo import http
|
||||
from odoo.addons.portal.controllers.portal import CustomerPortal
|
||||
from odoo.exceptions import AccessError, MissingError
|
||||
from odoo.http import request, route
|
||||
|
||||
|
||||
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', '=', partner.id),
|
||||
]) if Folio.check_access_rights('read', raise_exception=False) else 0
|
||||
return values
|
||||
|
||||
@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):
|
||||
values = self._prepare_portal_layout_values()
|
||||
values['folios'] = request.env['pms.folio'].sudo().search([])
|
||||
return request.render("pms.portal_my_folio", values)
|
||||
|
||||
@http.route(['/my/folios/<int:folio_id>'], 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=access_token)
|
||||
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='pms.report_folio_document', download=download)
|
||||
values = self._invoice_get_page_view_values(folio_sudo, access_token, **kw)
|
||||
return request.render("pms.report_folio_document", values)
|
||||
@@ -61,3 +61,4 @@ user_access_pms_invoice_filter_days,user_access_pms_invoice_filter_days,model_pm
|
||||
user_access_pms_invoice_filter_days_items,user_access_pms_invoice_filter_days_items,model_pms_invoice_filter_days_items,pms.group_pms_user,1,1,1,1
|
||||
user_access_wizard_payment_folio,user_access_wizard_payment_folio,model_wizard_payment_folio,pms.group_pms_user,1,1,1,1
|
||||
user_access_wizard_folio_changes,user_access_wizard_folio_changes,model_wizard_folio_changes,pms.group_pms_user,1,1,1,1
|
||||
user_access_pms_folio_portal,user_access_pms_folio_portal,model_pms_folio,base.group_portal,1,0,0,0
|
||||
|
||||
|
@@ -223,5 +223,12 @@
|
||||
user.get_active_property_ids())]
|
||||
</field>
|
||||
</record>
|
||||
<record id="pms_folio_rule_portal" model="ir.rule">
|
||||
<field name="name">Portal Personal Folios</field>
|
||||
<field name="model_id" ref="model_pms_folio"/>
|
||||
<field name="domain_force">[]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_portal'))]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
47
pms/views/folio_portal_templates.xml
Normal file
47
pms/views/folio_portal_templates.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<odoo>
|
||||
<template id="portal_my_folios" name="Folios" inherit_id="portal.portal_my_home" customize_show="True" priority="30">
|
||||
<xpath expr="//div[hasclass('o_portal_docs')]" position="inside">
|
||||
<t t-call="portal.portal_docs_entry">
|
||||
<t t-set="title">Folios</t>
|
||||
<t t-set="url" t-value="'/my/folios'"/>
|
||||
<t t-set="placeholder_count" t-value="'folio_count'"/>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
|
||||
<template id="portal_my_folio" name="My Folios">
|
||||
<t t-call="portal.portal_layout">
|
||||
<t t-set="breadcrumbs_searchbar" t-value="True"/>
|
||||
|
||||
<t t-call="portal.portal_searchbar">
|
||||
<t t-set="title">Folios</t>
|
||||
</t>
|
||||
<t t-if="not folios">
|
||||
<p>There are currently no folios for your account.</p>
|
||||
</t>
|
||||
<t t-if="folios" t-call="portal.portal_table">
|
||||
<thead>
|
||||
<tr class="active">
|
||||
<th>Folio #</th>
|
||||
<th>Order Date</th>
|
||||
<th class="text-right">Total</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<t t-foreach="folios" t-as="folio">
|
||||
<tr>
|
||||
<td>
|
||||
<a t-att-href="folio.get_portal_url()" t-att-title="folio.name">
|
||||
<t t-esc="folio.name"/>
|
||||
</a>
|
||||
</td>
|
||||
<td><span t-field="folio.date_order"/></td>
|
||||
<td class="text-right"><span t-field="folio.amount_total"/></td>
|
||||
</tr>
|
||||
</t>
|
||||
</tbody>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user