def send_digest_mail(self): ''' Send digest mail to mailing lists ''' for prefix, content in self.testing_digest.items(): log.debug("Sending digest for updates-testing %s" % prefix) maildata = u'' try: security_updates = self.get_security_updates(prefix) if security_updates: maildata += u'The following %s Security updates need testing:\n Age URL\n' % prefix for update in security_updates: maildata += u' %3i %s%s\n' % ( update.days_in_testing, config.get('base_address'), url(update.get_url())) maildata += '\n\n' critpath_updates = self.get_unapproved_critpath_updates(prefix) if critpath_updates: maildata += u'The following %s Critical Path updates have yet to be approved:\n Age URL\n' % prefix for update in self.get_unapproved_critpath_updates(prefix): maildata += u' %3i %s%s\n' % ( update.days_in_testing, config.get('base_address'), url(update.get_url())) maildata += '\n\n' except Exception, e: log.exception(e) maildata += u'The following builds have been pushed to %s updates-testing\n\n' % prefix # get a list af all nvr's updlist = content.keys() # sort the list updlist.sort() # Add the list of builds to the mail for pkg in updlist: maildata += u' %s\n' % pkg # Add some space between the short list and the Details" maildata += u'\nDetails about builds:\n\n' # Add the detail of each build for nvr in updlist: maildata += u"\n" + self.testing_digest[prefix][nvr] release = Release.select(Release.q.long_name == prefix)[0] mail.send_mail( config.get('bodhi_email'), config.get('%s_test_announce_list' % release.id_prefix.lower().replace('-', '_')), '%s updates-testing report' % prefix, maildata)
def send_testing_digest(self): """Send digest mail to mailing lists""" self.log.info('Sending updates-testing digest') sechead = u'The following %s Security updates need testing:\n Age URL\n' crithead = u'The following %s Critical Path updates have yet to be approved:\n Age URL\n' testhead = u'The following builds have been pushed to %s updates-testing\n\n' for prefix, content in self.testing_digest.iteritems(): release = self.db.query(Release).filter_by(long_name=prefix).one() test_list_key = '%s_test_announce_list' % ( release.id_prefix.lower().replace('-', '_')) test_list = config.get(test_list_key) if not test_list: log.warn('%r undefined. Not sending updates-testing digest', test_list_key) continue log.debug("Sending digest for updates-testing %s" % prefix) maildata = u'' security_updates = self.get_security_updates(prefix) if security_updates: maildata += sechead % prefix for update in security_updates: maildata += u' %3i %s %s\n' % ( update.days_in_testing, update.abs_url(), update.title) maildata += '\n\n' critpath_updates = self.get_unapproved_critpath_updates(prefix) if critpath_updates: maildata += crithead % prefix for update in self.get_unapproved_critpath_updates(prefix): maildata += u' %3i %s %s\n' % ( update.days_in_testing, update.abs_url(), update.title) maildata += '\n\n' maildata += testhead % prefix updlist = content.keys() updlist.sort() for pkg in updlist: maildata += u' %s\n' % pkg maildata += u'\nDetails about builds:\n\n' for nvr in updlist: maildata += u"\n" + self.testing_digest[prefix][nvr] mail.send_mail(config.get('bodhi_email'), test_list, '%s updates-testing report' % prefix, maildata)