mirror of
https://github.com/evennia/evennia.git
synced 2026-03-30 20:47:17 +02:00
Fix case of guest not getting properly deleted when logging off. Resolves #1194.
This commit is contained in:
parent
3a2638aed5
commit
ff1ee76421
4 changed files with 14 additions and 19 deletions
|
|
@ -665,12 +665,12 @@ class CmdQuit(COMMAND_DEFAULT_CLASS):
|
|||
else:
|
||||
nsess = len(player.sessions.all())
|
||||
if nsess == 2:
|
||||
player.msg("{RQuitting{n. One session is still connected.", session=self.session)
|
||||
player.msg("|RQuitting|n. One session is still connected.", session=self.session)
|
||||
elif nsess > 2:
|
||||
player.msg("{RQuitting{n. %i session are still connected." % (nsess-1), session=self.session)
|
||||
player.msg("|RQuitting|n. %i sessions are still connected." % (nsess-1), session=self.session)
|
||||
else:
|
||||
# we are quitting the last available session
|
||||
player.msg("{RQuitting{n. Hope to see you again, soon.", session=self.session)
|
||||
player.msg("|RQuitting|n. Hope to see you again, soon.", session=self.session)
|
||||
player.disconnect_session_from_player(self.session)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -910,16 +910,6 @@ class DefaultGuest(DefaultPlayer):
|
|||
self._send_to_connect_channel("|G%s connected|n" % self.key)
|
||||
self.puppet_object(session, self.db._last_puppet)
|
||||
|
||||
def at_disconnect(self):
|
||||
"""
|
||||
A Guest's characters aren't meant to linger on the server.
|
||||
When a Guest disconnects, we remove its character.
|
||||
|
||||
"""
|
||||
super(DefaultGuest, self).at_disconnect()
|
||||
characters = self.db._playable_characters
|
||||
for character in characters:
|
||||
if character: character.delete()
|
||||
|
||||
def at_server_shutdown(self):
|
||||
"""
|
||||
|
|
@ -929,13 +919,17 @@ class DefaultGuest(DefaultPlayer):
|
|||
super(DefaultGuest, self).at_server_shutdown()
|
||||
characters = self.db._playable_characters
|
||||
for character in characters:
|
||||
if character: character.delete()
|
||||
if character:
|
||||
print "deleting Character:", character
|
||||
character.delete()
|
||||
|
||||
def at_post_disconnect(self):
|
||||
"""
|
||||
Guests aren't meant to linger on the server, either. We need
|
||||
to wait until after the Guest disconnects to delete it,
|
||||
though.
|
||||
Once having disconnected, destroy the guest's characters and
|
||||
"""
|
||||
super(DefaultGuest, self).at_post_disconnect()
|
||||
characters = self.db._playable_characters
|
||||
for character in characters:
|
||||
if character:
|
||||
character.delete()
|
||||
self.delete()
|
||||
|
|
|
|||
|
|
@ -479,7 +479,8 @@ CLIENT_DEFAULT_HEIGHT = 45 # telnet standard is 24 but does anyone use such
|
|||
# Guest accounts
|
||||
######################################################################
|
||||
|
||||
# This enables guest logins, by default via "connect guest"
|
||||
# This enables guest logins, by default via "connect guest". Note that
|
||||
# you need to edit your login screen to inform about this possibility.
|
||||
GUEST_ENABLED = False
|
||||
# Typeclass for guest player objects (linked to a character)
|
||||
BASE_GUEST_TYPECLASS = "typeclasses.players.Guest"
|
||||
|
|
|
|||
|
|
@ -620,7 +620,7 @@ class AttributeHandler(object):
|
|||
[attr.delete() for attr in self._cache.values()
|
||||
if attr.access(accessing_obj, self._attredit, default=default_access)]
|
||||
else:
|
||||
[attr.delete() for attr in self._cache.values()]
|
||||
[attr.delete() for attr in self._cache.values() if attr.pk]
|
||||
self._cache = {}
|
||||
self._catcache = {}
|
||||
self._cache_complete = False
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue