Hello everyone, it is possible to add 2 filters to the web portal similar to modulo(portal) --> portal_searchbar -> searchbar_filters. Do you know how I can add so that I filter through both filters?
V14
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Boekhouding
- Voorraad
- PoS
- Project
- MRP
Deze vraag is gerapporteerd
Yes, in Odoo 14 , it's absolutely possible to add multiple filters (like a dropdown for status + date range or category) to the Portal view using portal_searchbar . You'll just need to extend the controller and the template logic properly.
Extend Controller
Inherit and override the web.controllers.portal method serving your portal page:
from odoo import http
from odoo.http import request
from odoo.addons.portal.controllers.portal import CustomerPortal
class CustomPortal(CustomerPortal):
@http.route(['/my/records'], type='http', auth="user", website=True)
def portal_my_records(self, **kwargs):
# Extract filters
filter_state = kwargs.get('filter_state', 'all')
filter_type = kwargs.get('filter_type', 'all')
domain = []
if filter_state != 'all':
domain += [('state', '=', filter_state)]
if filter_type != 'all':
domain += [('type', '=', filter_type)]
records = request.env['your.model'].sudo().search(domain)
values = {
'records': records,
'filter_state': filter_state,
'filter_type': filter_type,
'searchbar_filters_state': {
'all': 'All Status',
'draft': 'Draft',
'done': 'Done',
},
'searchbar_filters_type': {
'all': 'All Types',
'internal': 'Internal',
'external': 'External',
}
}
return request.render("your_module.portal_my_records_template", values)
Modify Portal Template:
In your portal_my_records_template.xml:
<t t-call="portal.portal_layout">
<div class="o_portal_searchbar_form">
<form method="get">
<select name="filter_state">
<t t-foreach="searchbar_filters_state.items()" t-as="filter">
<option t-att-value="filter[0]" t-att-selected="filter[0] == filter_state and 'selected' or None">
<t t-esc="filter[1]"/>
</option>
</t>
</select>
<select name="filter_type">
<t t-foreach="searchbar_filters_type.items()" t-as="filter">
<option t-att-value="filter[0]" t-att-selected="filter[0] == filter_type and 'selected' or None">
<t t-esc="filter[1]"/>
</option>
</t>
</select>
<button type="submit">Filter</button>
</form>
</div>
<!-- Your table showing the filtered records -->
</t>
i hope it is use full
Hi,
Refer to the following blog that explains how we can add the filter in the Odoo customer portal.
* https://www.cybrosys.com/blog/how-to-add-a-filter-option-in-odoo-18-website-portal
Hope it helps
Geniet je van het gesprek? Blijf niet alleen lezen, doe ook mee!
Maak vandaag nog een account aan om te profiteren van exclusieve functies en deel uit te maken van onze geweldige community!
AanmeldenGerelateerde posts | Antwoorden | Weergaven | Activiteit | |
---|---|---|---|---|
|
1
mei 24
|
2599 | ||
|
2
feb. 24
|
2133 | ||
|
0
apr. 23
|
1498 | ||
|
6
feb. 23
|
18263 | ||
|
1
nov. 22
|
4662 |