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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
    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