Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
2 Replies
1289 Tampilan

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

Avatar
Buang
Jawaban Terbai

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

Avatar
Buang
Jawaban Terbai

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

Avatar
Buang
Post Terkait Replies Tampilan Aktivitas
1
Mei 24
2565
2
Feb 24
2111
0
Apr 23
1467
6
Feb 23
18232
1
Nov 22
4645