def _sendNotifyEmail(self, templateTitle, templateParms, to, from_, subject): emailText = rdw_helpers.compileTemplate(templateTitle+'.txt', **templateParms) emailHtml = rdw_helpers.compileTemplate(templateTitle+'.html', **templateParms) msgRoot = MIMEMultipart('related') msgRoot['Subject'] = subject msgRoot['From'] = from_ msgRoot['To'] = to # Attach HTML version msgAlternative = MIMEMultipart('alternative') msgRoot.attach(msgAlternative) msgAlternative.attach(MIMEText(emailHtml, 'html')) # Attach plaintext version msgAlternative = MIMEMultipart('alternative') msgRoot.attach(msgAlternative) msgAlternative.attach(MIMEText(emailText)) # Send email session = smtplib.SMTP(self.getEmailHost()) if self._getEmailUsername(): session.login(self._getEmailUsername(), self._getEmailPassword()) smtpresult = session.sendmail(from_, to.split(","), msgRoot.as_string()) session.quit()
def index(self): page = rdw_helpers.compileTemplate("page_start.html", title="rdiffWeb - Error", rssLink="", rssTitle="") page = page + self.error page = page + rdw_helpers.compileTemplate("page_end.html") return page
def index(self): page = rdw_helpers.compileTemplate("page_start.html", title='Set up rdiffWeb', rssLink='', rssTitle='') rootEnabled = False error = "" try: rootEnabled = self._rootAccountEnabled() except KeyError: error = "rdiffWeb setup must be run with root privileges." page += rdw_helpers.compileTemplate("setup.html", rootEnabled=rootEnabled, error=error) page += rdw_helpers.compileTemplate("page_end.html") return page
def sendEmails(self): for user in self.userDB.getUserList(): userRepos = self.userDB.getUserRepoPaths(user) oldRepos = [] for repo in userRepos: maxDaysOld = self.userDB.getRepoMaxAge(user, repo) if maxDaysOld != 0: # get the last backup date try: lastBackup = librdiff.getLastBackupHistoryEntry(rdw_helpers.joinPaths(self.userDB.getUserRoot(user), repo), False) except librdiff.FileError: pass # Skip repos that have never been successfully backed up else: if lastBackup: oldestGoodBackupTime = rdw_helpers.rdwTime() oldestGoodBackupTime.initFromMidnightUTC(-maxDaysOld) if lastBackup.date < oldestGoodBackupTime: oldRepos.append({"repo" : repo, "lastBackupDate" : lastBackup.date.getDisplayString(), "maxAge" : maxDaysOld }) if oldRepos: userEmailAddress = self.userDB.getUserEmail(user) emailText = rdw_helpers.compileTemplate("email_notification.txt", repos=oldRepos, sender=self._getEmailSender(), user=user) session = smtplib.SMTP(self._getEmailHost()) session.login(self._getEmailUsername(), self._getEmailPassword()) smtpresult = session.sendmail(self._getEmailSender(), userEmailAddress.split(";"), emailText) session.quit()
def sendEmails(self): for user in self.userDB.getUserList(): userRepos = self.userDB.getUserRepoPaths(user) oldRepos = [] for repo in userRepos: maxDaysOld = self.userDB.getRepoMaxAge(user, repo) if maxDaysOld != 0: # get the last backup date try: lastBackup = librdiff.getLastBackupHistoryEntry( rdw_helpers.joinPaths( self.userDB.getUserRoot(user), repo), False) except librdiff.FileError: pass # Skip repos that have never been successfully backed up else: if lastBackup: oldestGoodBackupTime = rdw_helpers.rdwTime() oldestGoodBackupTime.initFromMidnightUTC( -maxDaysOld) if lastBackup.date < oldestGoodBackupTime: oldRepos.append({ "repo": repo, "lastBackupDate": lastBackup.date.getDisplayString(), "maxAge": maxDaysOld }) if oldRepos: userEmailAddress = self.userDB.getUserEmail(user) emailText = rdw_helpers.compileTemplate( "email_notification.txt", repos=oldRepos, sender=self._getEmailSender(), user=user) session = smtplib.SMTP(self._getEmailHost()) session.login(self._getEmailUsername(), self._getEmailPassword()) smtpresult = session.sendmail(self._getEmailSender(), userEmailAddress.split(";"), emailText) session.quit()
def emailNotifications(): emailHost = getEmailHost() emailSender = getEmailSender() emailUsername = getEmailUsername() emailPassword = getEmailPassword() dbBackend = db.userDB().getUserDBModule() for user in dbBackend.getUserList(): userRepos = dbBackend.getUserRepoPaths(user) oldRepos = [] for repo in userRepos: maxDaysOld = dbBackend.getRepoMaxAge(user, repo) if maxDaysOld != 0: # get the last backup date try: lastBackup = librdiff.getLastBackupHistoryEntry(rdw_helpers.joinPaths(dbBackend.getUserRoot(user), repo), False) except librdiff.FileError: pass # Skip repos that have never been successfully backed up else: if lastBackup: oldestGoodBackupTime = rdw_helpers.rdwTime() oldestGoodBackupTime.initFromMidnightUTC(-maxDaysOld) if lastBackup.date < oldestGoodBackupTime: oldRepos.append({"repo" : repo, "lastBackupDate" : lastBackup.date.getDisplayString(), "maxAge" : maxDaysOld }) if oldRepos: userEmailAddress = dbBackend.getUserEmail(user) emailText = rdw_helpers.compileTemplate("email_notification.txt", repos=oldRepos, sender=emailSender, user=user) session = smtplib.SMTP(emailHost) session.login(emailUsername, emailPassword) smtpresult = session.sendmail(emailSender, userEmailAddress.split(";"), emailText) if smtpresult: error = "" for recipient in smtpresult.keys(): error = """Could not delivery mail to: %s Server said: %s %s %s""" % (recipient, smtpresult[recipient][0], smtpresult[recipient][1], error) raise smtplib.SMTPException, error session.quit()
def buildNotificationsTable(notify_options): """ options should be a dictionary of optionName to selectedOptionNum """ options = [] keys = notify_options.keys() keys.sort() for key in keys: notifyOptions = [] for i in range(0, 8): notifyStr = "Don't notify" if i == 1: notifyStr = "1 day" elif i > 1: notifyStr = str(i) + " days" selectedStr = "" if i == notify_options[key]: selectedStr = "selected" notifyOptions.append({ "optionStr": notifyStr, "selectedStr": selectedStr }) options.append({ "key" : key, "notifyOptions" : notifyOptions }) return rdw_helpers.compileTemplate("notifications_table.html", options=options)
def compileTemplate(self, templatePath, **kwargs): return rdw_helpers.compileTemplate(templatePath, **kwargs)