From e85681a708e4ca5607bd3ebecb58dc33470dfba8 Mon Sep 17 00:00:00 2001 From: Hellow <74311245+HeIIow2@users.noreply.github.com> Date: Thu, 15 Feb 2024 01:08:45 +0100 Subject: [PATCH] fixed nested config --- publish_meetups/feeds/twitter_feed.py | 4 +--- publish_meetups/routines/__init__.py | 10 ++++---- publish_meetups/routines/development.py | 12 ++++++---- publish_meetups/utils/config.py | 32 +++++++++++++++++++------ 4 files changed, 37 insertions(+), 21 deletions(-) diff --git a/publish_meetups/feeds/twitter_feed.py b/publish_meetups/feeds/twitter_feed.py index 36a286b..447b131 100644 --- a/publish_meetups/feeds/twitter_feed.py +++ b/publish_meetups/feeds/twitter_feed.py @@ -52,9 +52,7 @@ class TwitterFeed(Feed): ) logged_in = True - config.set_field(self.__config_name__, { - 'cookies': dict(self.client.http.client.cookies) - }, update_dict=True) + config.set_field(f"feed.{self.__config_name__}.cookies", dict(self.client.http.client.cookies), update_dict=True) def post(self, message: str): diff --git a/publish_meetups/routines/__init__.py b/publish_meetups/routines/__init__.py index f2f866c..aac32f0 100644 --- a/publish_meetups/routines/__init__.py +++ b/publish_meetups/routines/__init__.py @@ -26,15 +26,13 @@ class Routine: @staticmethod def init_feed(feed: Type[Feed]) -> Feed: - feed_config = config.get_field(feed.__config_name__, {}) + feed_config = config.get_field(f"feed.{feed.__config_name__}", {}) try: - feed_instance = feed(**feed_config) + return feed(**feed_config) except (TypeError, error.InvalidCredential) as e: - print(feed_config) - raise e - config.set_field(feed.__name__, feed.prompt_auth(), update_dict=True) - feed_config = config.get_field(feed.__config_name__, {}) + config.set_field(f"feed.{feed.__config_name__}", {feed.prompt_auth()}, update_dict=True) + feed_config = config.get_field(f"feed.{feed.__config_name__}", {}) try: return feed(**feed_config) diff --git a/publish_meetups/routines/development.py b/publish_meetups/routines/development.py index e7df689..7ddc203 100644 --- a/publish_meetups/routines/development.py +++ b/publish_meetups/routines/development.py @@ -2,13 +2,15 @@ from . import Routine from ..feeds import Feed, TwitterFeed from ..utils import date +from datetime import datetime from ics import Calendar class Development(Routine): - def run(self): - calendar = self.get_ics() + def test_feeds(self): + for feed in self.iter_feeds(): + feed_instance = self.init_feed(feed) + feed_instance.post(f"Hello World!!! ({datetime.now()})") - for event in calendar.events: - print(f"Event: {event.name}") - print(self.get_event_string(event)) + def run(self): + self.test_feeds() diff --git a/publish_meetups/utils/config.py b/publish_meetups/utils/config.py index 9d3e131..d54be65 100644 --- a/publish_meetups/utils/config.py +++ b/publish_meetups/utils/config.py @@ -22,10 +22,11 @@ _config: dict = { "twitter", ], - - "mastodon": {}, - "twitter": {}, - "lemmy": {}, + "feed": { + "mastodon": {}, + "twitter": {}, + "lemmy": {}, + }, } @@ -50,16 +51,33 @@ def write(): def get_field(__name: str, default=None): global _config - return _config.get(__name, default) + + _parts = __name.split(".") + + _field_container = _config + for _part in _parts[:-1]: + _field_container = _field_container.get(_part, {}) + + return _field_container.get(_parts[-1], default) def set_field(__name: str, __value, update_dict=False): global _config + _parts = __name.split(".") + + _field_container = _config + for _part in _parts[:-1]: + if _part not in _field_container: + _field_container[_part] = {} + + _field_container = _field_container[_part] + + if update_dict and isinstance(__value, dict) and isinstance(_config.get(__name), dict): - _config[__name].update(__value) + _field_container[_parts[-1]].update(__value) else: - _config[__name] = __value + _field_container[_parts[-1]] = __value write()