Resolve master merge conflicts

This commit is contained in:
Griatch 2018-02-08 21:10:23 +01:00
commit 495078a49d
3 changed files with 25 additions and 3 deletions

View file

@ -21,7 +21,7 @@ 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.commands import cmdhandler
from evennia.utils import logger from evennia.utils import logger
from evennia.utils.utils import (lazy_property, from evennia.utils.utils import (lazy_property, to_str,
make_iter, to_unicode, is_iter, make_iter, to_unicode, is_iter,
variable_from_module) variable_from_module)
from evennia.typeclasses.attributes import NickHandler from evennia.typeclasses.attributes import NickHandler
@ -421,6 +421,13 @@ class DefaultAccount(with_metaclass(TypeclassBase, AccountDB)):
kwargs["options"] = options kwargs["options"] = options
if text and not (isinstance(text, basestring) or isinstance(text, tuple)):
# sanitize text before sending across the wire
try:
text = to_str(text, force_string=True)
except Exception:
text = repr(text)
# session relay # session relay
sessions = make_iter(session) if session else self.sessions.all() sessions = make_iter(session) if session else self.sessions.all()
for session in sessions: for session in sessions:

View file

@ -24,7 +24,8 @@ from evennia.commands import cmdhandler
from evennia.utils import search from evennia.utils import search
from evennia.utils import logger from evennia.utils import logger
from evennia.utils.utils import (variable_from_module, lazy_property, from evennia.utils.utils import (variable_from_module, lazy_property,
make_iter, to_unicode, is_iter, list_to_string) make_iter, to_unicode, is_iter, list_to_string,
to_str)
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
_INFLECT = inflect.engine() _INFLECT = inflect.engine()
@ -561,11 +562,19 @@ class DefaultObject(with_metaclass(TypeclassBase, ObjectDB)):
kwargs["options"] = options kwargs["options"] = options
if text and not (isinstance(text, basestring) or isinstance(text, tuple)):
# sanitize text before sending across the wire
try:
text = to_str(text, force_string=True)
except Exception:
text = repr(text)
# relay to session(s) # relay to session(s)
sessions = make_iter(session) if session else self.sessions.all() sessions = make_iter(session) if session else self.sessions.all()
for session in sessions: for session in sessions:
session.data_out(text=text, **kwargs) session.data_out(text=text, **kwargs)
def for_contents(self, func, exclude=None, **kwargs): def for_contents(self, func, exclude=None, **kwargs):
""" """
Runs a function on every object contained within this one. Runs a function on every object contained within this one.

View file

@ -34,7 +34,13 @@ def _shared_login(request):
if webclient_uid: if webclient_uid:
# The webclient has previously registered a login to this browser_session # The webclient has previously registered a login to this browser_session
if not account.is_authenticated() and not website_uid: if not account.is_authenticated() and not website_uid:
try:
account = AccountDB.objects.get(id=webclient_uid) account = AccountDB.objects.get(id=webclient_uid)
except AccountDB.DoesNotExist:
# this can happen e.g. for guest accounts or deletions
csession["website_authenticated_uid"] = False
csession["webclient_authenticated_uid"] = False
return
try: try:
# calls our custom authenticate in web/utils/backends.py # calls our custom authenticate in web/utils/backends.py
account = authenticate(autologin=account) account = authenticate(autologin=account)