Sélectionner une révision Git
scop_federation_activity.py
main.py 4,13 Kio
# Copyright 2023 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import _, http
from odoo.http import request
# from odoo.addons.portal.controllers.portal import CustomerPortal as CustomerPortal
from odoo.addons.oacc_portal.controllers.main import CustomerPortal as CustomerPortal
class CustomerPortal(CustomerPortal):
def _get_data_date(self, is_data_cdc, operation=None):
vals = {}
# Si des données existent, récupérer les dates min/max/début/fin de l'opération
if is_data_cdc:
vals["data_values"] = operation.get_values_init_graph()
else:
vals["data_values"] = {
"date_day_start": False,
"date_day_end": False,
"date_week_start": False,
"date_week_end": False,
"date_month_start": False,
"date_month_end": False,
"date_year_start": False,
"date_year_end": False,
}
vals["data_values"].update(operation.get_date_min_max())
return vals
@http.route(
['/operation/<model("acc.operation"):operation>/pmo'],
type="http",
auth="user",
website=True,
)
def pmo(self, operation, **kw):
render_values = self._get_operation_values(operation)
render_values.update(
self._get_data_date(render_values.get("isDataCdc"), operation)
)
render_values.update(
{
"page_name": "pmo-view",
"page_breadcrumbs": "Vue globale",
"scale": "month",
}
)
return request.render("oacc_portal_overview_cdc.operation_pmo", render_values)
@http.route(
['/operation/<model("acc.operation"):operation>/consumer'],
type="http",
auth="user",
website=True,
)
def consumer(self, operation, **kw):
render_values = self._get_operation_values(operation)
render_values.update(
self._get_data_date(render_values.get("isDataCdc"), operation)
)
partner_ids = operation.acc_delivery_ids.mapped("partner_id").sorted(
key=lambda p: p.name
)
render_values.update(
{
"partners": partner_ids,
"page_name": "conso",
"page_breadcrumbs": "Suivi consommation",
"scale": "month",
}
)
return request.render(
"oacc_portal_overview_cdc.operation_consumer", render_values
)
@http.route(
['/operation/<model("acc.operation"):operation>/productor',],
type="http",
auth="user",
website=True,
)
def productor(self, operation, **kw):
render_values = self._get_operation_values(operation)
render_values.update(
self._get_data_date(render_values.get("isDataCdc"), operation)
)
partner_ids = operation.acc_injection_ids.mapped("partner_id").sorted(
key=lambda p: p.name
)
render_values.update(
{
"partners": partner_ids,
"page_name": "prod",
"page_breadcrumbs": "Suivi production",
"scale": "month",
}
)
return request.render(
"oacc_portal_overview_cdc.operation_productor", render_values
)
@http.route(
["/chart/update_json"],
type="json", auth="public", methods=["POST"], website=True, csrf=False,
)
def chart_update_json(
self,
operation_id,
partner_id=None,
prm_id=None,
date_start=None,
date_end=None,
data_type=None,
**kw,
):
"""
This route is called :
- When click on button period
- When click on a consumer, a productor or a PRM
- When click on date range
"""
operation = request.env["acc.operation"].browse(operation_id)
vals = operation.graph_view_global(
date_start, date_end, partner_id, prm_id, data_type
)
return vals