staging into master #426
@ -11,6 +11,7 @@ from bot_api.api_thread import ApiThread
|
||||
from bot_core.abc.task_abc import TaskABC
|
||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
|
||||
from bot_core.environment_variables import MAINTENANCE
|
||||
from bot_core.service.data_integrity_service import DataIntegrityService
|
||||
|
||||
|
||||
@ -58,7 +59,7 @@ class Application(DiscordBotApplicationABC):
|
||||
return
|
||||
|
||||
self._logger.info(__name__, f"Try to start {DiscordBotService.__name__}")
|
||||
if not self._config.get_configuration("MAINTENANCE"):
|
||||
if not self._config.get_configuration(MAINTENANCE):
|
||||
for task in self._tasks:
|
||||
await self._bot.add_cog(task)
|
||||
|
||||
|
@ -8,6 +8,7 @@ from cpl_core.dependency_injection import ServiceCollectionABC
|
||||
from cpl_core.environment import ApplicationEnvironmentABC
|
||||
|
||||
from bot_core.configuration.bot_logging_settings import BotLoggingSettings
|
||||
from bot_core.environment_variables import MAINTENANCE
|
||||
|
||||
|
||||
class StartupSettingsExtension(StartupExtensionABC):
|
||||
@ -20,7 +21,7 @@ class StartupSettingsExtension(StartupExtensionABC):
|
||||
configuration.add_environment_variables("SDB_")
|
||||
configuration.add_environment_variables("DISCORD_")
|
||||
configuration.add_configuration(
|
||||
"MAINTENANCE", configuration.get_configuration("MAINTENANCE") in [True, "true", "True"]
|
||||
MAINTENANCE, configuration.get_configuration(MAINTENANCE) in [True, "true", "True"]
|
||||
)
|
||||
configuration.add_configuration(
|
||||
"MIGRATION_ONLY", configuration.get_configuration("MIGRATION_ONLY") in [True, "true", "True"]
|
||||
|
@ -6,6 +6,7 @@ from cpl_core.dependency_injection import ServiceProviderABC
|
||||
from cpl_discord.service import DiscordBotServiceABC
|
||||
from discord.ext import commands
|
||||
|
||||
from bot_core.environment_variables import MAINTENANCE
|
||||
from bot_core.logging.task_logger import TaskLogger
|
||||
|
||||
|
||||
@ -16,7 +17,7 @@ class TaskABC(commands.Cog):
|
||||
|
||||
@ServiceProviderABC.inject
|
||||
def _is_maintenance(self, config: ConfigurationABC) -> bool:
|
||||
return config.get_configuration("MAINTENANCE") is True
|
||||
return config.get_configuration(MAINTENANCE) is True
|
||||
|
||||
@ServiceProviderABC.inject
|
||||
async def _wait_until_ready(self, config: ConfigurationABC, logger: TaskLogger, bot: DiscordBotServiceABC):
|
||||
|
@ -7,6 +7,7 @@ from cpl_discord.service import DiscordBotServiceABC
|
||||
from cpl_translation import TranslatePipe
|
||||
|
||||
from bot_core.abc.client_utils_abc import ClientUtilsABC
|
||||
from bot_core.environment_variables import MAINTENANCE
|
||||
|
||||
|
||||
class CoreExtensionOnReadyEvent(OnReadyABC):
|
||||
@ -30,7 +31,7 @@ class CoreExtensionOnReadyEvent(OnReadyABC):
|
||||
|
||||
async def on_ready(self):
|
||||
self._logger.debug(__name__, f"Module {type(self)} started")
|
||||
if self._config.get_configuration("MAINTENANCE"):
|
||||
if self._config.get_configuration(MAINTENANCE):
|
||||
await self._client_utils.presence_game("common.presence.maintenance")
|
||||
else:
|
||||
await self._client_utils.presence_game("common.presence.running")
|
||||
|
1
bot/src/bot_core/environment_variables.py
Normal file
1
bot/src/bot_core/environment_variables.py
Normal file
@ -0,0 +1 @@
|
||||
MAINTENANCE = "MAINTENANCE"
|
@ -24,12 +24,11 @@ class EventChecks:
|
||||
if not result:
|
||||
|
||||
def empty(*args, **kwargs):
|
||||
pass
|
||||
return
|
||||
|
||||
return empty
|
||||
return await func(*args, **kwargs)
|
||||
|
||||
# return commands.check(check_if_bot_is_ready)
|
||||
check_if_bot_is_ready.__name__ = func.__name__
|
||||
sig = inspect.signature(func)
|
||||
check_if_bot_is_ready.__signature__ = sig.replace(parameters=tuple(sig.parameters.values())[1:])
|
||||
|
@ -16,6 +16,7 @@ from bot_core.abc.client_utils_abc import ClientUtilsABC
|
||||
from bot_core.abc.message_service_abc import MessageServiceABC
|
||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
|
||||
from bot_core.environment_variables import MAINTENANCE
|
||||
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||
from bot_data.abc.user_joined_voice_channel_repository_abc import (
|
||||
@ -87,7 +88,7 @@ class ClientUtilsService(ClientUtilsABC):
|
||||
return client
|
||||
|
||||
async def check_if_bot_is_ready_yet(self) -> bool:
|
||||
if self._config.get_configuration("MAINTENANCE"):
|
||||
if self._config.get_configuration(MAINTENANCE):
|
||||
self._logger.warn(
|
||||
__name__,
|
||||
f"Bot is in maintenance mode",
|
||||
|
@ -6,6 +6,7 @@ CREATE TABLE IF NOT EXISTS `CFG_TechnicianHistory`
|
||||
`WaitForShutdown` BIGINT NOT NULL DEFAULT 8,
|
||||
`CacheMaxMessages` BIGINT NOT NULL DEFAULT 1000000,
|
||||
`MaxSteamOfferCount` BIGINT NOT NULL DEFAULT 250,
|
||||
`Maintenance` BOOLEAN DEFAULT FALSE,
|
||||
`FeatureFlags` JSON NULL DEFAULT ('{}'),
|
||||
`Deleted` BOOL DEFAULT FALSE,
|
||||
`DateFrom` DATETIME(6) NOT NULL,
|
||||
@ -25,6 +26,7 @@ BEGIN
|
||||
`WaitForShutdown`,
|
||||
`CacheMaxMessages`,
|
||||
`MaxSteamOfferCount`,
|
||||
`Maintenance`,
|
||||
`FeatureFlags`,
|
||||
`DateFrom`,
|
||||
`DateTo`)
|
||||
@ -34,6 +36,7 @@ BEGIN
|
||||
OLD.WaitForShutdown,
|
||||
OLD.CacheMaxMessages,
|
||||
OLD.MaxSteamOfferCount,
|
||||
OLD.Maintenance,
|
||||
OLD.FeatureFlags,
|
||||
OLD.LastModifiedAt,
|
||||
CURRENT_TIMESTAMP(6));
|
||||
@ -52,6 +55,7 @@ BEGIN
|
||||
`WaitForShutdown`,
|
||||
`CacheMaxMessages`,
|
||||
`MaxSteamOfferCount`,
|
||||
`Maintenance`,
|
||||
`FeatureFlags`,
|
||||
`Deleted`,
|
||||
`DateFrom`,
|
||||
@ -62,6 +66,7 @@ BEGIN
|
||||
OLD.WaitForShutdown,
|
||||
OLD.CacheMaxMessages,
|
||||
OLD.MaxSteamOfferCount,
|
||||
OLD.Maintenance,
|
||||
OLD.FeatureFlags,
|
||||
TRUE,
|
||||
OLD.LastModifiedAt,
|
||||
|
51
bot/src/bot_data/migration/maintenance_mode_migration.py
Normal file
51
bot/src/bot_data/migration/maintenance_mode_migration.py
Normal file
@ -0,0 +1,51 @@
|
||||
from bot_core.logging.database_logger import DatabaseLogger
|
||||
from bot_data.abc.migration_abc import MigrationABC
|
||||
from bot_data.db_context import DBContext
|
||||
|
||||
|
||||
class MaintenanceModeMigration(MigrationABC):
|
||||
name = "1.2.0_MaintenanceModeMigration"
|
||||
|
||||
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||
MigrationABC.__init__(self)
|
||||
self._logger = logger
|
||||
self._db = db
|
||||
self._cursor = db.cursor
|
||||
|
||||
def upgrade(self):
|
||||
self._logger.debug(__name__, "Running upgrade")
|
||||
|
||||
self._cursor.execute(
|
||||
str(
|
||||
f"""
|
||||
ALTER TABLE CFG_Technician
|
||||
ADD Maintenance BOOLEAN DEFAULT FALSE AFTER MaxSteamOfferCount;
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
self._cursor.execute(
|
||||
str(
|
||||
f"""
|
||||
ALTER TABLE CFG_TechnicianHistory
|
||||
ADD Maintenance BOOLEAN DEFAULT FALSE AFTER MaxSteamOfferCount;
|
||||
"""
|
||||
)
|
||||
)
|
||||
self._exec(__file__, "config/technician.sql")
|
||||
|
||||
def downgrade(self):
|
||||
self._cursor.execute(
|
||||
str(
|
||||
f"""
|
||||
ALTER TABLE CFG_Technician DROP COLUMN Maintenance;
|
||||
"""
|
||||
)
|
||||
)
|
||||
self._cursor.execute(
|
||||
str(
|
||||
f"""
|
||||
ALTER TABLE CFG_TechnicianHistory DROP COLUMN Maintenance;
|
||||
"""
|
||||
)
|
||||
)
|
@ -16,6 +16,7 @@ class TechnicianConfig(TableABC, ConfigurationModelABC):
|
||||
wait_for_shutdown: int,
|
||||
cache_max_messages: int,
|
||||
max_steam_offer_count: int,
|
||||
maintenance: bool,
|
||||
feature_flags: dict[FeatureFlagsEnum],
|
||||
technician_ids: List[int],
|
||||
ping_urls: List[str],
|
||||
@ -29,6 +30,8 @@ class TechnicianConfig(TableABC, ConfigurationModelABC):
|
||||
self._wait_for_shutdown = wait_for_shutdown
|
||||
self._cache_max_messages = cache_max_messages
|
||||
self._max_steam_offer_count = max_steam_offer_count
|
||||
self._maintenance = maintenance
|
||||
|
||||
self._feature_flags = feature_flags
|
||||
self._technician_ids = technician_ids
|
||||
self._ping_urls = ping_urls
|
||||
@ -105,6 +108,14 @@ class TechnicianConfig(TableABC, ConfigurationModelABC):
|
||||
def ping_urls(self, value: List[str]):
|
||||
self._ping_urls = value
|
||||
|
||||
@property
|
||||
def maintenance(self) -> bool:
|
||||
return self._maintenance
|
||||
|
||||
@maintenance.setter
|
||||
def maintenance(self, value: bool):
|
||||
self._maintenance = value
|
||||
|
||||
@staticmethod
|
||||
def get_select_all_string() -> str:
|
||||
return str(
|
||||
|
@ -11,6 +11,7 @@ from bot_api.exception.service_error_code_enum import ServiceErrorCode
|
||||
from bot_api.exception.service_exception import ServiceException
|
||||
from bot_api.route.route import Route
|
||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||
from bot_core.environment_variables import MAINTENANCE
|
||||
from bot_data.model.achievement import Achievement
|
||||
from bot_data.model.auth_role_enum import AuthRoleEnum
|
||||
from bot_data.model.auth_user import AuthUser
|
||||
@ -93,7 +94,7 @@ class QueryABC(ObjectType):
|
||||
if permissions.is_member_technician(guild.get_member(u.discord_id)):
|
||||
return True
|
||||
|
||||
if config.get_configuration("MAINTENANCE"):
|
||||
if config.get_configuration(MAINTENANCE):
|
||||
return False
|
||||
|
||||
access = False
|
||||
@ -242,11 +243,11 @@ class QueryABC(ObjectType):
|
||||
match permission:
|
||||
case UserRoleEnum.moderator:
|
||||
can_edit = permissions.is_member_moderator
|
||||
if config.get_configuration("MAINTENANCE"):
|
||||
if config.get_configuration(MAINTENANCE):
|
||||
can_edit = lambda x: False
|
||||
case UserRoleEnum.admin:
|
||||
can_edit = permissions.is_member_admin
|
||||
if config.get_configuration("MAINTENANCE"):
|
||||
if config.get_configuration(MAINTENANCE):
|
||||
can_edit = lambda x: False
|
||||
case UserRoleEnum.technician:
|
||||
can_edit = permissions.is_member_technician
|
||||
|
@ -5,6 +5,7 @@ type TechnicianConfig implements TableWithHistoryQuery {
|
||||
waitForShutdown: Int
|
||||
cacheMaxMessages: Int
|
||||
maxSteamOfferCount: Int
|
||||
maintenance: Boolean
|
||||
featureFlagCount: Int
|
||||
featureFlags: [FeatureFlag]
|
||||
pingURLs: [String]
|
||||
@ -25,6 +26,7 @@ type TechnicianConfigHistory implements HistoryTableQuery {
|
||||
waitForShutdown: Int
|
||||
cacheMaxMessages: Int
|
||||
maxSteamOfferCount: Int
|
||||
maintenance: Boolean
|
||||
featureFlagCount: Int
|
||||
featureFlags: [FeatureFlag]
|
||||
|
||||
@ -62,6 +64,7 @@ input TechnicianConfigInput {
|
||||
waitForShutdown: Int
|
||||
cacheMaxMessages: Int
|
||||
maxSteamOfferCount: Int
|
||||
maintenance: Boolean
|
||||
featureFlags: [FeatureFlagInput]
|
||||
pingURLs: [String]
|
||||
technicianIds: [String]
|
||||
|
@ -62,6 +62,9 @@ class TechnicianConfigMutation(QueryABC):
|
||||
technician_config.max_steam_offer_count = (
|
||||
input["maxSteamOfferCount"] if "maxSteamOfferCount" in input else technician_config.max_steam_offer_count
|
||||
)
|
||||
technician_config.max_steam_offer_count = (
|
||||
input["maintenance"] if "maintenance" in input else technician_config.maintenance
|
||||
)
|
||||
old_feature_flags = technician_config.feature_flags
|
||||
technician_config.feature_flags = (
|
||||
dict(
|
||||
|
Loading…
Reference in New Issue
Block a user