Skip to content
This repository has been archived by the owner on Apr 23, 2024. It is now read-only.

Commit

Permalink
Fix tracking time for chores, tasks and batteries
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelvriend committed Sep 24, 2022
1 parent d75a8eb commit fc3c029
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
6 changes: 3 additions & 3 deletions pygrocy/grocy.py
Expand Up @@ -125,7 +125,7 @@ def execute_chore(
self,
chore_id: int,
done_by: int = None,
tracked_time: datetime = datetime.now(),
tracked_time: datetime = None,
skipped: bool = False,
):
return self._api_client.execute_chore(chore_id, done_by, tracked_time, skipped)
Expand Down Expand Up @@ -326,7 +326,7 @@ def task(self, task_id: int) -> Task:
resp = self._api_client.get_task(task_id)
return Task(resp)

def complete_task(self, task_id, done_time: datetime = datetime.now()):
def complete_task(self, task_id, done_time: datetime = None):
return self._api_client.complete_task(task_id, done_time)

def meal_plan(
Expand Down Expand Up @@ -361,7 +361,7 @@ def battery(self, battery_id: int) -> Battery:
if battery:
return Battery(battery)

def charge_battery(self, battery_id: int, tracked_time: datetime = datetime.now()):
def charge_battery(self, battery_id: int, tracked_time: datetime = None):
return self._api_client.charge_battery(battery_id, tracked_time)

def add_generic(self, entity_type: EntityType, data):
Expand Down
23 changes: 16 additions & 7 deletions pygrocy/grocy_api_client.py
Expand Up @@ -11,7 +11,7 @@
from pydantic.schema import date

from pygrocy import EntityType
from pygrocy.utils import localize_datetime, parse_date
from pygrocy.utils import grocy_datetime_str, localize_datetime, parse_date

from .errors import GrocyError

Expand Down Expand Up @@ -453,13 +453,16 @@ def execute_chore(
self,
chore_id: int,
done_by: int = None,
tracked_time: datetime = datetime.now(),
tracked_time: datetime = None,
skipped: bool = False,
):
if tracked_time is None:
tracked_time = datetime.now()

localized_tracked_time = localize_datetime(tracked_time)

data = {
"tracked_time": localized_tracked_time.isoformat(),
"tracked_time": grocy_datetime_str(localized_tracked_time),
"skipped": skipped,
}

Expand Down Expand Up @@ -733,12 +736,15 @@ def get_task(self, task_id: int) -> TaskResponse:
parsed_json = self._do_get_request(url)
return TaskResponse(**parsed_json)

def complete_task(self, task_id: int, done_time: datetime = datetime.now()):
def complete_task(self, task_id: int, done_time: datetime = None):
url = f"tasks/{task_id}/complete"

if done_time is None:
done_time = datetime.now()

localized_done_time = localize_datetime(done_time)

data = {"done_time": localized_done_time.isoformat()}
data = {"done_time": grocy_datetime_str(localized_done_time)}
self._do_post_request(url, data)

def get_meal_plan(self, query_filters: List[str] = None) -> List[MealPlanResponse]:
Expand All @@ -765,9 +771,12 @@ def get_battery(self, battery_id: int) -> BatteryDetailsResponse:
if parsed_json:
return BatteryDetailsResponse(**parsed_json)

def charge_battery(self, battery_id: int, tracked_time: datetime = datetime.now()):
def charge_battery(self, battery_id: int, tracked_time: datetime = None):
if tracked_time is None:
tracked_time = datetime.now()

localized_tracked_time = localize_datetime(tracked_time)
data = {"tracked_time": localized_tracked_time.isoformat()}
data = {"tracked_time": grocy_datetime_str(localized_tracked_time)}

return self._do_post_request(f"batteries/{battery_id}/charge", data)

Expand Down
6 changes: 6 additions & 0 deletions pygrocy/utils.py
Expand Up @@ -37,3 +37,9 @@ def parse_bool_int(input_value):

def localize_datetime(timestamp: datetime) -> datetime:
return timestamp.astimezone()


def grocy_datetime_str(timestamp: datetime) -> str:
if timestamp is None:
return ""
return timestamp.strftime("%Y-%m-%d %H:%M:%S")
6 changes: 6 additions & 0 deletions test/test_utils.py
Expand Up @@ -97,3 +97,9 @@ def test_localize_datetime_input_timezone_aware(self):
633809,
tzinfo=zoneinfo.ZoneInfo("America/Los_Angeles"),
)

def test_grocy_datetime_str(self):
date = datetime(2022, 7, 10, 21, 17, 34, 633809, tzinfo=None)
date_str = utils.grocy_datetime_str(date)

assert date_str == "2022-07-10 21:17:34"

0 comments on commit fc3c029

Please sign in to comment.