Added logic to edit technician config in WI #127
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
from cpl_core.database.context import DatabaseContextABC
|
||||
from cpl_discord.service import DiscordBotServiceABC
|
||||
from cpl_query.extension import List
|
||||
|
||||
from bot_api.logging.api_logger import ApiLogger
|
||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
|
||||
from bot_data.model.technician_config import TechnicianConfig
|
||||
@@ -13,6 +15,7 @@ from bot_graphql.abc.query_abc import QueryABC
|
||||
class TechnicianConfigMutation(QueryABC):
|
||||
def __init__(
|
||||
self,
|
||||
logger: ApiLogger,
|
||||
bot: DiscordBotServiceABC,
|
||||
servers: ServerRepositoryABC,
|
||||
technician_configs: TechnicianConfigRepositoryABC,
|
||||
@@ -20,6 +23,7 @@ class TechnicianConfigMutation(QueryABC):
|
||||
):
|
||||
QueryABC.__init__(self, "TechnicianConfigMutation")
|
||||
|
||||
self._logger = logger
|
||||
self._bot = bot
|
||||
self._servers = servers
|
||||
self._technician_configs = technician_configs
|
||||
@@ -45,9 +49,13 @@ class TechnicianConfigMutation(QueryABC):
|
||||
technician_config.cache_max_messages = (
|
||||
input["cacheMaxMessages"] if "cacheMaxMessages" in input else technician_config.cache_max_messages
|
||||
)
|
||||
technician_config.ping_urls = input["pingURLs"] if "pingURLs" in input else technician_config.ping_urls
|
||||
technician_config.ping_urls = (
|
||||
List(str, input["pingURLs"]) if "pingURLs" in input else technician_config.ping_urls
|
||||
)
|
||||
technician_config.technician_ids = (
|
||||
input["technicianIds"] if "technicianIds" in input else technician_config.technician_ids
|
||||
List(int).extend([int(x) for x in input["technicianIds"]])
|
||||
if "technicianIds" in input
|
||||
else technician_config.technician_ids
|
||||
)
|
||||
|
||||
self._technician_configs.update_technician_config(technician_config)
|
||||
@@ -76,14 +84,19 @@ class TechnicianConfigMutation(QueryABC):
|
||||
|
||||
def _update_technician_ids(self, new_config: TechnicianConfig):
|
||||
old_config = self._technician_configs.get_technician_config()
|
||||
for url in old_config.technician_ids:
|
||||
if url in new_config.technician_ids:
|
||||
for technician_id in old_config.technician_ids:
|
||||
if technician_id in new_config.technician_ids:
|
||||
continue
|
||||
|
||||
self._technician_configs.delete_technician_id_config(TechnicianIdConfig(url))
|
||||
self._technician_configs.delete_technician_id_config(TechnicianIdConfig(technician_id))
|
||||
|
||||
for url in new_config.technician_ids:
|
||||
if url in old_config.technician_ids:
|
||||
for technician_id in new_config.technician_ids:
|
||||
user = self._bot.get_user(technician_id)
|
||||
if user is None:
|
||||
raise ValueError(f"Invalid technicianId")
|
||||
|
||||
for technician_id in new_config.technician_ids:
|
||||
if technician_id in old_config.technician_ids:
|
||||
continue
|
||||
|
||||
self._technician_configs.add_technician_id_config(TechnicianIdConfig(url))
|
||||
self._technician_configs.add_technician_id_config(TechnicianIdConfig(technician_id))
|
||||
|
Reference in New Issue
Block a user