main.py 3.78 KB
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging

from odoo import http
from odoo.addons.portal.controllers.portal import (
    pager as portal_pager)
from odoo.addons.website.controllers.main import Website
from odoo.http import request

STATE = ['draft', 'confirmed', 'canceled']

_logger = logging.getLogger(__name__)


class IdgBoardWebsite(Website):
    _items_per_page = 20

    # def _prepare_home_portal_values(self, counters):
    #     values = super()._prepare_home_portal_values(counters)
    #     if 'bphtb_count' in counters:
    #         values['bphtb_count'] = request.env['bphtb.sales'].search_count([
    #             ('state', 'in', STATE)
    #         ]) if request.env['bphtb.sales'].check_access_rights(
    #             'read', raise_exception=False) else 0
    #     return values
    #
    # def _bphtb_sales_get_page_view_values(self, sales, access_token, **kwargs):
    #     def resize_to_48(b64source):
    #         if not b64source:
    #             b64source = base64.b64encode(Binary.placeholder())
    #         return image_process(b64source, size=(48, 48))
    #
    #     values = {
    #         'sales': sales,
    #         'resize_to_48': resize_to_48,
    #     }
    #     return self._get_page_view_values(sales, access_token, values,
    #                                       'my_bphtbs_history', False, **kwargs)

    def _prepare_portal_layout_values(self):
        """Values for /my/* templates rendering.

        Does not include the record counts.
        """
        # get customer sales rep
        sales_user = False
        partner = request.env.user.partner_id
        if partner.user_id and not partner.user_id._is_public():
            sales_user = partner.user_id

        return {
            'sales_user': sales_user,
            'page_name': 'home',
        }

    def _prepare_home_portal_values(self, counters):
        """Values for /my & /my/home routes template rendering.

        Includes the record count for the displayed badges.
        where 'coutners' is the list of the displayed badges
        and so the list to compute.
        """
        return {}

    @http.route(['/idg/board', '/idg/board/page/<int:page>'], type='http', auth="public")
    def index(self, page=1, filterby=None, **kw):
        # , date_begin=None, date_end=None, sortby=None, filterby=None, **kw):
        values = self._prepare_portal_layout_values()
        domain = [('level', '=', 6)]
        searchbar_sortings = {}
        IdgTaxSum = request.env['idg.region.tax.potency.sum'].sudo()
        tax_count = IdgTaxSum.search_count(domain)
        if not filterby:
            filterby = 'all'

        pager = portal_pager(
            url="/idg/board",
            url_args={
                'filterby': filterby
            },
            total=tax_count,
            page=page,
            step=self._items_per_page
        )
        province_domain = ['&', ('level', '=', 6),
                                ('district_id', '=', None)]
        province_taxs = IdgTaxSum.search(
            province_domain,
            limit=self._items_per_page,
            offset=pager['offset']
        )
        district_domain = ['&', ('level', '=', 6),
                                ('district_id', '!=', None)]
        district_taxs = IdgTaxSum.search(
            district_domain,
            limit=self._items_per_page,
            offset=pager['offset']
        )

        values.update({
            'province_taxs': province_taxs,
            'district_taxs': district_taxs,
            'page_name': 'idgtax',
            'default_url': '/idg/board',
        })

        return request.render("idg_board.portal_idg_boards", values)