Changed importing of SESSION_HANDLER to avoid circular imports when extending Portal or Server SessionHandler.

This commit is contained in:
Andrew Bastien 2023-05-11 20:39:30 -04:00
parent 3d3bd5e9d7
commit 53d963e14c
25 changed files with 118 additions and 152 deletions

View file

@ -22,7 +22,7 @@ import time
from codecs import lookup as codecs_lookup
from django.conf import settings
from evennia.server.sessionhandler import SESSIONS
import evennia
from evennia.utils import create, logger, search, utils
COMMAND_DEFAULT_CLASS = utils.class_from_module(settings.COMMAND_DEFAULT_CLASS)
@ -495,9 +495,8 @@ class CmdWho(COMMAND_DEFAULT_CLASS):
"""
Get all connected accounts by polling session.
"""
account = self.account
session_list = SESSIONS.get_sessions()
session_list = evennia.SESSION_HANDLER.get_sessions()
session_list = sorted(session_list, key=lambda o: o.account.key)
@ -508,7 +507,7 @@ class CmdWho(COMMAND_DEFAULT_CLASS):
"Admins"
)
naccounts = SESSIONS.account_count()
naccounts = evennia.SESSION_HANDLER.account_count()
if show_session_data:
# privileged info
table = self.styled_table(

View file

@ -10,7 +10,8 @@ import time
from django.conf import settings
from evennia.server.models import ServerConfig
from evennia.server.sessionhandler import SESSIONS
import evennia
from evennia.utils import class_from_module, evtable, logger, search
COMMAND_DEFAULT_CLASS = class_from_module(settings.COMMAND_DEFAULT_CLASS)
@ -68,7 +69,7 @@ class CmdBoot(COMMAND_DEFAULT_CLASS):
if "sid" in self.switches:
# Boot a particular session id.
sessions = SESSIONS.get_sessions(True)
sessions = evennia.SESSION_HANDLER.get_sessions(True)
for sess in sessions:
# Find the session with the matching session id.
if sess.sessid == int(args):
@ -85,7 +86,7 @@ class CmdBoot(COMMAND_DEFAULT_CLASS):
caller.msg(f"You don't have the permission to boot {pobj.key}.")
return
# we have a bootable object with a connected user
matches = SESSIONS.sessions_from_account(pobj)
matches = evennia.SESSION_HANDLER.sessions_from_account(pobj)
for match in matches:
boot_list.append(match)
@ -564,7 +565,7 @@ class CmdWall(COMMAND_DEFAULT_CLASS):
return
message = f'{self.caller.name} shouts "{self.args}"'
self.msg("Announcing to all connected sessions ...")
SESSIONS.announce_all(message)
evennia.SESSION_HANDLER.announce_all(message)
class CmdForce(COMMAND_DEFAULT_CLASS):

View file

@ -16,9 +16,9 @@ import django
import twisted
from django.conf import settings
import evennia
from evennia.accounts.models import AccountDB
from evennia.scripts.taskhandler import TaskHandlerTask
from evennia.server.sessionhandler import SESSIONS
from evennia.utils import gametime, logger, search, utils
from evennia.utils.eveditor import EvEditor
from evennia.utils.evmenu import ask_yes_no
@ -74,8 +74,8 @@ class CmdReload(COMMAND_DEFAULT_CLASS):
if self.args:
reason = "(Reason: %s) " % self.args.rstrip(".")
if _BROADCAST_SERVER_RESTART_MESSAGES:
SESSIONS.announce_all(f" Server restart initiated {reason}...")
SESSIONS.portal_restart_server()
evennia.SESSION_HANDLER.announce_all(f" Server restart initiated {reason}...")
evennia.SESSION_HANDLER.portal_restart_server()
class CmdReset(COMMAND_DEFAULT_CLASS):
@ -108,8 +108,8 @@ class CmdReset(COMMAND_DEFAULT_CLASS):
"""
Reload the system.
"""
SESSIONS.announce_all(" Server resetting/restarting ...")
SESSIONS.portal_reset_server()
evennia.SESSION_HANDLER.announce_all(" Server resetting/restarting ...")
evennia.SESSION_HANDLER.portal_reset_server()
class CmdShutdown(COMMAND_DEFAULT_CLASS):
@ -137,8 +137,8 @@ class CmdShutdown(COMMAND_DEFAULT_CLASS):
if self.args:
announcement += "%s\n" % self.args
logger.log_info(f"Server shutdown by {self.caller.name}.")
SESSIONS.announce_all(announcement)
SESSIONS.portal_shutdown()
evennia.SESSION_HANDLER.announce_all(announcement)
evennia.SESSION_HANDLER.portal_shutdown()
def _py_load(caller):
@ -562,7 +562,7 @@ class CmdService(COMMAND_DEFAULT_CLASS):
return
# get all services
service_collection = SESSIONS.server.services
service_collection = evennia.SESSION_HANDLER.server.services
if not switches or switches[0] == "list":
# Just display the list of installed services and their

View file

@ -17,6 +17,7 @@ from unittest.mock import MagicMock, Mock, patch
from anything import Anything
from django.conf import settings
from django.test import override_settings
import evennia
from evennia import (
DefaultCharacter,
DefaultExit,
@ -34,7 +35,6 @@ from evennia.commands.default import syscommands, system, unloggedin
from evennia.commands.default.cmdset_character import CharacterCmdSet
from evennia.commands.default.muxcommand import MuxCommand
from evennia.prototypes import prototypes as protlib
from evennia.server.sessionhandler import SESSIONS
from evennia.utils import create, gametime, utils
from evennia.utils.test_resources import BaseEvenniaCommandTest # noqa
from evennia.utils.test_resources import BaseEvenniaTest, EvenniaCommandTest
@ -2113,7 +2113,7 @@ class TestUnconnectedCommand(BaseEvenniaCommandTest):
% (
settings.SERVERNAME,
datetime.datetime.fromtimestamp(gametime.SERVER_START_TIME).ctime(),
SESSIONS.account_count(),
evennia.SESSION_HANDLER.account_count(),
utils.get_evennia_version(),
)
)

View file

@ -8,9 +8,9 @@ from codecs import lookup as codecs_lookup
from django.conf import settings
import evennia
from evennia.commands.cmdhandler import CMD_LOGINSTART
from evennia.comms.models import ChannelDB
from evennia.server.sessionhandler import SESSIONS
from evennia.utils import class_from_module, create, gametime, logger, utils
COMMAND_DEFAULT_CLASS = utils.class_from_module(settings.COMMAND_DEFAULT_CLASS)
@ -462,7 +462,7 @@ class CmdUnconnectedInfo(COMMAND_DEFAULT_CLASS):
% (
settings.SERVERNAME,
datetime.datetime.fromtimestamp(gametime.SERVER_START_TIME).ctime(),
SESSIONS.account_count(),
evennia.SESSION_HANDLER.account_count(),
utils.get_evennia_version(),
)
)