mirror of
https://github.com/evennia/evennia.git
synced 2026-03-24 08:46:31 +01:00
Fixed a lacking implementation in the Msg API. You need to re-sync the database since Msg now relies on three fields that where commented out before.
This commit is contained in:
parent
72bb8ac667
commit
d90c2909a2
6 changed files with 33 additions and 27 deletions
|
|
@ -763,7 +763,6 @@ class CmdPage(MuxCommand):
|
|||
caller.msg(string)
|
||||
return
|
||||
|
||||
|
||||
# Build a list of targets
|
||||
|
||||
if not self.lhs:
|
||||
|
|
@ -775,10 +774,10 @@ class CmdPage(MuxCommand):
|
|||
|
||||
recobjs = []
|
||||
for receiver in receivers:
|
||||
obj = caller.search("*%s" % (receiver.lstrip('*')), global_search=True)
|
||||
if not obj:
|
||||
pobj = caller.search("*%s" % (receiver.lstrip('*')), global_search=True)
|
||||
if not pobj:
|
||||
return
|
||||
recobjs.append(obj)
|
||||
recobjs.append(pobj)
|
||||
|
||||
header = "{wPlayer{n {c%s{n {wpages:{n" % caller.key
|
||||
message = self.rhs
|
||||
|
|
@ -786,7 +785,7 @@ class CmdPage(MuxCommand):
|
|||
msg = create.create_message(caller, message,
|
||||
receivers=recobjs)
|
||||
# tell the players they got a message.
|
||||
for obj in recobjs:
|
||||
obj.msg("%s %s" % (header, message))
|
||||
caller.msg("You paged %s with '%s'." % (recobjs, message))
|
||||
|
||||
for pobj in recobjs:
|
||||
pobj.msg("%s %s" % (header, message))
|
||||
target_names = "{n,{c ".join([pobj.name for pobj in recobjs])
|
||||
caller.msg("You paged {c%s{n with: '%s'." % (target_names, message))
|
||||
|
|
|
|||
|
|
@ -66,8 +66,7 @@ class MsgManager(models.Manager):
|
|||
sender = to_object(sender)
|
||||
if not sender:
|
||||
return None
|
||||
return [msg for msg in sender.sender_set.all()
|
||||
if sender not in msg.hide_from_senders.all()]
|
||||
return self.filter(db_sender=sender).exclude(db_hide_from_sender=False)
|
||||
|
||||
def get_messages_by_receiver(self, receiver):
|
||||
"""
|
||||
|
|
@ -76,8 +75,9 @@ class MsgManager(models.Manager):
|
|||
receiver = to_object(receiver)
|
||||
if not receiver:
|
||||
return None
|
||||
return [msg for msg in receiver.receiver_set.all()
|
||||
if receiver not in msg.hide_from_receivers.all()]
|
||||
return [msg for msg in self.all()
|
||||
if receiver in msg.recivers
|
||||
and receiver not in msg.hide_from_receivers]
|
||||
|
||||
def get_messages_by_channel(self, channel):
|
||||
"""
|
||||
|
|
@ -86,9 +86,9 @@ class MsgManager(models.Manager):
|
|||
channel = to_object(channel, objtype='channel')
|
||||
if not channel:
|
||||
return None
|
||||
return [msg for msg in channel.channel_set.all()
|
||||
if channel not in msg.hide_from_channels.all()]
|
||||
|
||||
return [msg for msg in self.all()
|
||||
if channel in msg.channels
|
||||
and channel not in msg.hide_from_channels]
|
||||
|
||||
#TODO add search limited by send_times
|
||||
def text_search(self, searchstring, filterdict=None):
|
||||
|
|
|
|||
|
|
@ -107,9 +107,9 @@ class Msg(SharedMemoryModel):
|
|||
# Stored as a comma-separated string of dbrefs. Can be used by the
|
||||
# game to mask out messages from being visible in the archive (no
|
||||
# messages are actually deleted)
|
||||
#db_hide_from_sender = models.BooleanField(default=False)
|
||||
#db_hide_from_receivers = models.CharField(max_length=255, null=True, blank=True)
|
||||
#db_hide_from_channels = models.CharField(max_length=255, null=True, blank=True)
|
||||
db_hide_from_sender = models.BooleanField(default=False)
|
||||
db_hide_from_receivers = models.CharField(max_length=255, null=True, blank=True)
|
||||
db_hide_from_channels = models.CharField(max_length=255, null=True, blank=True)
|
||||
# permission strings, separated by commas
|
||||
db_permissions = models.CharField(max_length=255, blank=True)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ Custom manager for Objects.
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from src.typeclasses.managers import TypedObjectManager
|
||||
from src.typeclasses.managers import returns_typeclass_list
|
||||
from src.typeclasses.managers import returns_typeclass, returns_typeclass_list
|
||||
from src.utils import create
|
||||
|
||||
# Try to use a custom way to parse id-tagged multimatches.
|
||||
|
|
@ -62,17 +62,23 @@ class ObjectManager(TypedObjectManager):
|
|||
# ObjectManager Get methods
|
||||
#
|
||||
|
||||
@returns_typeclass_list
|
||||
@returns_typeclass
|
||||
def get_object_with_user(self, user):
|
||||
"""
|
||||
Matches objects with obj.player.user matching the argument.
|
||||
Both an user object and a user id may be supplied.
|
||||
A player<->user is a one-to-relationship, so this always
|
||||
returns just one result or None.
|
||||
|
||||
user - mayb be a user object or user id.
|
||||
"""
|
||||
try:
|
||||
uid = int(user)
|
||||
except TypeError:
|
||||
uid = user.id
|
||||
return self.filter(db_player__user__id=uid)
|
||||
uid = user.id
|
||||
try:
|
||||
return self.get(db_player__user__id=uid)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
# This returns typeclass since get_object_with_user and get_dbref does.
|
||||
def player_name_search(self, search_string):
|
||||
|
|
@ -273,7 +279,7 @@ class ObjectManager(TypedObjectManager):
|
|||
player_string = ostring.lstrip("*")
|
||||
player_match = self.player_name_search(player_string)
|
||||
if player_match is not None:
|
||||
return [player_match]
|
||||
return [player_match]
|
||||
|
||||
if global_search or not location:
|
||||
# search all objects
|
||||
|
|
|
|||
|
|
@ -450,6 +450,7 @@ class ObjectDB(TypedObject):
|
|||
results = ObjectDB.objects.object_search(self, ostring,
|
||||
global_search,
|
||||
attribute_name)
|
||||
|
||||
if ignore_errors:
|
||||
return results
|
||||
return HANDLE_SEARCH_ERRORS(self, ostring, results, global_search)
|
||||
|
|
|
|||
|
|
@ -140,9 +140,9 @@ class SessionProtocol(StatefulTelnetProtocol):
|
|||
character = ObjectDB.objects.get_object_with_user(self.uid)
|
||||
if not character:
|
||||
string = "No character match for session uid: %s" % self.uid
|
||||
logger.log_errmsg(string)
|
||||
return None
|
||||
return character[0]
|
||||
logger.log_errmsg(string)
|
||||
else:
|
||||
return character
|
||||
return None
|
||||
|
||||
def execute_cmd(self, raw_string):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue