diff --git a/src/pyff/api.py b/src/pyff/api.py index 4eb751cd..8da2ec59 100644 --- a/src/pyff/api.py +++ b/src/pyff/api.py @@ -4,7 +4,7 @@ from datetime import datetime, timedelta from json import dumps from typing import Any, Optional -from urllib.parse import quote_plus +from urllib.parse import quote import pyramid.httpexceptions as exc import pytz @@ -395,7 +395,7 @@ def _links(url: str, title: Any = None) -> None: aliases = request.registry.aliases for a in aliases.keys(): for v in request.registry.md.store.attribute(aliases[a]): - _links(f'{a}/{quote_plus(v)}') + _links(f"{a}/{quote(v, safe='')}") response = Response(dumps(jrd, default=json_serializer)) response.headers['Content-Type'] = 'application/json' diff --git a/src/pyff/builtins.py b/src/pyff/builtins.py index d75cfe38..d6e2a09d 100644 --- a/src/pyff/builtins.py +++ b/src/pyff/builtins.py @@ -3,6 +3,7 @@ """ import base64 +import functools import hashlib import ipaddress import json @@ -16,7 +17,7 @@ from datetime import datetime from io import BytesIO from typing import Optional -from urllib.parse import quote_plus, urlparse +from urllib.parse import quote, urlparse import pybergshamra from pyuppsala import etree @@ -552,7 +553,7 @@ def _nop(x): enc = _nop if req.args.get('urlencode_filenames'): - enc = quote_plus + enc = functools.partial(quote, safe='') if output_file is None: return req.t diff --git a/src/pyff/samlmd.py b/src/pyff/samlmd.py index 1cc4b8a8..8856b9ee 100644 --- a/src/pyff/samlmd.py +++ b/src/pyff/samlmd.py @@ -1400,8 +1400,8 @@ def set_entity_attributes(e, d, nf=NF_URI): def set_pubinfo(e, publisher=None, creation_instant=None): - if e.tag != "{{{}}}EntitiesDescriptor".format(NS['md']): - raise MetadataException("I can only set RegistrationAuthority to EntitiesDescriptor elements") + if e.tag not in ["{{{}}}EntityDescriptor".format(NS['md']), "{{{}}}EntitiesDescriptor".format(NS['md'])]: + raise MetadataException("I can only set PublicationInfo to EntityDescriptor or EntitiesDescriptor elements") if publisher is None: raise MetadataException("At least publisher must be provided")