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