Moving modules in separate folders

This commit is contained in:
adator
2025-08-08 17:38:45 +02:00
parent 7a50bc9632
commit 0a655b2df0
13 changed files with 138 additions and 127 deletions

View File

@@ -391,7 +391,7 @@ class Base:
result = response.fetchall()
for param, value in result:
if type(getattr(dataclassObj, param)) == list:
if isinstance(getattr(dataclassObj, param), list):
value = ast.literal_eval(value)
setattr(dataclassObj, param, self.int_if_possible(value))

View File

@@ -1,6 +1,6 @@
from re import match, findall, search
from datetime import datetime
from typing import TYPE_CHECKING, Union
from typing import TYPE_CHECKING, Optional, Union
from ssl import SSLEOFError, SSLError
if TYPE_CHECKING:
@@ -17,14 +17,21 @@ class Unrealircd6:
self.__Base = ircInstance.Base
self.__Settings = ircInstance.Base.Settings
self.known_protocol = ['SJOIN', 'UID', 'MD', 'QUIT', 'SQUIT',
self.known_protocol: set[str] = {'SJOIN', 'UID', 'MD', 'QUIT', 'SQUIT',
'EOS', 'PRIVMSG', 'MODE', 'UMODE2',
'VERSION', 'REPUTATION', 'SVS2MODE',
'SLOG', 'NICK', 'PART', 'PONG'
]
'SLOG', 'NICK', 'PART', 'PONG'}
self.__Base.logs.info(f"** Loading protocol [{__name__}]")
def get_ircd_protocol_poisition(self, cmd: list[str]) -> tuple[int, Optional[str]]:
for index, token in enumerate(cmd):
if token.upper() in self.known_protocol:
return index, token.upper()
return (-1, None)
def send2socket(self, message: str, print_log: bool = True) -> None:
"""Envoit les commandes à envoyer au serveur.

View File

@@ -1,10 +1,26 @@
from datetime import datetime
from dataclasses import dataclass, field
from typing import Literal
from json import dumps
from dataclasses import dataclass, field, asdict, fields
from typing import Literal, Any
from os import sep
@dataclass
class MClient:
class MainModel:
"""Parent Model contains important methods"""
def to_dict(self) -> dict[str, Any]:
"""Return the fields of a dataclass instance as a new dictionary mapping field names to field values."""
return asdict(self)
def to_json(self) -> str:
"""Return the object of a dataclass a json str."""
return dumps(self.to_dict())
def get_attributes(self) -> list[str]:
"""Return a list of attributes name"""
return [f.name for f in fields(self)]
@dataclass
class MClient(MainModel):
"""Model Client for registred nickname"""
uid: str = None
account: str = None
@@ -22,7 +38,7 @@ class MClient:
connexion_datetime: datetime = field(default=datetime.now())
@dataclass
class MUser:
class MUser(MainModel):
"""Model User"""
uid: str = None
@@ -40,7 +56,7 @@ class MUser:
connexion_datetime: datetime = field(default=datetime.now())
@dataclass
class MAdmin:
class MAdmin(MainModel):
"""Model Admin"""
uid: str = None
@@ -59,7 +75,7 @@ class MAdmin:
level: int = 0
@dataclass
class MReputation:
class MReputation(MainModel):
"""Model Reputation"""
uid: str = None
nickname: str = None
@@ -77,7 +93,7 @@ class MReputation:
secret_code: str = None
@dataclass
class MChannel:
class MChannel(MainModel):
"""Model Channel"""
name: str = None
@@ -92,7 +108,7 @@ class MChannel:
"""
@dataclass
class ColorModel:
class ColorModel(MainModel):
white: str = "\x0300"
black: str = "\x0301"
blue: str = "\x0302"
@@ -104,7 +120,7 @@ class ColorModel:
underline: str = "\x1F"
@dataclass
class MConfig:
class MConfig(MainModel):
"""Model Configuration"""
SERVEUR_IP: str = "127.0.0.1"
@@ -305,7 +321,7 @@ class MConfig:
"""0: utf-8 | 1: iso-8859-1"""
@dataclass
class MClone:
class MClone(MainModel):
"""Model Clone"""
connected: bool = False
uid: str = None

View File

@@ -494,7 +494,8 @@ class Irc:
try:
# module_name : mod_voice
module_name = module_name.lower()
class_name = module_name.split('_')[1].capitalize() # ==> Voice
module_folder = module_name.split('_')[1].lower() # ==> voice
class_name = module_name.split('_')[1].capitalize() # ==> Voice
# print(self.loaded_classes)
@@ -511,7 +512,7 @@ class Irc:
)
return False
the_module = sys.modules['mods.' + module_name]
the_module = sys.modules[f'mods.{module_folder}.{module_name}']
importlib.reload(the_module)
my_class = getattr(the_module, class_name, None)
new_instance = my_class(self.ircObject)
@@ -529,7 +530,7 @@ class Irc:
return False
# Charger le module
loaded_module = importlib.import_module(f"mods.{module_name}")
loaded_module = importlib.import_module(f'mods.{module_folder}.{module_name}')
my_class = getattr(loaded_module, class_name, None) # Récuperer le nom de classe
create_instance_of_the_class = my_class(self.ircObject) # Créer une nouvelle instance de la classe
@@ -612,13 +613,14 @@ class Irc:
def reload_module(self, from_user: str, mod_name: str) -> bool:
try:
module_name = mod_name.lower() # ==> mod_defender
module_folder = module_name.split('_')[1].lower() # ==> defender
class_name = module_name.split('_')[1].capitalize() # ==> Defender
if 'mods.' + module_name in sys.modules:
self.Logs.info('Unload the module ...')
self.loaded_classes[class_name].unload()
self.Logs.info('Module Already Loaded ... reloading the module ...')
the_module = sys.modules['mods.' + module_name]
the_module = sys.modules[f'mods.{module_folder}.{module_name}']
importlib.reload(the_module)
# Supprimer la class déja instancier