Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
2 Răspunsuri
1334 Vizualizări

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

Imagine profil
Abandonează
Cel mai bun răspuns

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

Imagine profil
Abandonează
Cel mai bun răspuns

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

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
1
mai 24
2619
2
feb. 24
2140
0
apr. 23
1498
6
feb. 23
18274
1
nov. 22
4671