Source code for meetup2xibo.updater.application_scope

"""Application scope holds command line arguments and
environment variables needed by the application."""


from .special_location import SpecialLocation
from .scope_cache import ScopeCache
import meetup2xibo
import logging
from collections import namedtuple

APP_NAME = "meetup2xibo"
XIBO_PAGE_LENGTH = 50

SECONDS_PER_HOUR = 60 * 60
SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR

PhraseLocation = namedtuple("PhraseLocation", "phrase place")


[docs]class ApplicationScope: """Application scope provides configuration values.""" def __init__(self, args, env_vars): """Initialize with parsed command line arguments and a careful environment variable dictionary.""" self._args = args self._env_vars = env_vars self._event_suppressor_cache = ScopeCache() @property def app_name(self): return APP_NAME @property def conflict_places(self): return self._env_vars.json("CONFLICT_PLACES") @property def conflicts(self): return self._args.conflicts @property def containing_places(self): return self._env_vars.json("CONTAINING_PLACES") @property def delete_after_end_seconds(self): return int(self._env_vars["DELETE_AFTER_END_HOURS"]) \ * SECONDS_PER_HOUR @property def delete_before_start_seconds(self): return int(self._env_vars["DELETE_BEFORE_START_HOURS"]) \ * SECONDS_PER_HOUR @property def delete_until_future_seconds(self): return int(self._env_vars["DELETE_UNTIL_FUTURE_DAYS"]) \ * SECONDS_PER_DAY @property def debug(self): return self._args.debug @property def default_location(self): return self._env_vars["DEFAULT_LOCATION"] @property def default_places(self): return self._env_vars.json("DEFAULT_PLACES") @property def end_time_column_name(self): return self._env_vars["END_TIME_COLUMN_NAME"] @property def event_dataset_code(self): return self._env_vars["EVENT_DATASET_CODE"]
[docs] def event_suppressor(self, event_suppressor_provider): return self._event_suppressor_cache.get(event_suppressor_provider)
@property def ignore_cancelled_after_seconds(self): return int(self._env_vars["IGNORE_CANCELLED_AFTER_DAYS"]) \ * SECONDS_PER_DAY @property def location_column_name(self): return self._env_vars["LOCATION_COLUMN_NAME"] @property def place_phrases(self): return self._env_vars.json("PLACE_PHRASES") @property def place_phrase_tuples(self): return ( PhraseLocation(**dict) for dict in self.place_phrases ) @property def logfile(self): return self._args.logfile @property def log_level(self): return logging.DEBUG if self.debug else logging.INFO @property def mappings(self): return self._args.mappings @property def meetup_events_wanted(self): return self._env_vars["MEETUP_EVENTS_WANTED"] @property def meetup_group_url_name(self): return self._env_vars["MEETUP_GROUP_URL_NAME"] @property def meetup_id_column_name(self): return self._env_vars["MEETUP_ID_COLUMN_NAME"] @property def more_place_phrases(self): return self._env_vars.json("MORE_PLACE_PHRASES") @property def more_place_phrase_tuples(self): return ( PhraseLocation(**dict) for dict in self.more_place_phrases ) @property def name_column_name(self): return self._env_vars["NAME_COLUMN_NAME"] @property def site_ca_path(self): return self._env_vars["SITE_CA_PATH"] @property def site_url(self): return self._env_vars["SITE_URL"] @property def special_locations(self): return self._env_vars.json("SPECIAL_LOCATIONS") @property def special_locations_dict(self): return { d["meetup_id"]: SpecialLocation(**d) for d in self.special_locations} @property def start_time_column_name(self): return self._env_vars["START_TIME_COLUMN_NAME"] @property def suppressed_event_ids(self): return self._env_vars.json("SUPPRESSED_EVENT_IDS") @property def timezone(self): return self._env_vars["TIMEZONE"] @property def verbose(self): return self._args.verbose @property def version(self): return meetup2xibo.__version__ @property def warnings(self): return self._args.warnings @property def xibo_client_id(self): return self._env_vars["XIBO_CLIENT_ID"] @property def xibo_client_secret(self): return self._env_vars["XIBO_CLIENT_SECRET"] @property def xibo_host(self): return self._env_vars["XIBO_HOST"] @property def xibo_id_column_name(self): return self._env_vars["XIBO_ID_COLUMN_NAME"] @property def xibo_page_length(self): return XIBO_PAGE_LENGTH @property def xibo_port(self): return self._env_vars["XIBO_PORT"]
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 autoindent