This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/resources/reports/reports.py

40 lines
1.0 KiB
Python

from typing import Set
from sqlalchemy import func
from ereuse_devicehub.db import db
from ereuse_devicehub.resources.device.models import Device
from ereuse_devicehub.resources.event.models import Price, Event, Trade
ids = {1,2,3}
def export(devices_id: Set[str]):
# todo get the last event of device
last_event = Event.end_time.
devices = Device.id.in_(ids)
total_value_query = db.session.query(Price, func.sum(Price.price).label('total'))\
.filter(devices)\
.join(Price.device)\
.filter(last_event)
# todo hacer query para obtener el price
query(func.max(end_time)).join(Price.devices).filter(Device_id==id).ordey_by(Price.end_time).limit()
total_price_query = query()
value = total_value_query.one()
value['total']
#
db.session.query(Price, (Price.price / total_value_query).label('asdfas'))
trade_orgs_q = db.session.query(Trade, func.sum(Trade.org_id)).filter(devices).join(Trade.devices).filter(last_event)
# execute query
value = trade_orgs_q.scalar()