__author__ = "dale mcdiarmid" import re import os.path from six import string_types def modify_list(values=[], pattern="", replacement="", ignorecase=False): """ Perform a `re.sub` on every item in the list""" if ignorecase: flags = re.I else: flags = 0 _re = re.compile(pattern, flags=flags) return [_re.sub(replacement, value) for value in values] def append_to_list(values=[], suffix=""): if isinstance(values, string_types): values = values.split(",") return [str(value + suffix) for value in values] def array_to_str(values=[], separator=","): return separator.join(values) def extract_role_users(users={}, exclude_users=[]): role_users = [] for user, details in users.items(): if user not in exclude_users and "roles" in details: for role in details["roles"]: role_users.append(role + ":" + user) return role_users def filename(filename=""): return os.path.splitext(os.path.basename(filename))[0] def remove_reserved(user_roles={}): not_reserved = [] for user_role, details in user_roles.items(): if ( not "metadata" in details or not "_reserved" in details["metadata"] or not details["metadata"]["_reserved"] ): not_reserved.append(user_role) return not_reserved def filter_reserved(users_role={}): reserved = [] for user_role, details in users_role.items(): if ( "metadata" in details and "_reserved" in details["metadata"] and details["metadata"]["_reserved"] ): reserved.append(user_role) return reserved class FilterModule(object): def filters(self): return { "modify_list": modify_list, "append_to_list": append_to_list, "filter_reserved": filter_reserved, "array_to_str": array_to_str, "extract_role_users": extract_role_users, "remove_reserved": remove_reserved, "filename": filename, }