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)
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)