X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=mudpy%2Fmisc.py;h=e737a287687a784e282b57113dd8797617b0664e;hp=0543aa1f275a3bb2c7c5fbca0e3e11d08597721f;hb=87065461784719196154b37340e6c8f76b4d801f;hpb=7aa0e226d74b56f955cb328d5e7f03d7d3d32efb diff --git a/mudpy/misc.py b/mudpy/misc.py index 0543aa1..e737a28 100644 --- a/mudpy/misc.py +++ b/mudpy/misc.py @@ -184,27 +184,27 @@ class Element: prepend_padding ) + def is_admin(self): + """Boolean check whether an actor is controlled by an admin owner.""" + return(self.owner and self.owner.is_admin()) + def can_run(self, command): """Check if the user can run this command object.""" # has to be in the commands group if command not in self.universe.groups["command"].values(): - result = False + return(False) # avatars of administrators can run any command - elif self.owner and self.owner.account.get("administrator"): - result = True + if self.is_admin(): + return(True) # everyone can run non-administrative commands - elif not command.get("administrative"): - result = True + if not command.get("administrative"): + return(True) # otherwise the command cannot be run by this actor - else: - result = False - - # pass back the result - return result + return(False) def update_location(self): """Make sure the location's contents contain this element.""" @@ -501,6 +501,7 @@ class User: self.output_queue = [] self.partial_input = b"" self.password_tries = 0 + self.rows = 23 self.state = "telopt_negotiation" self.telopts = {} self.ttype = None @@ -998,6 +999,10 @@ class User: avatar, 6) return avatars + def is_admin(self): + """Boolean check whether user's account is an admin.""" + return(self.account.get("administrator", False)) + def broadcast(message, add_prompt=True): """Send a message to all connected users.""" @@ -1052,9 +1057,10 @@ def log(message, level=0): # display to connected administrators for user in universe.userlist: - if user.state == "active" and user.account.get( - "administrator" - ) and user.account.get("loglevel", 0) <= level: + if ( + user.state == "active" + and user.is_admin() + and user.account.get("loglevel", 0) <= level): # iterate over every line in the message full_message = "" for line in lines: @@ -1083,7 +1089,7 @@ def get_loglines(level, start, stop): # don't proceed if there are no lines if filtered_count: - # can't start before the begining or at the end + # can't start before the beginning or at the end if start > filtered_count: start = filtered_count if start < 1: @@ -1136,7 +1142,7 @@ def wrap_ansi_text(text, width): # characters, printable or otherwise abs_pos = 0 - # the current text position relative to the begining of the line, + # the current text position relative to the beginning of the line, # ignoring color escape sequences rel_pos = 0 @@ -1151,7 +1157,7 @@ def wrap_ansi_text(text, width): # normalize any potentially composited unicode before we count it text = unicodedata.normalize("NFKC", text) - # iterate over each character from the begining of the text + # iterate over each character from the beginning of the text for each_character in text: # the current character is the escape character @@ -1193,7 +1199,7 @@ def wrap_ansi_text(text, width): # characters but the space it replaced was only one abs_pos += 1 - # now we're at the begining of a new line, plus the + # now we're at the beginning of a new line, plus the # number of characters wrapped from the previous line rel_pos -= last_rel_whitespace last_rel_whitespace = 0 @@ -1226,7 +1232,7 @@ def weighted_choice(data): expanded.append(key) # return one at random - # Whitelist the random.randrange() call in bandit since it's not used for + # Allow the random.randrange() call in bandit since it's not used for # security/cryptographic purposes return random.choice(expanded) # nosec @@ -1275,7 +1281,7 @@ def random_name(): name = "" # create a name of random length from the syllables - # Whitelist the random.randrange() call in bandit since it's not used for + # Allow the random.randrange() call in bandit since it's not used for # security/cryptographic purposes for _syllable in range(random.randrange(2, 6)): # nosec name += weighted_choice(syllables)