mirror of
https://github.com/evennia/evennia.git
synced 2026-04-03 06:27:17 +02:00
Fixed more errors with quelling as well as some other things with updating permissions in general. Resolves Issue 430.
This commit is contained in:
parent
ebdc6cdbd4
commit
7f0d0dd0f8
4 changed files with 21 additions and 11 deletions
|
|
@ -528,8 +528,11 @@ class CmdPerm(MuxCommand):
|
|||
if 'del' in switches:
|
||||
# delete the given permission(s) from object.
|
||||
obj.permissions.remove(self.rhslist)
|
||||
cstring += "\nPermission(s) %s removed from %s (if they existed)." % (", ".join(self.rhslist), obj.name)
|
||||
tstring += "\n%s revokes the permission(s) %s from you." % (caller.name, ", ".join(self.rhslist))
|
||||
if obj.permissions.get(self.rhslist):
|
||||
cstring += "\nPermissions(s) %s could not be removed from %s." % (", ".join(self.rhslist), obj.name)
|
||||
else:
|
||||
cstring += "\nPermission(s) %s removed from %s (if they existed)." % (", ".join(self.rhslist), obj.name)
|
||||
tstring += "\n%s revokes the permission(s) %s from you." % (caller.name, ", ".join(self.rhslist))
|
||||
else:
|
||||
# add a new permission
|
||||
permissions = obj.permissions.all()
|
||||
|
|
|
|||
|
|
@ -633,6 +633,14 @@ class CmdQuell(MuxPlayerCommand):
|
|||
self.msg("Already quelling Player%s permissions." % permstr)
|
||||
return
|
||||
player.attributes.add('_quell', True)
|
||||
self.msg("Quelling Player permissions%s. Use @unquell to get them back." % permstr)
|
||||
puppet = player.get_puppet(self.sessid)
|
||||
if puppet:
|
||||
cpermstr = " (%s)" % ", ".join(puppet.permissions.all())
|
||||
cpermstr = "Quelling to current puppet's permissions%s." % cpermstr
|
||||
cpermstr += "\n(Note: If this is higher than Player permissions%s, the lowest of the two will be used.)" % permstr
|
||||
cpermstr += "\nUse @unquell to return to normal permission usage."
|
||||
self.msg(cpermstr)
|
||||
else:
|
||||
self.msg("Quelling Player permissions%s. Use @unquell to get them back." % permstr)
|
||||
self._recache_locks(player)
|
||||
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ def create_objects():
|
|||
god_player.basetype_setup()
|
||||
god_player.at_player_creation()
|
||||
god_player.locks.add("examine:perm(Immortals);edit:false();delete:false();boot:false();msg:all()")
|
||||
god_player.permissions.add("Immortals") # this is necessary for quelling to work correctly.
|
||||
|
||||
# Limbo is the default "nowhere" starting room
|
||||
|
||||
|
|
|
|||
|
|
@ -482,8 +482,8 @@ class TagHandler(object):
|
|||
self._cache = None
|
||||
|
||||
def _recache(self):
|
||||
self._cache = dict([(to_str(p[0]), True) for p in _GA(self.obj, self._m2m_fieldname).filter(
|
||||
db_category__startswith=self.prefix).values_list("db_key")])
|
||||
self._cache = dict((to_str(p.db_key), p) for p in _GA(self.obj, self._m2m_fieldname).filter(
|
||||
db_category__startswith=self.prefix))
|
||||
|
||||
def add(self, tag, category=None, data=None):
|
||||
"Add a new tag to the handler. Tag is a string or a list of strings."
|
||||
|
|
@ -505,9 +505,8 @@ class TagHandler(object):
|
|||
self._recache()
|
||||
ret = []
|
||||
category = "%s%s" % (self.prefix, category.strip().lower() if category!=None else "")
|
||||
for keystr in (k.strip.lower() for k in make_iter(key)):
|
||||
ret.append(self._cache.get(keystr))
|
||||
ret = ret if return_obj else [to_str(tag.db_data) for tag in ret]
|
||||
ret = [val for val in (self._cache.get(keystr.strip().lower()) for keystr in make_iter(key)) if val]
|
||||
ret = ret if return_obj else [to_str(tag.db_data) for tag in ret if tag]
|
||||
return ret[0] if len(ret)==1 else ret
|
||||
|
||||
def remove(self, tag, category=None):
|
||||
|
|
@ -515,7 +514,7 @@ class TagHandler(object):
|
|||
if self._cache == None or not _TYPECLASS_AGGRESSIVE_CACHE:
|
||||
self._recache()
|
||||
for tag in make_iter(tag):
|
||||
if not tag or tag.strip(): # we don't allow empty tags
|
||||
if not (tag or tag.strip()): # we don't allow empty tags
|
||||
continue
|
||||
tagstr = tag.strip().lower() if tag!=None else None
|
||||
category = "%s%s" % (self.prefix, category.strip().lower() if category!=None else "")
|
||||
|
|
@ -524,8 +523,7 @@ class TagHandler(object):
|
|||
tagobj = self.obj.db_tags.filter(db_key=tagstr, db_category=category)
|
||||
if tagobj:
|
||||
_GA(self.obj, self._m2m_fieldname).remove(tagobj[0])
|
||||
if tagstr in self._cache:
|
||||
del self._cache[tagstr]
|
||||
self._recache()
|
||||
|
||||
def clear(self):
|
||||
"Remove all tags from the handler"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue