Fixed bug in @batchcommand (Resolves Issue 287). Also updated @dig to again handle deleting ranges of dbrefs (with or without # in front).

This commit is contained in:
Griatch 2012-10-14 16:24:21 +02:00
parent 86a44ab84d
commit 4dff822764
5 changed files with 14 additions and 12 deletions

View file

@ -392,7 +392,7 @@ class CmdBatchCode(MuxCommand):
# un in-process (will block)
for inum in range(len(codes)):
# loop through the batch file
if not batch_cmd_exec(caller):
if not batch_code_exec(caller):
return
step_pointer(caller, 1)
# clean out the safety cmdset and clean out all other temporary attrs.

View file

@ -545,7 +545,7 @@ class CmdDestroy(MuxCommand):
if not obj:
self.caller.msg(" (Objects to destroy must either be local or specified with a unique dbref.)")
return ""
if not "override" in self.switches and obj.dbid == int(settings.CHARACTER_DEFAULT_HOME):
if not "override" in self.switches and obj.dbid == int(settings.CHARACTER_DEFAULT_HOME.lstrip("#")):
return "\nYou are trying to delete CHARACTER_DEFAULT_HOME. If you want to do this, use the /override switch."
objname = obj.name
if not obj.access(caller, 'delete'):
@ -572,10 +572,10 @@ class CmdDestroy(MuxCommand):
for objname in self.lhslist:
if '-' in objname:
# might be a range of dbrefs
dmin, dmax = [utils.dbref(part) for part in objname.split('-', 1)]
dmin, dmax = [utils.dbref(part, reqhash=False) for part in objname.split('-', 1)]
if dmin and dmax:
for dbref in range(int(dmin),int(dmax+1)):
string += delobj(str(dbref))
string += delobj("#" + str(dbref))
else:
string += delobj(objname)
else:

View file

@ -801,7 +801,7 @@ class ObjectDB(TypedObject):
"""
# Gather up everything that thinks this is its location.
objs = ObjectDB.objects.filter(db_location=self)
default_home_id = int(settings.CHARACTER_DEFAULT_HOME)
default_home_id = int(settings.CHARACTER_DEFAULT_HOME.lstrip("#"))
try:
default_home = ObjectDB.objects.get(id=default_home_id)
if default_home.dbid == _GA(self, "dbid"):

View file

@ -284,12 +284,14 @@ def pypath_to_realpath(python_path, file_ending='.py'):
return "%s%s" % (path, file_ending)
return path
def dbref(dbref):
def dbref(dbref, reqhash=True):
"""
Converts/checks if input is a valid dbref Valid forms of dbref
(database reference number) are either a string '#N' or
an integer N. Output is the integer part.
"""
if reqhash and not (isinstance(dbref, basestring) and dbref.startswith("#")):
return None
if isinstance(dbref, basestring):
dbref = dbref.lstrip('#')
try: