Module pygrocy.data_models.battery

Expand source code
from datetime import datetime

from pygrocy.base import DataModel
from pygrocy.grocy_api_client import (
    BatteryDetailsResponse,
    CurrentBatteryResponse,
    GrocyApiClient,
)


class Battery(DataModel):
    def __init__(self, response):
        self._init_empty()

        self._next_estimated_charge_time = response.next_estimated_charge_time

        if isinstance(response, CurrentBatteryResponse):
            self._init_from_CurrentBatteryResponse(response)
        elif isinstance(response, BatteryDetailsResponse):
            self._init_from_BatteryDetailsResponse(response)

    def _init_from_CurrentBatteryResponse(self, response: CurrentBatteryResponse):
        self._id = response.id
        self._last_tracked_time = response.last_tracked_time

    def _init_from_BatteryDetailsResponse(self, response: BatteryDetailsResponse):
        self._charge_cycles_count = response.charge_cycles_count
        self._last_charged = response.last_charged
        self._last_tracked_time = response.last_charged  # For compatibility
        self._id = response.battery.id
        self._name = response.battery.name
        self._description = response.battery.description
        self._used_in = response.battery.used_in
        self._charge_interval_days = response.battery.charge_interval_days
        self._created_timestamp = response.battery.created_timestamp
        self._userfields = response.battery.userfields

    def _init_empty(self):
        self._last_tracked_time = None
        self._charge_cycles_count = None
        self._last_charged = None
        self._name = None
        self._description = None
        self._used_in = None
        self._charge_interval_days = None
        self._created_timestamp = None
        self._userfields = None

    def get_details(self, api_client: GrocyApiClient):
        details = api_client.get_battery(self._id)
        self._init_from_BatteryDetailsResponse(details)

    @property
    def id(self) -> int:
        return self._id

    @property
    def name(self) -> str:
        return self._name

    @property
    def description(self) -> str:
        return self._description

    @property
    def used_in(self) -> str:
        return self._used_in

    @property
    def charge_interval_days(self) -> int:
        return self._charge_interval_days

    @property
    def created_timestamp(self) -> datetime:
        return self._created_timestamp

    @property
    def charge_cycles_count(self) -> int:
        return self._charge_cycles_count

    @property
    def userfields(self):
        return self._userfields

    @property
    def last_charged(self) -> datetime:
        return self._last_charged

    @property
    def last_tracked_time(self) -> datetime:
        return self._last_tracked_time

    @property
    def next_estimated_charge_time(self) -> datetime:
        return self._next_estimated_charge_time

Classes

class Battery (response)
Expand source code
class Battery(DataModel):
    def __init__(self, response):
        self._init_empty()

        self._next_estimated_charge_time = response.next_estimated_charge_time

        if isinstance(response, CurrentBatteryResponse):
            self._init_from_CurrentBatteryResponse(response)
        elif isinstance(response, BatteryDetailsResponse):
            self._init_from_BatteryDetailsResponse(response)

    def _init_from_CurrentBatteryResponse(self, response: CurrentBatteryResponse):
        self._id = response.id
        self._last_tracked_time = response.last_tracked_time

    def _init_from_BatteryDetailsResponse(self, response: BatteryDetailsResponse):
        self._charge_cycles_count = response.charge_cycles_count
        self._last_charged = response.last_charged
        self._last_tracked_time = response.last_charged  # For compatibility
        self._id = response.battery.id
        self._name = response.battery.name
        self._description = response.battery.description
        self._used_in = response.battery.used_in
        self._charge_interval_days = response.battery.charge_interval_days
        self._created_timestamp = response.battery.created_timestamp
        self._userfields = response.battery.userfields

    def _init_empty(self):
        self._last_tracked_time = None
        self._charge_cycles_count = None
        self._last_charged = None
        self._name = None
        self._description = None
        self._used_in = None
        self._charge_interval_days = None
        self._created_timestamp = None
        self._userfields = None

    def get_details(self, api_client: GrocyApiClient):
        details = api_client.get_battery(self._id)
        self._init_from_BatteryDetailsResponse(details)

    @property
    def id(self) -> int:
        return self._id

    @property
    def name(self) -> str:
        return self._name

    @property
    def description(self) -> str:
        return self._description

    @property
    def used_in(self) -> str:
        return self._used_in

    @property
    def charge_interval_days(self) -> int:
        return self._charge_interval_days

    @property
    def created_timestamp(self) -> datetime:
        return self._created_timestamp

    @property
    def charge_cycles_count(self) -> int:
        return self._charge_cycles_count

    @property
    def userfields(self):
        return self._userfields

    @property
    def last_charged(self) -> datetime:
        return self._last_charged

    @property
    def last_tracked_time(self) -> datetime:
        return self._last_tracked_time

    @property
    def next_estimated_charge_time(self) -> datetime:
        return self._next_estimated_charge_time

Ancestors

Instance variables

var charge_cycles_count : int
Expand source code
@property
def charge_cycles_count(self) -> int:
    return self._charge_cycles_count
var charge_interval_days : int
Expand source code
@property
def charge_interval_days(self) -> int:
    return self._charge_interval_days
var created_timestamp : datetime.datetime
Expand source code
@property
def created_timestamp(self) -> datetime:
    return self._created_timestamp
var description : str
Expand source code
@property
def description(self) -> str:
    return self._description
var id : int
Expand source code
@property
def id(self) -> int:
    return self._id
var last_charged : datetime.datetime
Expand source code
@property
def last_charged(self) -> datetime:
    return self._last_charged
var last_tracked_time : datetime.datetime
Expand source code
@property
def last_tracked_time(self) -> datetime:
    return self._last_tracked_time
var name : str
Expand source code
@property
def name(self) -> str:
    return self._name
var next_estimated_charge_time : datetime.datetime
Expand source code
@property
def next_estimated_charge_time(self) -> datetime:
    return self._next_estimated_charge_time
var used_in : str
Expand source code
@property
def used_in(self) -> str:
    return self._used_in
var userfields
Expand source code
@property
def userfields(self):
    return self._userfields

Methods

def get_details(self, api_client: GrocyApiClient)
Expand source code
def get_details(self, api_client: GrocyApiClient):
    details = api_client.get_battery(self._id)
    self._init_from_BatteryDetailsResponse(details)