def remove_write_permission(self, email): service = get_service() for rule in self.all_rules(): if rule['scope']['type'] == 'user' and rule['scope'][ 'value'] == email: service.acl().delete(calendarId=self.gcal_id, ruleId=rule['id'])
def delete_cal(self): if self.cal_made(): #print('DELETING', self.name) service = get_service() calendar_id = self.gcal_id service.calendars().delete(calendarId=calendar_id).execute() self.gcal_id = NO_CAL_SIGNAL self.save() return True return False
def grant_write_permission(self, email): service = get_service() rule = { 'scope': { 'type': 'user', 'value': email, }, 'role': 'writer', } return service.acl().insert(calendarId=self.gcal_id, body=rule).execute()['id']
def all_rules(self): service = get_service() page_token = None while True: resp = service.acl().list( calendarId=self.gcal_id, pageToken=page_token, ).execute() yield from resp['items'] page_token = resp.get('nextPageToken') if not page_token: break
def events_within(self, starttime, endtime=None): if endtime is None: endtime = starttime + datetime.timedelta(hours=24) service = get_service() page_token = None while True: resp = service.events().list( calendarId=self.gcal_id, pageToken=page_token, timeMin=starttime.isoformat(), timeMax=endtime.isoformat(), singleEvents=True, ).execute() yield from resp['items'] page_token = resp.get('nextPageToken') if not page_token: break
def make_cal(self, cal_timezone=settings.TIME_ZONE): if self.cal_made(): print("found cal ", self.gcal_id) return False else: calendar = {'summary': self.name, 'timeZone': cal_timezone} service = get_service() created_calendar = service.calendars().insert( body=calendar).execute() self.gcal_id = created_calendar['id'] self.save() rule = { 'scope': { 'type': 'default', }, 'role': 'reader' } created_rule = service.acl().insert(calendarId=self.gcal_id, body=rule).execute() return True