Flag searching implemented.

This commit is contained in:
Greg Taylor 2009-01-22 15:05:31 +00:00
parent 377844f1c6
commit 9403d15ae8

View file

@ -1,6 +1,7 @@
""" """
Implementation of the @search command that resembles MUX2. Implementation of the @search command that resembles MUX2.
""" """
from django.db.models import Q
from src.objects.models import Object from src.objects.models import Object
from src import defines_global from src import defines_global
@ -35,6 +36,7 @@ def display_results(session, search_query):
thing_list = [] thing_list = []
room_list = [] room_list = []
exit_list = [] exit_list = []
player_list = []
for obj in search_query: for obj in search_query:
if obj.is_thing(): if obj.is_thing():
@ -43,6 +45,8 @@ def display_results(session, search_query):
room_list.append(obj) room_list.append(obj)
elif obj.is_exit(): elif obj.is_exit():
exit_list.append(obj) exit_list.append(obj)
elif obj.is_player():
player_list.append(obj)
# Render each section for different object types # Render each section for different object types
if thing_list: if thing_list:
@ -60,11 +64,17 @@ def display_results(session, search_query):
for room in room_list: for room in room_list:
session.msg(room.get_name(show_dbref=True, show_flags=True)) session.msg(room.get_name(show_dbref=True, show_flags=True))
if player_list:
session.msg("\n\rPLAYER:")
for player in player_list:
session.msg(player.get_name(show_dbref=True, show_flags=True))
# Show the total counts by type # Show the total counts by type
session.msg("\n\rFound: Rooms...%d Exits...%d Things...%d" % ( session.msg("\n\rFound: Rooms...%d Exits...%d Things...%d Players...%d" % (
len(room_list), len(room_list),
len(exit_list), len(exit_list),
len(thing_list))) len(thing_list),
len(player_list)))
def build_query(session, search_query, search_player, search_type, def build_query(session, search_query, search_player, search_type,
search_restriction, search_low_dbnum, search_high_dbnum): search_restriction, search_low_dbnum, search_high_dbnum):
@ -99,8 +109,10 @@ def build_query(session, search_query, search_player, search_type,
elif search_type == "object": elif search_type == "object":
search_query = search_query.filter(name__icontains=search_restriction) search_query = search_query.filter(name__icontains=search_restriction)
elif search_type == "flags": elif search_type == "flags":
session.msg("To be implemented...") flag_list = search_restriction.split()
return None #session.msg("restriction: %s" % flag_list)
for flag in flag_list:
search_query = search_query.filter(Q(flags__icontains=flag) | Q(nosave_flags__icontains=flag))
if search_low_dbnum: if search_low_dbnum:
search_query = search_query.filter(id__gte=search_low_dbnum) search_query = search_query.filter(id__gte=search_low_dbnum)