def command(text, verbose, quality): """ """ # logging if verbose: kwargs = {'stream': sys.stderr, 'level': logging.DEBUG} else: kwargs = { 'level': logging.INFO, 'format': '%(asctime)s %(levelname)s %(message)s', 'filename': os.path.join(config.LOG_DIR, 'report.log') } logging.basicConfig(**kwargs) # period period = periods.Period(text) metas = {t: get_metas(NAMES[t], period) for t in 'fhd'} checker = Checker(quality) failures = [] # the checking for d in period: for t in utils.get_valid_timeframes(d): m = checker.check(meta=metas[t].get(d, {}), date=d) if m: failures.append( TEMPLATE_LOG.format( datetime=d, timeframe=t, message=m, )) # communicate if failures: logger.info('There were {} failures'.format(len(failures))) for f in failures: logger.info(f) report = TEMPLATE_EMAIL.format('\n'.join(failures)) logger.debug('Email body:\n{}'.format(report)) send_mail(report) else: logger.debug('Everything o.k.')
def command(text, verbose, quality): """ """ # logging if verbose: kwargs = {'stream': sys.stderr, 'level': logging.DEBUG} else: kwargs = {'level': logging.INFO, 'format': '%(asctime)s %(levelname)s %(message)s', 'filename': os.path.join(config.LOG_DIR, 'report.log')} logging.basicConfig(**kwargs) # period period = periods.Period(text) metas = {t: get_metas(NAMES[t], period) for t in 'fhd'} checker = Checker(quality) failures = [] # the checking for d in period: for t in utils.get_valid_timeframes(d): m = checker.check(meta=metas[t].get(d, {}), date=d) if m: failures.append(TEMPLATE_LOG.format( datetime=d, timeframe=t, message=m, )) # communicate if failures: logger.info('There were {} failures'.format(len(failures))) for f in failures: logger.info(f) report = TEMPLATE_EMAIL.format('\n'.join(failures)) logger.debug('Email body:\n{}'.format(report)) send_mail(report) else: logger.debug('Everything o.k.')
def process(self, period): """ Controls flushing and filters according to timeframe. on start: init according to datetime on edge: init and flush on finish: flush """ datetimes = (d for d in period if self.timeframe in utils.get_valid_timeframes(d)) # grab first datetime if any, reset band index, meta accordingly try: first = datetimes.next() except StopIteration: return self.reset(first) self.consider(first) for datetime in datetimes: if datetime not in self.bands: if self.flush(): yield # makes unlocking possible here self.reset(datetime) self.consider(datetime) self.flush()