maarch: sign wcs calls for formdata schema (#68912)
This commit is contained in:
parent
eb0baa5b59
commit
a97ed47181
|
@ -23,10 +23,12 @@ from datetime import datetime
|
|||
|
||||
import passerelle.utils as utils
|
||||
import requests
|
||||
from django.conf import settings
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.encoding import force_text
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.generic import DetailView as GenericDetailView
|
||||
from passerelle.base.signature import sign_url
|
||||
from passerelle.soap import client_to_jsondict, sudsobject_to_dict
|
||||
from suds import TypeNotFound
|
||||
|
||||
|
@ -36,6 +38,20 @@ from .soap import get_client
|
|||
logger = logging.getLogger('minint_maarch')
|
||||
|
||||
|
||||
def get_schema(formdata):
|
||||
# get formdef schema from wcs API
|
||||
url = formdata['url']
|
||||
p = urllib.parse.urlsplit(url)
|
||||
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
|
||||
schema_path = path.rsplit('/', 2)[0] + '/schema'
|
||||
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
|
||||
if getattr(settings, 'KNOWN_SERVICES', {}).get('wcs'):
|
||||
wcs_service = list(settings.KNOWN_SERVICES['wcs'].values())[0]
|
||||
schema_url += '?orig=%s' % wcs_service.get('orig')
|
||||
schema_url = sign_url(schema_url, key=wcs_service.get('secret'))
|
||||
return requests.get(schema_url).json()
|
||||
|
||||
|
||||
class MaarchException(Exception):
|
||||
pass
|
||||
|
||||
|
@ -95,13 +111,7 @@ class ResourceView(DetailView):
|
|||
if debug:
|
||||
debug_output = {}
|
||||
|
||||
# get formdef schema from wcs API
|
||||
url = formdata['url']
|
||||
p = urllib.parse.urlsplit(url)
|
||||
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
|
||||
schema_path = path.rsplit('/', 2)[0] + '/schema'
|
||||
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
|
||||
schema = requests.get(schema_url).json()
|
||||
schema = get_schema(formdata)
|
||||
|
||||
# storeAttachmentResource attachments: list, build from formdata file fields
|
||||
attachments = []
|
||||
|
@ -400,13 +410,7 @@ class AttachmentView(DetailView):
|
|||
if debug:
|
||||
debug_output = {}
|
||||
|
||||
# get formdef schema from wcs API
|
||||
url = formdata['url']
|
||||
p = urllib.parse.urlsplit(url)
|
||||
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
|
||||
schema_path = path.rsplit('/', 2)[0] + '/schema'
|
||||
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
|
||||
schema = requests.get(schema_url).json()
|
||||
schema = get_schema(formdata)
|
||||
|
||||
(
|
||||
regexp_filename_search_pattern_in_label,
|
||||
|
@ -521,13 +525,7 @@ class DebugView(DetailView):
|
|||
if debug:
|
||||
debug_output = {}
|
||||
|
||||
# get formdef schema from wcs API
|
||||
url = formdata['url']
|
||||
p = urllib.parse.urlsplit(url)
|
||||
scheme, netloc, path, query, fragment = p.scheme, p.netloc, p.path, p.query, p.fragment
|
||||
schema_path = path.rsplit('/', 2)[0] + '/schema'
|
||||
schema_url = urllib.parse.urlunsplit((scheme, netloc, schema_path, query, fragment))
|
||||
schema = requests.get(schema_url).json()
|
||||
schema = get_schema(formdata)
|
||||
|
||||
# storeAttachmentResource attachments: list, build from formdata file fields
|
||||
attachments = []
|
||||
|
|
Loading…
Reference in New Issue