def updateListOfUnpaid(self, i, numberOfPermissions): i += 1 for x in range(i,i+numberOfPermissions): self.lUnpaid.append(x) self.list.clear() self.lPaid.sort() self.lUnpaid.sort() self.labelPaid.config(text=listToCommaSeperatedString(self.lPaid[-10:])) self.list.append(self.labelPaid) self.labelUnpaid.config(text=listToCommaSeperatedString(self.lUnpaid)) self.list.append(self.labelUnpaid)
def sendEmail(fileName, toAddrs, subject, body): msg = email.mime.multipart.MIMEMultipart() msg['Subject'] = subject msg['From'] = GMAIL['ADRESS'] if isinstance(toAddrs, list): msg['To'] = listToCommaSeperatedString(toAddrs) else: msg['To'] = toAddrs # The main body is just another attachment body = email.mime.text.MIMEText(body) msg.attach(body) # PDF attachment fp=open(fileName,'rb') att = email.mime.application.MIMEApplication(fp.read(),_subtype="pdf") fp.close() att.add_header('Content-Disposition','attachment',filename=fileName) msg.attach(att) # Credentials (if needed) username = GMAIL['ADRESS'] # send via Gmail server # NOTE: my ISP, Centurylink, seems to be automatically rewriting # port 25 packets to be port 587 and it is trashing port 587 packets. # So, I use the default port 25, but I authenticate. s = smtplib.SMTP('smtp.gmail.com:587') s.starttls() s.login(username,GMAIL['PASSWORD']) s.sendmail(msg['From'], toAddrs, msg.as_string()) s.quit()
def addToCompilationStory(lStory, styles, d, year, month, tableStyle): ptext = '<font size=18>%s</font>' % month lStory.append(Paragraph(ptext, styles["Justify"])) lStory.append(Spacer(1, 15)) data = [['Lgh nr', 'Antal', 'Tillstånds ID', 'Att betala']] agg_nr_of_paid = 0 for appartmentNumber in sorted(d.keys()): nr_of_paid = len(d[appartmentNumber]) agg_nr_of_paid += nr_of_paid data.append([appartmentNumber, str(nr_of_paid), listToCommaSeperatedString(sorted(d[appartmentNumber])), "%d kr" % (nr_of_paid*INFO['PRICE_PER_PERMISSION'])]) s = getSampleStyleSheet() s = s["BodyText"] data2 = [[Paragraph(cell, s) for cell in row] for row in data] t=Table(data2) t.setStyle(tableStyle) lStory.append(t) lStory.append(Spacer(1, 15)) summary = "I %s %s betalades %d parkeringstillstånd á %d kr. " % (month, year, agg_nr_of_paid, (agg_nr_of_paid*INFO['PRICE_PER_PERMISSION'])) ptext = '<font size=14>%s</font>' % summary lStory.append(Paragraph(ptext, styles["Justify"])) lStory.append(Spacer(1, 50)) return lStory
def generateFirstPage(self, apartmentNumber, dPaid, lUnpaid, lEmail): self.apartmentNumber = apartmentNumber self.lPaid = [int(x) for x in dPaid.keys()] self.dPaid_dates = dPaid self.lUnpaid = lUnpaid self.lEmail = lEmail self.lPaid.sort() self.label.config(text=apartmentNumber) stringPaid = listToCommaSeperatedString(self.lPaid[-10:]) self.labelPaid = tk.Label(self, text=stringPaid) self.labelPaid.grid(row=1, column=1) self.list.append(self.labelPaid) stringUnpaid = listToCommaSeperatedString(lUnpaid) self.labelUnpaid = tk.Label(self, text=stringUnpaid) self.labelUnpaid.grid(row=2, column=1) self.list.append(self.labelUnpaid) self.lEmail = lEmail try: self.email1 = tk.Label(self, text=lEmail[0]) self.email1.grid(row=3, column=1) self.list.append(self.email1) except: self.email1 = tk.Label(self, text='') self.email1.grid(row=3, column=1) self.list.append(self.email1) try: self.email2 = tk.Label(self, text=lEmail[1]) self.email2.grid(row=4, column=1) self.list.append(self.email2) except: self.email2 = tk.Label(self, text='') self.email2.grid(row=4, column=1) self.list.append(self.email2) button3 = tk.Button(self, text="Markera betalade", command=self.markAsPaid) button3.grid(row=2, column=2) self.list.append(button3)
def updateValues(self, dMarkedAsPaid): self.lPaid += dMarkedAsPaid.keys() self.lUnpaid = [x for x in self.lUnpaid if x not in dMarkedAsPaid.keys()] self.list.clear() self.lPaid.sort() self.lUnpaid.sort() for idnbr in dMarkedAsPaid.keys(): #print(idnbr, dMarkedAsPaid[idnbr]) self.dPaid_dates[str(idnbr)] = dMarkedAsPaid[idnbr] #print(self.dPaid_dates) self.labelPaid.config(text=listToCommaSeperatedString(self.lPaid)) self.labelUnpaid.config(text=listToCommaSeperatedString(self.lUnpaid)) self.list.append(self.labelPaid) self.list.append(self.labelUnpaid) updateFile_PaidUnpaid(self.apartmentNumber, self.dPaid_dates, self.lUnpaid)
def returnCSVEmail(specificHouse = None): with open(FILENAME) as data_file: data = json.load(data_file) lEmail = [] for key in data.keys(): if specificHouse: if not key.startswith(specificHouse): continue lEmail.extend(data[key]['email']) return listToCommaSeperatedString(lEmail)