Skip to content

Commit

Permalink
caldav: Convert CREATED, COMPLETED fields from vtodo item
Browse files Browse the repository at this point in the history
  • Loading branch information
bergercookie committed Dec 31, 2023
1 parent fc54691 commit afe2789
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 27 deletions.
2 changes: 1 addition & 1 deletion syncall/aggregator.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def __init__(
resolution_strategy: ResolutionStrategy = AlwaysSecondRS(),
config_fname: Optional[str] = None,
ignore_keys: Tuple[Sequence[str], Sequence[str]] = tuple(),
catch_exceptions: bool = False
catch_exceptions: bool = False,
):
# Preferences manager
# Sample config path: ~/.config/syncall/taskwarrior_gcal_sync.yaml
Expand Down
10 changes: 3 additions & 7 deletions syncall/caldav/caldav_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,9 @@ def _convert_one(name: str) -> str:
for name in ["description", "summary"]:
todo_item[name] = _convert_one(name)

for name in ["last-modified"]:
item = vtodo.get(name)
if item:
todo_item[name] = item.dt

if vtodo.get("due"):
todo_item["due"] = vtodo["due"].dt
for date_field in ("due", "created", "completed", "last-modified"):
if vtodo.get(date_field):
todo_item[date_field] = vtodo[date_field].dt

vcategories = vtodo.get("categories")
if vcategories is not None:
Expand Down
16 changes: 9 additions & 7 deletions syncall/scripts/tw_caldav_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
import caldav
import click
from bubop import (
ExitHooks,
check_optional_mutually_exclusive,
check_required_mutually_exclusive,
format_dict,
logger,
loguru_tqdm_sink,
ExitHooks,
)

from syncall import inform_about_app_extras
Expand Down Expand Up @@ -118,12 +118,14 @@ def main(
)

check_optional_mutually_exclusive(combination_name, custom_combination_savename)
combination_of_tw_project_tags_and_caldav_calendar = any([
tw_project,
tw_tags,
tw_sync_all_tasks,
caldav_calendar,
])
combination_of_tw_project_tags_and_caldav_calendar = any(
[
tw_project,
tw_tags,
tw_sync_all_tasks,
caldav_calendar,
]
)
check_optional_mutually_exclusive(
combination_name, combination_of_tw_project_tags_and_caldav_calendar
)
Expand Down
3 changes: 1 addition & 2 deletions syncall/taskwarrior/taskw_duration.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ def convert_tw_duration_to_timedelta(

item[tw_duration_key] = duration


def convert_tw_duration_serialize(
item: TaskwarriorRawItem, default_duration=datetime.timedelta(hours=1)
) -> None:
Expand All @@ -149,6 +150,4 @@ def convert_tw_duration_serialize(
else:
duration = default_duration


item[tw_duration_key] = taskw_duration_serialize(value=duration)

2 changes: 1 addition & 1 deletion syncall/taskwarrior/taskwarrior_side.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@

from syncall.sync_side import ItemType, SyncSide
from syncall.taskwarrior.taskw_duration import (
convert_tw_duration_to_timedelta,
convert_tw_duration_serialize,
convert_tw_duration_to_timedelta,
tw_duration_key,
)
from syncall.types import TaskwarriorRawItem
Expand Down
20 changes: 11 additions & 9 deletions syncall/tw_gcal_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
from item_synchronizer.types import Item

from syncall.google.gcal_side import GCalSide
from syncall.taskwarrior.taskw_duration import convert_tw_duration_to_timedelta
from syncall.taskwarrior.taskw_duration import taskw_duration_serialize
from syncall.taskwarrior.taskw_duration import tw_duration_key
from syncall.taskwarrior.taskw_duration import (
convert_tw_duration_to_timedelta,
taskw_duration_serialize,
tw_duration_key,
)
from syncall.tw_utils import (
extract_tw_fields_from_string,
get_tw_annotations_as_str,
Expand Down Expand Up @@ -40,9 +42,9 @@ def _add_success_prefix(gcal_item: Item):


def _add_failed_prefix(gcal_item: Item):
gcal_item["summary"] = (
f'{_prefix_title_failed_str}{gcal_item["summary"][len(_failed_str)+1:]}'
)
gcal_item[
"summary"
] = f'{_prefix_title_failed_str}{gcal_item["summary"][len(_failed_str)+1:]}'


def convert_tw_to_gcal(
Expand All @@ -64,9 +66,9 @@ def convert_tw_to_gcal(

# description
gcal_item["description"] = "IMPORTED FROM TASKWARRIOR\n"
gcal_item["description"] += "\n".join([
get_tw_annotations_as_str(tw_item), get_tw_status_and_uuid_as_str(tw_item)
])
gcal_item["description"] += "\n".join(
[get_tw_annotations_as_str(tw_item), get_tw_status_and_uuid_as_str(tw_item)]
)

date_keys = ["scheduled", "due"] if prefer_scheduled_date else ["due", "scheduled"]
# event duration --------------------------------------------------------------------------
Expand Down

0 comments on commit afe2789

Please sign in to comment.