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:
|
else:
|
||||||
nsess = len(player.sessions.all())
|
nsess = len(player.sessions.all())
|
||||||
if nsess == 2:
|
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:
|
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:
|
else:
|
||||||
# we are quitting the last available session
|
# 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)
|
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._send_to_connect_channel("|G%s connected|n" % self.key)
|
||||||
self.puppet_object(session, self.db._last_puppet)
|
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):
|
def at_server_shutdown(self):
|
||||||
"""
|
"""
|
||||||
|
|
@ -929,13 +919,17 @@ class DefaultGuest(DefaultPlayer):
|
||||||
super(DefaultGuest, self).at_server_shutdown()
|
super(DefaultGuest, self).at_server_shutdown()
|
||||||
characters = self.db._playable_characters
|
characters = self.db._playable_characters
|
||||||
for character in characters:
|
for character in characters:
|
||||||
if character: character.delete()
|
if character:
|
||||||
|
print "deleting Character:", character
|
||||||
|
character.delete()
|
||||||
|
|
||||||
def at_post_disconnect(self):
|
def at_post_disconnect(self):
|
||||||
"""
|
"""
|
||||||
Guests aren't meant to linger on the server, either. We need
|
Once having disconnected, destroy the guest's characters and
|
||||||
to wait until after the Guest disconnects to delete it,
|
|
||||||
though.
|
|
||||||
"""
|
"""
|
||||||
super(DefaultGuest, self).at_post_disconnect()
|
super(DefaultGuest, self).at_post_disconnect()
|
||||||
|
characters = self.db._playable_characters
|
||||||
|
for character in characters:
|
||||||
|
if character:
|
||||||
|
character.delete()
|
||||||
self.delete()
|
self.delete()
|
||||||
|
|
|
||||||
|
|
@ -479,7 +479,8 @@ CLIENT_DEFAULT_HEIGHT = 45 # telnet standard is 24 but does anyone use such
|
||||||
# Guest accounts
|
# 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
|
GUEST_ENABLED = False
|
||||||
# Typeclass for guest player objects (linked to a character)
|
# Typeclass for guest player objects (linked to a character)
|
||||||
BASE_GUEST_TYPECLASS = "typeclasses.players.Guest"
|
BASE_GUEST_TYPECLASS = "typeclasses.players.Guest"
|
||||||
|
|
|
||||||
|
|
@ -620,7 +620,7 @@ class AttributeHandler(object):
|
||||||
[attr.delete() for attr in self._cache.values()
|
[attr.delete() for attr in self._cache.values()
|
||||||
if attr.access(accessing_obj, self._attredit, default=default_access)]
|
if attr.access(accessing_obj, self._attredit, default=default_access)]
|
||||||
else:
|
else:
|
||||||
[attr.delete() for attr in self._cache.values()]
|
[attr.delete() for attr in self._cache.values() if attr.pk]
|
||||||
self._cache = {}
|
self._cache = {}
|
||||||
self._catcache = {}
|
self._catcache = {}
|
||||||
self._cache_complete = False
|
self._cache_complete = False
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue