diff --git a/sync_ics2gcal/manage_calendars.py b/sync_ics2gcal/manage_calendars.py index c95b24d..99e4365 100644 --- a/sync_ics2gcal/manage_calendars.py +++ b/sync_ics2gcal/manage_calendars.py @@ -12,7 +12,13 @@ def parse_args(): parser = argparse.ArgumentParser( description="manage google calendars in service account") command_subparsers = parser.add_subparsers(help='command', dest='command') - command_subparsers.add_parser('list', help='list calendars') + # list + parser_list = command_subparsers.add_parser('list', help='list calendars') + parser_list.add_argument( + '--show-hidden', default=False, action='store_true', help='show hidden calendars') + parser_list.add_argument( + '--show-deleted', default=False, action='store_true', help='show deleted calendars') + # create parser_create = command_subparsers.add_parser( 'create', help='create calendar') parser_create.add_argument( @@ -21,36 +27,41 @@ def parse_args(): default=None, required=False, help='new calendar timezone') parser_create.add_argument( '--public', default=False, action='store_true', help='make calendar public') + # add_owner parser_add_owner = command_subparsers.add_parser( 'add_owner', help='add owner to calendar') parser_add_owner.add_argument('id', action='store', help='calendar id') parser_add_owner.add_argument( 'owner_email', action='store', help='new owner email') + # remove parser_remove = command_subparsers.add_parser( 'remove', help='remove calendar') parser_remove.add_argument( 'id', action='store', help='calendar id to remove') + # rename parser_rename = command_subparsers.add_parser( 'rename', help='rename calendar') parser_rename.add_argument( 'id', action='store', help='calendar id') parser_rename.add_argument( 'summary', action='store', help='new summary') + # get parser_get = command_subparsers.add_parser( 'get', help='get calendar property') parser_get.add_argument( 'id', action='store', help='calendar id') parser_get.add_argument( 'property', action='store', help='property key') - parser_get = command_subparsers.add_parser( + # set + parser_set = command_subparsers.add_parser( 'set', help='set calendar property') - parser_get.add_argument( + parser_set.add_argument( 'id', action='store', help='calendar id') - parser_get.add_argument( + parser_set.add_argument( 'property', action='store', help='property key') - parser_get.add_argument( + parser_set.add_argument( 'property_value', action='store', help='property value') - + args = parser.parse_args() if args.command is None: parser.print_usage() @@ -64,20 +75,23 @@ def load_config(): result = yaml.safe_load(f) except FileNotFoundError: pass - + return result -def list_calendars(service): +def list_calendars(service, show_hidden, show_deleted): calendars = [] page_token = None while True: - response = service.calendarList().list(fields='nextPageToken,items(id,summary)', pageToken=page_token).execute() + response = service.calendarList().list(fields='nextPageToken,items(id,summary)', + pageToken=page_token, + showHidden=show_hidden, + showDeleted=show_deleted).execute() if 'items' in response: - calendars.extend(response['items']) - page_token = response.get('nextPageToken') - if not page_token: - break + calendars.extend(response['items']) + page_token = response.get('nextPageToken') + if not page_token: + break for calendar in calendars: print('{summary}: {id}'.format_map(calendar)) @@ -101,20 +115,24 @@ def remove_calendar(service, id): calendar.delete() print('removed: {}'.format(id)) + def rename_calendar(service, id, summary): calendar = {'summary': summary} service.calendars().patch(body=calendar, calendarId=id).execute() print('{}: {}'.format(summary, id)) + def get_calendar_property(service, id, property): response = service.calendarList().get(calendarId=id, fields=property).execute() print(response.get(property)) + def set_calendar_property(service, id, property, property_value): body = {property: property_value} response = service.calendarList().patch(body=body, calendarId=id).execute() print(response) + def main(): args = parse_args() config = load_config() @@ -125,7 +143,7 @@ def main(): service = GoogleCalendarService.from_config(config) if 'list' == args.command: - list_calendars(service) + list_calendars(service, args.show_hidden, args.show_deleted) elif 'create' == args.command: create_calendar(service, args.summary, args.timezone, args.public) elif 'add_owner' == args.command: @@ -137,7 +155,9 @@ def main(): elif 'get' == args.command: get_calendar_property(service, args.id, args.property) elif 'set' == args.command: - set_calendar_property(service, args.id, args.property, args.property_value) + set_calendar_property( + service, args.id, args.property, args.property_value) + if __name__ == '__main__': main()