import datetime
from . import HOOK_KINDS
from .. import errors, strparse
class FilterByDateHook:
KIND = HOOK_KINDS.DATA_FILTER
def __init__(self, config):
self.config = config
date_config = config.get_section('Dates')
start_date = self._get_date(date_config, 'import start date', datetime.date.min)
end_date = self._get_date(date_config, 'import end date', datetime.date.max)
if start_date is datetime.date.min and end_date is datetime.date.max:
raise errors.NotConfiguredError("no import start or end date set", None)
self.date_range = range(start_date.toordinal(), end_date.toordinal() + 1)
def _get_date(self, date_config, key, default):
try:
date_s = date_config[key]
except KeyError:
return default
else:
return strparse.date(date_s, date_config['date format'])
except ValueError as error:
raise errors.UserInputConfigurationError(error.args[0], date_s)
def run(self, entry_data):
@@ -12,5 +32,5 @@ class FilterByDateHook:
pass
if not self.config.date_in_want_range(date):
if date.toordinal() not in self.date_range:
return False