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