diff options
Diffstat (limited to 'calendar-cli.py')
-rwxr-xr-x | calendar-cli.py | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/calendar-cli.py b/calendar-cli.py index b08eb19..d138fd1 100755 --- a/calendar-cli.py +++ b/calendar-cli.py @@ -2,7 +2,7 @@ """ calendar-cli.py - high-level cli against caldav servers -Copyright (C) 2013-2019 Tobias Brox and other contributors +Copyright (C) 2013-2020 Tobias Brox and other contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -149,9 +149,12 @@ def find_calendar(caldav_conn, args): if '/' in args.calendar_url: return caldav.Calendar(client=caldav_conn, url=args.calendar_url) else: - return caldav.Principal(caldav_conn).calendar(name=args.calendar_url) + return caldav.Principal(caldav_conn).calendar(cal_id=args.calendar_url) else: ## Find default calendar + calendars = caldav.Principal(caldav_conn).calendars() + if not calendars: + sys.stderr.write("no calendar url given and no default calendar found - can't proceed. You will need to create a calendar first") return caldav.Principal(caldav_conn).calendars()[0] def _calendar_addics(caldav_conn, ics, uid, args): @@ -523,6 +526,16 @@ def calendar_agenda(caldav_conn, args): event[attr] = to_normal_str(event[attr]) print(args.event_template.format(**event)) +def create_calendar(caldav_conn, args): + cal_obj = caldav.Principal(caldav_conn).make_calendar(cal_id=args.cal_id) + if cal_obj: + print("Created a calendar with id " + args.cal_id) + +def create_tasklist(caldav_conn, args): + cal_obj = caldav.Principal(caldav_conn).make_calendar(cal_id=args.cal_id, supported_calendar_component_set=['VTODO']) + if cal_obj: + print("Created a task list with id " + args.tasklist_id) + def todo_select(caldav_conn, args): if args.top+args.limit+args.offset+args.offsetn and args.todo_uid: raise ValueError("It doesn't make sense to combine --todo-uid with --top/--limit/--offset/--offsetn") @@ -832,6 +845,10 @@ def main(): #todo_parser.add_argument('--due-before', ....) todo_parser.set_defaults(print_help=todo_parser.print_help) todo_subparsers = todo_parser.add_subparsers(title='tasks subcommand') + todo_create_parser = todo_subparsers.add_parser('createlist') + todo_create_parser.add_argument('tasklist_id') + todo_create_parser.set_defaults(func=create_tasklist) + todo_add_parser = todo_subparsers.add_parser('add') todo_add_parser.add_argument('summaryline', nargs='+') todo_add_parser.add_argument('--set-dtstart', default=date.today()+timedelta(1)) @@ -883,6 +900,11 @@ def main(): calendar_parser = subparsers.add_parser('calendar') calendar_parser.set_defaults(print_help=calendar_parser.print_help) calendar_subparsers = calendar_parser.add_subparsers(title='cal subcommand') + + calendar_create_parser = calendar_subparsers.add_parser('create') + calendar_create_parser.add_argument('cal_id') + calendar_create_parser.set_defaults(func=create_calendar) + calendar_add_parser = calendar_subparsers.add_parser('add') calendar_add_parser.add_argument('event_time', help="Timestamp and duration of the event. See the documentation for event_time specifications") calendar_add_parser.add_argument('summary', nargs='+') |