def fetch_emails(self): imap = imaplib.IMAP4_SSL(self.imaps_server, self.imaps_port) imap.login(self.username, self.password) imap.select(self.imaps_folder) typ, data = imap.search(None, 'SUBJECT', 'Parlamentspapiere') for num in data[0].split(): typ, data = imap.fetch(num, '(RFC822)') # print('Message %s\n%s\n' % (num, data[0][1])) drucksachen = DrucksachenExtractor(data[0][1]).parse() for d in drucksachen: f = bytearray() r = requests.get(d.link, stream=True) '''for chunk in r.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks f += chunk ''' if r.status_code == 200: headers = {'content-type': 'application/octet-stream'} res = requests.post( self.redmine_url + '/uploads.json?key=' + self.redmine_api_key, data = r, headers = headers # files={'file': f}, headers = headers ) if res.status_code != 201: # 201 == Created print('requests.post: ', res.status_code) self.upload = None else: token = res.json()['upload']['token'] self.upload = [{ 'token': token, 'filename': d.number + '.pdf', 'description': d.number, 'content': 'application/pdf' }] else: self.upload = None issue = Issue({ 'subject': d.number + ":" + d.title , 'project_id': 62, # 'Dokumente' 'tracker_id': 11, 'description': d.link, 'uploads': self.upload }) res = issue.save() if not res: print(issue.subject, '=> ', res) status, msg_ids = imap.copy(num, self.imaps_folder_read) # TODO: print(status) imap.store(num, '+FLAGS', '\\Deleted') imap.close() imap.logout()
def create_issue(title, message): issue = Issue(title=title, description=message) issue.save()