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)
|
caller.msg(string)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
# Build a list of targets
|
# Build a list of targets
|
||||||
|
|
||||||
if not self.lhs:
|
if not self.lhs:
|
||||||
|
|
@ -775,10 +774,10 @@ class CmdPage(MuxCommand):
|
||||||
|
|
||||||
recobjs = []
|
recobjs = []
|
||||||
for receiver in receivers:
|
for receiver in receivers:
|
||||||
obj = caller.search("*%s" % (receiver.lstrip('*')), global_search=True)
|
pobj = caller.search("*%s" % (receiver.lstrip('*')), global_search=True)
|
||||||
if not obj:
|
if not pobj:
|
||||||
return
|
return
|
||||||
recobjs.append(obj)
|
recobjs.append(pobj)
|
||||||
|
|
||||||
header = "{wPlayer{n {c%s{n {wpages:{n" % caller.key
|
header = "{wPlayer{n {c%s{n {wpages:{n" % caller.key
|
||||||
message = self.rhs
|
message = self.rhs
|
||||||
|
|
@ -786,7 +785,7 @@ class CmdPage(MuxCommand):
|
||||||
msg = create.create_message(caller, message,
|
msg = create.create_message(caller, message,
|
||||||
receivers=recobjs)
|
receivers=recobjs)
|
||||||
# tell the players they got a message.
|
# tell the players they got a message.
|
||||||
for obj in recobjs:
|
for pobj in recobjs:
|
||||||
obj.msg("%s %s" % (header, message))
|
pobj.msg("%s %s" % (header, message))
|
||||||
caller.msg("You paged %s with '%s'." % (recobjs, 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)
|
sender = to_object(sender)
|
||||||
if not sender:
|
if not sender:
|
||||||
return None
|
return None
|
||||||
return [msg for msg in sender.sender_set.all()
|
return self.filter(db_sender=sender).exclude(db_hide_from_sender=False)
|
||||||
if sender not in msg.hide_from_senders.all()]
|
|
||||||
|
|
||||||
def get_messages_by_receiver(self, receiver):
|
def get_messages_by_receiver(self, receiver):
|
||||||
"""
|
"""
|
||||||
|
|
@ -76,8 +75,9 @@ class MsgManager(models.Manager):
|
||||||
receiver = to_object(receiver)
|
receiver = to_object(receiver)
|
||||||
if not receiver:
|
if not receiver:
|
||||||
return None
|
return None
|
||||||
return [msg for msg in receiver.receiver_set.all()
|
return [msg for msg in self.all()
|
||||||
if receiver not in msg.hide_from_receivers.all()]
|
if receiver in msg.recivers
|
||||||
|
and receiver not in msg.hide_from_receivers]
|
||||||
|
|
||||||
def get_messages_by_channel(self, channel):
|
def get_messages_by_channel(self, channel):
|
||||||
"""
|
"""
|
||||||
|
|
@ -86,9 +86,9 @@ class MsgManager(models.Manager):
|
||||||
channel = to_object(channel, objtype='channel')
|
channel = to_object(channel, objtype='channel')
|
||||||
if not channel:
|
if not channel:
|
||||||
return None
|
return None
|
||||||
return [msg for msg in channel.channel_set.all()
|
return [msg for msg in self.all()
|
||||||
if channel not in msg.hide_from_channels.all()]
|
if channel in msg.channels
|
||||||
|
and channel not in msg.hide_from_channels]
|
||||||
|
|
||||||
#TODO add search limited by send_times
|
#TODO add search limited by send_times
|
||||||
def text_search(self, searchstring, filterdict=None):
|
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
|
# 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
|
# game to mask out messages from being visible in the archive (no
|
||||||
# messages are actually deleted)
|
# messages are actually deleted)
|
||||||
#db_hide_from_sender = models.BooleanField(default=False)
|
db_hide_from_sender = models.BooleanField(default=False)
|
||||||
#db_hide_from_receivers = models.CharField(max_length=255, null=True, blank=True)
|
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_channels = models.CharField(max_length=255, null=True, blank=True)
|
||||||
# permission strings, separated by commas
|
# permission strings, separated by commas
|
||||||
db_permissions = models.CharField(max_length=255, blank=True)
|
db_permissions = models.CharField(max_length=255, blank=True)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ Custom manager for Objects.
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from src.typeclasses.managers import TypedObjectManager
|
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
|
from src.utils import create
|
||||||
|
|
||||||
# Try to use a custom way to parse id-tagged multimatches.
|
# Try to use a custom way to parse id-tagged multimatches.
|
||||||
|
|
@ -62,17 +62,23 @@ class ObjectManager(TypedObjectManager):
|
||||||
# ObjectManager Get methods
|
# ObjectManager Get methods
|
||||||
#
|
#
|
||||||
|
|
||||||
@returns_typeclass_list
|
@returns_typeclass
|
||||||
def get_object_with_user(self, user):
|
def get_object_with_user(self, user):
|
||||||
"""
|
"""
|
||||||
Matches objects with obj.player.user matching the argument.
|
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:
|
try:
|
||||||
uid = int(user)
|
uid = int(user)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
uid = user.id
|
uid = user.id
|
||||||
return self.filter(db_player__user__id=uid)
|
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.
|
# This returns typeclass since get_object_with_user and get_dbref does.
|
||||||
def player_name_search(self, search_string):
|
def player_name_search(self, search_string):
|
||||||
|
|
@ -273,7 +279,7 @@ class ObjectManager(TypedObjectManager):
|
||||||
player_string = ostring.lstrip("*")
|
player_string = ostring.lstrip("*")
|
||||||
player_match = self.player_name_search(player_string)
|
player_match = self.player_name_search(player_string)
|
||||||
if player_match is not None:
|
if player_match is not None:
|
||||||
return [player_match]
|
return [player_match]
|
||||||
|
|
||||||
if global_search or not location:
|
if global_search or not location:
|
||||||
# search all objects
|
# search all objects
|
||||||
|
|
|
||||||
|
|
@ -450,6 +450,7 @@ class ObjectDB(TypedObject):
|
||||||
results = ObjectDB.objects.object_search(self, ostring,
|
results = ObjectDB.objects.object_search(self, ostring,
|
||||||
global_search,
|
global_search,
|
||||||
attribute_name)
|
attribute_name)
|
||||||
|
|
||||||
if ignore_errors:
|
if ignore_errors:
|
||||||
return results
|
return results
|
||||||
return HANDLE_SEARCH_ERRORS(self, ostring, results, global_search)
|
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)
|
character = ObjectDB.objects.get_object_with_user(self.uid)
|
||||||
if not character:
|
if not character:
|
||||||
string = "No character match for session uid: %s" % self.uid
|
string = "No character match for session uid: %s" % self.uid
|
||||||
logger.log_errmsg(string)
|
logger.log_errmsg(string)
|
||||||
return None
|
else:
|
||||||
return character[0]
|
return character
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def execute_cmd(self, raw_string):
|
def execute_cmd(self, raw_string):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue