Fixed feature flag handling #393
This commit is contained in:
		| @@ -4,7 +4,7 @@ | ||||
|     "Version": { | ||||
|       "Major": "1", | ||||
|       "Minor": "1", | ||||
|       "Micro": "9" | ||||
|       "Micro": "10" | ||||
|     }, | ||||
|     "Author": "Sven Heidemann", | ||||
|     "AuthorEmail": "sven.heidemann@sh-edraft.de", | ||||
|   | ||||
| @@ -11,6 +11,7 @@ from bot_data.model.technician_config import TechnicianConfig | ||||
| from bot_data.model.technician_id_config import TechnicianIdConfig | ||||
| from bot_data.model.technician_ping_url_config import TechnicianPingUrlConfig | ||||
| from bot_data.model.user_role_enum import UserRoleEnum | ||||
| from bot_data.service.technician_config_seeder import TechnicianConfigSeeder | ||||
| from bot_graphql.abc.query_abc import QueryABC | ||||
|  | ||||
|  | ||||
| @@ -23,6 +24,7 @@ class TechnicianConfigMutation(QueryABC): | ||||
|         technician_configs: TechnicianConfigRepositoryABC, | ||||
|         db: DatabaseContextABC, | ||||
|         config_service: ConfigService, | ||||
|         tech_seeder: TechnicianConfigSeeder, | ||||
|     ): | ||||
|         QueryABC.__init__(self, "TechnicianConfigMutation") | ||||
|  | ||||
| @@ -32,10 +34,14 @@ class TechnicianConfigMutation(QueryABC): | ||||
|         self._technician_configs = technician_configs | ||||
|         self._db = db | ||||
|         self._config_service = config_service | ||||
|         self._tech_seeder = tech_seeder | ||||
|  | ||||
|         self.set_field("updateTechnicianConfig", self.resolve_update_technician_config) | ||||
|  | ||||
|     def resolve_update_technician_config(self, *_, input: dict): | ||||
|         if not self._technician_configs.does_technician_config_exists(): | ||||
|             self._bot.loop.create_task(self._tech_seeder.seed()) | ||||
|  | ||||
|         technician_config = self._technician_configs.get_technician_config() | ||||
|         self._can_user_mutate_data(Route.get_user().users[0].server, UserRoleEnum.technician) | ||||
|  | ||||
| @@ -53,11 +59,16 @@ class TechnicianConfigMutation(QueryABC): | ||||
|         technician_config.cache_max_messages = ( | ||||
|             input["cacheMaxMessages"] if "cacheMaxMessages" in input else technician_config.cache_max_messages | ||||
|         ) | ||||
|         old_feature_flags = technician_config.feature_flags | ||||
|         technician_config.feature_flags = ( | ||||
|             dict(zip([x["key"] for x in input["featureFlags"]], [x["value"] for x in input["featureFlags"]])) | ||||
|             if "featureFlags" in input | ||||
|             else technician_config.feature_flags | ||||
|         ) | ||||
|         for old_flag in old_feature_flags: | ||||
|             if old_flag not in technician_config.feature_flags: | ||||
|                 technician_config.feature_flags[old_flag] = False | ||||
|  | ||||
|         technician_config.ping_urls = ( | ||||
|             List(str, input["pingURLs"]) if "pingURLs" in input else technician_config.ping_urls | ||||
|         ) | ||||
| @@ -75,6 +86,7 @@ class TechnicianConfigMutation(QueryABC): | ||||
|             self._update_technician_ids(technician_config) | ||||
|  | ||||
|         self._db.save_changes() | ||||
|         self._config_service.reload_technician_config() | ||||
|         return technician_config | ||||
|  | ||||
|     def _update_ping_urls(self, new_config: TechnicianConfig): | ||||
| @@ -109,5 +121,3 @@ class TechnicianConfigMutation(QueryABC): | ||||
|                 continue | ||||
|  | ||||
|             self._technician_configs.add_technician_id_config(TechnicianIdConfig(technician_id)) | ||||
|  | ||||
|         self._bot.loop.create_task(self._config_service.reload_technician_config()) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user