示例#1
0
    def run(self):
        """ Read new jobs from manager.
        Read through

        """
        #logging.info("Start checking %s %s", self.user['id'],
        #             self.user['labels'])
        unauthorized = False
        gauth = dict(
            oauth_consumer_key=self.config.get('oauth', 'oauth_consumer_key'),
            oauth_consumer_secret=self.config.get('oauth', 'oauth_consumer_secret'),
            oauth_token_access=self.user['oauth_token_access'],
            oauth_token_secret=self.user['oauth_token_secret']
        )
        gmail = Gmail('OAuth', labels=self.user['labels'])
        gmail.login(**gauth)
        entries = gmail.entries()
        if entries['error'] == 'Unauthorized':
            unauthorized = True
            if self.user['id'] not in UNAUTHORIZED_ACCESS:
                UNAUTHORIZED_ACCESS[self.user['id']] = 1
            elif UNAUTHORIZED_ACCESS[self.user['id']] >= FAIL_ATTEMPTS:
                self.cursor.execute("""UPDATE `accounts_userprofile` SET
                                    `oauth_token_access` = '',
                                    `oauth_token_secret` = '',
                                    `authorization_failed` = 1
                                    WHERE `id` = %s""", self.user['id'])
                self.db.commit()
            else:
                UNAUTHORIZED_ACCESS[self.user['id']] +=1
                time.sleep(2)
        else:
            if self.user['id'] in UNAUTHORIZED_ACCESS:
                del(UNAUTHORIZED_ACCESS[self.user['id']])

        #Add event to calendar
        events = []
        if not unauthorized:
            #logging.info("Found entries for %s", self.user['id'])
            calendar = Calendar('OAuth')
            calendar.login(**gauth)

            for label in entries['entries']:
                for entry in entries['entries'][label]:
                    label_text = "Inbox" if label == '^inbox' else label
                    if not self.email_exists(entry['id']):
                        #logging.info("Found entry (%s) for %s", entry,
                        #             self.user['id'])
                        self.new_email({'id': entry['id'],
                                        'user_id': self.user['id']})
                        events.append(calendar.create(
                            title="("+entry['author_name']+") " +
                            entry['title'], where=label_text))
        self.db.close()#Close db connection first

        if len(events):
            time.sleep(DELETE_EVENT_AFTER)
            for event in events: # Clean calendar from added notifications
                calendar.delete(event)
示例#2
0
	def run(self):
		gmail = Gmail('Programmatic', labels=self.labels)
		gmail.login(email=self.email, password=self.password)
		entries = gmail.entries()
		if entries['error'] == 'Unauthorized':
			print "Login failed! Make sure your email and password is correct"
			sys.exit(2)

		calendar = Calendar('Programmatic')
		calendar.login(email=self.email, password=self.password)

		for label in entries['entries']:
			for entry in entries['entries'][label]:
				if entry['id'] not in self.emails:
					label_text = "Inbox" if label == '^inbox' else label
					event = calendar.create(title="("+entry['author_name']+") "
							+ entry['title'], where = label_text)
					self.emails.append(entry['id'])
					self._email_ids() # Write this event to pickled file
					time.sleep(180)
					calendar.delete(event)