def _filter_args(self, instance, extensions=None, **kwargs): args = {} if extensions is None: extensions = [] allowed_attributes = instance.keys() for key, val in kwargs.items(): if key in allowed_attributes: args[key] = val elif isinstance(val, SamlBase): # extension elements allowed ? extensions.append(element_to_extension_element(val)) return args, extensions
def create_artifact_response(self, request, artifact, bindings=None, status=None, sign=False, issuer=None): """ Create an ArtifactResponse :return: """ rinfo = self.response_args(request, bindings) response = self._status_response(ArtifactResponse, issuer, status, sign=sign, **rinfo) msg = element_to_extension_element(self.artifact[artifact]) response.extension_elements = [msg] logger.info("Response: %s" % (response,)) return response
def from_dict(val, onts, mdb_safe=False): """ Converts a dictionary into a pysaml2 object :param val: A dictionary :param onts: Dictionary of schemas to use in the conversion :return: The pysaml2 object instance """ if isinstance(val, dict): if "__class__" in val: ns, typ = val["__class__"].split("&") cls = getattr(onts[ns], typ) if cls is md.Extensions: lv = [] for key, ditems in val.items(): if key in EXP_SKIP: continue for item in ditems: ns, typ = item["__class__"].split("&") cls = getattr(onts[ns], typ) kwargs = _kwa(item, onts, mdb_safe) inst = cls(**kwargs) lv.append(element_to_extension_element(inst)) return lv else: kwargs = _kwa(val, onts, mdb_safe) inst = cls(**kwargs) return inst else: res = {} for key, v in val.items(): if mdb_safe: key = key.replace("__", ".") res[key] = from_dict(v, onts) return res elif isinstance(val, basestring): return val elif isinstance(val, list): return [from_dict(v, onts) for v in val] else: return val