portal.py 7.23 KB
# # -*- coding: utf-8 -*-
# # Part of Odoo. See LICENSE file for full copyright and licensing details.
# import base64
# from collections import OrderedDict
# from datetime import datetime
#
# from odoo import http
# from odoo.exceptions import AccessError, MissingError
# from odoo.http import request, Response
# from odoo.tools import image_process
# from odoo.tools.translate import _
# from odoo.addons.portal.controllers.portal import (
#     get_records_pager, pager as portal_pager, CustomerPortal)
# from odoo.addons.web.controllers.main import Binary
#
# STATE = ['draft', 'confirmed', 'canceled']
#
#
# class CustomerPortal(CustomerPortal):
#
#     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)
#
#     @http.route(['/my/bphtb', '/my/bphtb/page/<int:page>'], type='http', auth="user", website=True)
#     def portal_my_bphtb_saless(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw):
#         values = self._prepare_portal_layout_values()
#         BphtbSales = request.env['bphtb.sales']
#
#         domain = []
#
#         if date_begin and date_end:
#             domain += [('create_date', '>', date_begin), ('create_date', '<=', date_end)]
#
#         searchbar_sortings = {
#             'date': {'label': _('Newest'), 'order': 'create_date desc, id desc'},
#             'name': {'label': _('Name'), 'order': 'name asc, id asc'},
#             'owed': {'label': _('Total'), 'order': 'owed desc, id desc'},
#         }
#         # default sort by value
#         if not sortby:
#             sortby = 'date'
#         order = searchbar_sortings[sortby]['order']
#
#         searchbar_filters = {
#             'all': {'label': _('All'), 'domain': [('state', 'in', STATE)]},
#             'draft': {'label': _('Draft'), 'domain': [('state', '=', 'draft')]},
#             'confirmed': {'label': _('Confirmed'), 'domain': [('state', '=', 'confirmed')]},
#             'canceled': {'label': _('Canceled'), 'domain': [('state', '=', 'canceled')]},
#         }
#         # default filter by value
#         if not filterby:
#             filterby = 'all'
#         domain += searchbar_filters[filterby]['domain']
#
#         # count for pager
#         bphtb_count = BphtbSales.search_count(domain)
#         # make pager
#         pager = portal_pager(
#             url="/my/bphtb",
#             url_args={
#                 'date_begin': date_begin, 'date_end': date_end,
#                 'sortby': sortby, 'filterby': filterby
#             },
#             total=bphtb_count,
#             page=page,
#             step=self._items_per_page
#         )
#         # search the bphtb orders to display, according to the pager data
#         saless = BphtbSales.search(
#             domain,
#             order=order,
#             limit=self._items_per_page,
#             offset=pager['offset']
#         )
#         request.session['my_bphtbs_history'] = saless.ids[:100]
#
#         values.update({
#             'date': date_begin,
#             'saless': saless,
#             'page_name': 'bphtb',
#             'pager': pager,
#             'searchbar_sortings': searchbar_sortings,
#             'sortby': sortby,
#             'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())),
#             'filterby': filterby,
#             'default_url': '/my/bphtb',
#         })
#         return request.render("idg_bphtb.portal_my_bphtb_saless", values)
#
#     @http.route(['/my/bphtb/<int:sales_id>'], type='http', auth="public", website=True)
#     def portal_my_bphtb_sales(self, sales_id=None, access_token=None, **kw):
#         try:
#             order_sudo = self._document_check_access('bphtb.sales', sales_id,
#                                                      access_token=access_token)
#         except (AccessError, MissingError):
#             return request.redirect('/my')
#
#         report_type = kw.get('report_type')
#         if report_type in ('html', 'pdf', 'text'):
#             return self._show_report(model=order_sudo, report_type=report_type,
#                                      report_ref='idg_bphtb.action_report_bphtb_sspd',
#                                      download=kw.get('download'))
#
#         confirm_type = kw.get('confirm')
#         if confirm_type == 'reminder':
#             order_sudo.confirm_reminder_mail(kw.get('confirmed_date'))
#         if confirm_type == 'reception':
#             order_sudo._confirm_reception_mail()
#
#         values = self._bphtb_sales_get_page_view_values(order_sudo, access_token, **kw)
#         update_date = kw.get('update')
#         if order_sudo.company_id:
#             values['res_company'] = order_sudo.company_id
#         if update_date == 'True':
#             return request.render("idg_bphtb.portal_my_bphtb_sales_update_date", values)
#         return request.render("idg_bphtb.portal_my_bphtb_sales", values)
#
#     @http.route(['/my/bphtb/<int:sales_id>/update'], type='http',
#                 methods=['POST'], auth="public", website=True)
#     def portal_my_bphtb_sales_update_dates(self, sales_id=None, access_token=None, **kw):
#         """User update scheduled date on bphtb order line.
#         """
#         try:
#             order_sudo = self._document_check_access('bphtb.sales', sales_id, access_token=access_token)
#         except (AccessError, MissingError):
#             return request.redirect('/my')
#
#         updated_dates = []
#         for id_str, date_str in kw.items():
#             try:
#                 line_id = int(id_str)
#             except ValueError:
#                 return request.redirect(order_sudo.get_portal_url())
#             order_sudo.write({
#                                  "date": datetime.strptime(date_str, '%Y-%m-%d'),
#                                  "state": "confirmed"
#                              })
#             # line = order_sudo.order_line.filtered(lambda l: l.id == line_id)
#             # if not line:
#             #     return request.redirect(order_sudo.get_portal_url())
#
#             # try:
#             #     updated_date = line._convert_to_middle_of_day(
#             #         datetime.strptime(date_str, '%Y-%m-%d'))
#             # except ValueError:
#             #     continue
#             #
#             # updated_dates.append((line, updated_date))
#         #
#         # if updated_dates:
#         #     order_sudo._update_date_planned_for_lines(updated_dates)
#         return Response(status=204)