mirror of
https://github.com/b4tman/sync_ics2gcal
synced 2025-02-01 12:28:29 +00:00
add manage calendars script
This commit is contained in:
parent
f7c06ca935
commit
6cf4888c72
87
manage-calendars.py
Normal file
87
manage-calendars.py
Normal file
@ -0,0 +1,87 @@
|
||||
import argparse
|
||||
import datetime
|
||||
import logging.config
|
||||
|
||||
import yaml
|
||||
from pytz import utc
|
||||
|
||||
from gcal_sync import GoogleCalendar, GoogleCalendarService
|
||||
|
||||
|
||||
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')
|
||||
parser_create = command_subparsers.add_parser(
|
||||
'create', help='create calendar')
|
||||
parser_create.add_argument(
|
||||
'summary', action='store', help='new calendar summary')
|
||||
parser_create.add_argument('--timezone', action='store',
|
||||
default=None, required=False, help='new calendar timezone')
|
||||
parser_create.add_argument(
|
||||
'--public', default=False, action='store_true', help='make calendar public')
|
||||
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')
|
||||
parser_remove = command_subparsers.add_parser(
|
||||
'remove', help='remove calendar')
|
||||
parser_remove.add_argument(
|
||||
'id', action='store', help='calendar id to remove')
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def load_config():
|
||||
with open('config.yml', 'r', encoding='utf-8') as f:
|
||||
result = yaml.load(f)
|
||||
return result
|
||||
|
||||
|
||||
def list_calendars(service):
|
||||
response = service.calendarList().list(fields='items(id,summary)').execute()
|
||||
for calendar in response.get('items'):
|
||||
print('{summary}: {id}'.format_map(calendar))
|
||||
|
||||
|
||||
def create_calendar(service, summary, timezone, public):
|
||||
calendar = GoogleCalendar(service, None)
|
||||
calendar.create(summary, timezone)
|
||||
if public:
|
||||
calendar.make_public()
|
||||
print('{}: {}'.format(summary, calendar.calendarId))
|
||||
|
||||
|
||||
def add_owner(service, id, owner_email):
|
||||
calendar = GoogleCalendar(service, id)
|
||||
calendar.add_owner(owner_email)
|
||||
print('to {} added owner: {}'.format(id, owner_email))
|
||||
|
||||
|
||||
def remove_calendar(service, id):
|
||||
calendar = GoogleCalendar(service, id)
|
||||
calendar.delete()
|
||||
print('removed: {}'.format(id))
|
||||
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
config = load_config()
|
||||
|
||||
if 'logging' in config:
|
||||
logging.config.dictConfig(config['logging'])
|
||||
|
||||
srv_acc_file = config['service_account']
|
||||
service = GoogleCalendarService.from_srv_acc_file(srv_acc_file)
|
||||
|
||||
if 'list' == args.command:
|
||||
list_calendars(service)
|
||||
elif 'create' == args.command:
|
||||
create_calendar(service, args.summary, args.timezone, args.public)
|
||||
elif 'remove' == args.command:
|
||||
remove_calendar(service, args.id)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
x
Reference in New Issue
Block a user