def login(email, password): client = CalendarService() client.email = email client.password = password client.source = 'github-gnome_shell_google_calendar-0.1' client.ProgrammaticLogin() return client
class EntryManager(gdata.calendar.CalendarEventEntry): ''' classdocs ''' def __init__(self, email, password): CalendarEventEntry.__init__(self) self.calendar_service = CalendarService() self.calendar_service.email = email self.calendar_service.password = password self.calendar_service.source = 'Google-Calendar_Python_Sample-1.0' try: self.calendar_service.ProgrammaticLogin() except: self.calendar_service = None def insert_single_event(self, title, start_time=None, end_time=None): self.title = atom.Title(text=title) start_strtime = time.strftime('%Y-%m-%dT%H:%M:%S', start_time.timetuple()) end_strtime = time.strftime('%Y-%m-%dT%H:%M:%S', end_time.timetuple()) self.when.append( gdata.calendar.When(start_time=start_strtime, end_time=end_strtime)) if self.calendar_service != None: try: new_event = self.calendar_service.InsertEvent( self, '/calendar/feeds/default/private/full') return new_event except: return None else: return None
class CalendarObserver(object): """ """ DEFAULT_FEED = '/calendar/feeds/default/private/full' def __init__(self, feed=DEFAULT_FEED, service=None): """ Initialize an instance of the CalendarObserver class. """ self.adapters = {} self.feed = feed self.service = service def observe(self, model, adapter): """ Establishes a connection between the model and Google Calendar, using adapter to transform data. """ self.adapters[model] = adapter signals.post_save.connect(self.on_update, sender=model) signals.post_delete.connect(self.on_delete, sender=model) def observe_related(self, model, related, selector): """ Updates the Google Calendar entry for model when the related model is changed or deleted. Selector should be a function object which accepts an instance of related as a parameter and returns an instance of type model. """ def on_related_update(**kwargs): self.update(model, selector(kwargs['instance'])) signals.post_save.connect(on_related_update, sender=related, weak=False) signals.post_delete.connect(on_related_update, sender=related, weak=False) def on_update(self, **kwargs): """ Called by Django's signal mechanism when an observed model is updated. """ self.update(kwargs['sender'], kwargs['instance']) def on_delete(self, **kwargs): """ Called by Django's signal mechanism when an observed model is deleted. """ self.delete(kwargs['sender'], kwargs['instance']) def get_service(self, email, password): """ Get an authenticated gdata.calendar.service.CalendarService instance. """ if self.service is None: self.service = CalendarService(email=email, password=password) self.service.ProgrammaticLogin() return self.service def get_event(self, service, instance): """ Retrieves the specified event from Google Calendar, or returns None if the retrieval fails. """ event_id = CalendarEvent.objects.get_event_id(instance, self.feed) try: event = service.GetCalendarEventEntry(event_id) except Exception: event = None return event def update(self, sender, instance, retry=False): """ Update or create an entry in Google Calendar for the given instance of the sender model type. """ adapter = self.adapters[sender] email, password = adapter.get_username_password(instance) if adapter.can_save(instance): service = self.get_service(email, password) event = self.get_event(service, instance) or CalendarEventEntry() adapter.get_event_data(instance).populate_event(event) if adapter.can_notify(instance): event.send_event_notifications = SendEventNotifications( value='true') if event.GetEditLink(): try: service.UpdateEvent(event.GetEditLink().href, event) except RequestError: if not retry: self.service = None self.update(sender, instance, retry=True) else: raise else: new_event = service.InsertEvent(event, self.feed) CalendarEvent.objects.set_event_id(instance, self.feed, new_event.id.text) def delete(self, sender, instance): """ Delete the entry in Google Calendar corresponding to the given instance of the sender model type. """ adapter = self.adapters[sender] email, password = adapter.get_username_password(instance) if adapter.can_delete(instance): service = self.get_service(email, password) event = self.get_event(service, instance) if event: if adapter.can_notify(instance): event.send_event_notifications = SendEventNotifications( value='true') service.DeleteEvent(event.GetEditLink().href) CalendarEvent.objects.delete_event_id(instance, self.feed)
def get(self): variables = { 'url': decorator.authorize_url(), 'has_credentials': decorator.has_credentials() } template = JINJA_ENVIRONMENT.get_template('main.html') self.response.write(template.render(variables)) if decorator.has_credentials(): service = build('calendar', 'v3', http=decorator.http()) http = decorator.http() # Build a service object for interacting with the API. Visit # the Google Cloud Console # to get a developerKey for your own application. #service = build(serviceName='calendar', version='v3', http=http,developerKey='YOUR_DEVELOPER_KEY') module_name = 'Tasks' authtoken = '7b64e8f8c6a3039b0e8199e02cdcca6b' params = {'authtoken': authtoken, 'scope': 'crmapi'} final_URL = "https://crm.zoho.com/crm/private/json/Tasks/getRecords" data = urllib.urlencode(params) request = urllib2.Request(final_URL, data) response = urllib2.urlopen(request) xml_response = response.read() data = json.loads(xml_response) tasks_list = data['response']['result']['Tasks']['row'] tasks = [] for task in tasks_list: taskl = {} ts = task['FL'] for point in ts: if point['val'] == 'Subject': self.response.write(point['content']) """taskl['title'] = str(point['content']) elif point['val'] == 'ACTIVITYID': #print "id:",str(point['content']) taskl['id'] = str(point['content']) elif point['val'] == 'Due Date': #print "subject:",str(point['content']) taskl['due'] = str(point['content'])+'T12:00:00.000Z' elif point['val'] == 'Priority': #print "subject:",str(point['content']) taskl['priority'] = str(point['content']) elif point['val'] == 'status': #print "subject:",str(point['content']) taskl['status'] = str(point['content']) elif point['val'] == 'Related To': #print "subject:",str(point['content']) taskl['related_to'] = str(point['content']) elif point['val'] == 'Modified Time': #print "subject:",str(point['content']) taskl['modifiedtime'] = str(point['content'])""" #dbhelper.AddData().addZohoLogs(task['id'],'task',str(datetime.datetime.now()),username,gid,task['modifiedtime']) #rule = service.acl().get(calendarId='primary', ruleId='ruleId').execute() #print '%s: %s' % (rule['id'], rule['role']) calendar_service = CalendarService() calendar_service.email = '*****@*****.**' calendar_service.password = '******' calendar_service.source = 'Google-Calendar_Python_Sample-1.0' calendar_service.ProgrammaticLogin() feed = calendar_service.GetCalendarListFeed() event = service.events().get( calendarId='primary', eventId='5nhvgdb7s2uiagopo07p141jug').execute() self.response.write(event['status']) self.response.write(event['htmlLink']) self.response.write(event['created']) self.response.write(event['updated']) self.response.write(event['description']) self.response.write(event['status']) self.response.write(event['creator']['displayName']) self.response.write(event['id']) #self.response.write(event['etag']) #self.response.write(event['id']) dbhelper.AddData().addcalendarlogs(event['id'], event['summary'], event['created'], event['updated'], event['description']) calendar_list_entry = service.calendarList().get( calendarId='primary').execute() #self.response.write(calendar_list_entry) """rule = { 'scope': { 'type': 'default', 'value': '', }, 'role': 'read' }""" calendar_list_entry = service.calendarList().get( calendarId='primary').execute() #self.response.write(calendar_list_entry) """page_token = None