mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
Remove BASE_*_TYPECLASS from flat API, break circular imports of cmdhandler in accounts/objects. Resolve #2330.
This commit is contained in:
parent
12cbe69c1f
commit
cd579fb649
3 changed files with 13 additions and 19 deletions
|
|
@ -101,17 +101,6 @@ CHANNEL_HANDLER = None
|
|||
GLOBAL_SCRIPTS = None
|
||||
OPTION_CLASSES = None
|
||||
|
||||
# typeclasses
|
||||
BASE_ACCOUNT_TYPECLASS = None
|
||||
BASE_OBJECT_TYPECLASS = None
|
||||
BASE_CHARACTER_TYPECLASS = None
|
||||
BASE_ROOM_TYPECLASS = None
|
||||
BASE_EXIT_TYPECLASS = None
|
||||
BASE_CHANNEL_TYPECLASS = None
|
||||
BASE_SCRIPT_TYPECLASS = None
|
||||
BASE_GUEST_TYPECLASS = None
|
||||
|
||||
|
||||
def _create_version():
|
||||
"""
|
||||
Helper function for building the version string
|
||||
|
|
@ -165,10 +154,6 @@ def _init():
|
|||
global EvMenu, EvTable, EvForm, EvMore, EvEditor
|
||||
global ANSIString
|
||||
|
||||
global BASE_ACCOUNT_TYPECLASS, BASE_OBJECT_TYPECLASS, BASE_CHARACTER_TYPECLASS
|
||||
global BASE_ROOM_TYPECLASS, BASE_EXIT_TYPECLASS, BASE_CHANNEL_TYPECLASS
|
||||
global BASE_SCRIPT_TYPECLASS, BASE_GUEST_TYPECLASS
|
||||
|
||||
# Parent typeclasses
|
||||
from .accounts.accounts import DefaultAccount
|
||||
from .accounts.accounts import DefaultGuest
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ from evennia.accounts.manager import AccountManager
|
|||
from evennia.accounts.models import AccountDB
|
||||
from evennia.objects.models import ObjectDB
|
||||
from evennia.comms.models import ChannelDB
|
||||
from evennia.commands import cmdhandler
|
||||
from evennia.server.models import ServerConfig
|
||||
from evennia.server.throttle import Throttle
|
||||
from evennia.utils import class_from_module, create, logger
|
||||
|
|
@ -49,6 +48,7 @@ _MULTISESSION_MODE = settings.MULTISESSION_MODE
|
|||
_MAX_NR_CHARACTERS = settings.MAX_NR_CHARACTERS
|
||||
_CMDSET_ACCOUNT = settings.CMDSET_ACCOUNT
|
||||
_MUDINFO_CHANNEL = None
|
||||
_CMDHANDLER = None
|
||||
|
||||
# Create throttles for too many account-creations and login attempts
|
||||
CREATION_THROTTLE = Throttle(
|
||||
|
|
@ -931,6 +931,10 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
|
|||
commands at run-time.
|
||||
|
||||
"""
|
||||
# break circular import issues
|
||||
global _CMDHANDLER
|
||||
if not _CMDHANDLER:
|
||||
from evennia.commands.cmdhandler import cmdhandler as _CMDHANDLER
|
||||
raw_string = self.nicks.nickreplace(
|
||||
raw_string, categories=("inputline", "channel"), include_account=False
|
||||
)
|
||||
|
|
@ -939,7 +943,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
|
|||
sessions = self.sessions.get()
|
||||
session = sessions[0] if sessions else None
|
||||
|
||||
return cmdhandler.cmdhandler(
|
||||
return _CMDHANDLER(
|
||||
self, raw_string, callertype="account", session=session, **kwargs
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ from evennia.objects.models import ObjectDB
|
|||
from evennia.scripts.scripthandler import ScriptHandler
|
||||
from evennia.commands import cmdset, command
|
||||
from evennia.commands.cmdsethandler import CmdSetHandler
|
||||
from evennia.commands import cmdhandler
|
||||
from evennia.utils import create
|
||||
from evennia.utils import search
|
||||
from evennia.utils import logger
|
||||
|
|
@ -41,6 +40,7 @@ _MULTISESSION_MODE = settings.MULTISESSION_MODE
|
|||
|
||||
_ScriptDB = None
|
||||
_SESSIONS = None
|
||||
_CMDHANDLER = None
|
||||
|
||||
_AT_SEARCH_RESULT = variable_from_module(*settings.SEARCH_AT_RESULT.rsplit(".", 1))
|
||||
_COMMAND_DEFAULT_CLASS = class_from_module(settings.COMMAND_DEFAULT_CLASS)
|
||||
|
|
@ -615,12 +615,17 @@ class DefaultObject(ObjectDB, metaclass=TypeclassBase):
|
|||
command structure.
|
||||
|
||||
"""
|
||||
# break circular import issues
|
||||
global _CMDHANDLER
|
||||
if not _CMDHANDLER:
|
||||
from evennia.commands.cmdhandler import cmdhandler as _CMDHANDLER
|
||||
|
||||
# nick replacement - we require full-word matching.
|
||||
# do text encoding conversion
|
||||
raw_string = self.nicks.nickreplace(
|
||||
raw_string, categories=("inputline", "channel"), include_account=True
|
||||
)
|
||||
return cmdhandler.cmdhandler(
|
||||
return _CMDHANDLER(
|
||||
self, raw_string, callertype="object", session=session, **kwargs
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue