0001-misc-move-duplicated-soap-utility-functions-to-main-.patch
passerelle/contrib/greco/models.py | ||
---|---|---|
34 | 34 | |
35 | 35 |
from passerelle.base.models import BaseResource |
36 | 36 |
from passerelle.utils.api import endpoint, APIError |
37 |
from passerelle.soap import sudsobject_to_dict |
|
37 | 38 | |
38 | 39 |
from .formdata import FormData, CREATION_SCHEMA, list_schema_fields |
39 | 40 | |
... | ... | |
56 | 57 |
# sudsobject.foo.bar <- fields['foo_bar'] |
57 | 58 |
setattr(sudsobject, key, fields[attr]) |
58 | 59 | |
59 |
def sudsobject_to_dict(sudsobject): |
|
60 |
out = {} |
|
61 |
for key, value in suds.sudsobject.asdict(sudsobject).iteritems(): |
|
62 |
if hasattr(value, '__keylist__'): |
|
63 |
out[key] = sudsobject_to_dict(value) |
|
64 |
elif isinstance(value, list): |
|
65 |
out[key] = [] |
|
66 |
for item in value: |
|
67 |
if hasattr(item, '__keylist__'): |
|
68 |
out[key].append(sudsobject_to_dict(item)) |
|
69 |
else: |
|
70 |
out[key].append(item) |
|
71 |
else: |
|
72 |
out[key] = value |
|
73 |
return out |
|
74 | ||
75 | 60 | |
76 | 61 |
class Greco(BaseResource): |
77 | 62 |
application = models.CharField(_('Application identifier'), max_length=200) |
passerelle/contrib/maarch/soap.py | ||
---|---|---|
28 | 28 |
from suds.transport.http import HttpAuthenticated |
29 | 29 |
from suds.transport import Reply |
30 | 30 |
from suds.client import Client |
31 |
from suds.sudsobject import asdict |
|
31 | ||
32 | 32 | |
33 | 33 |
class Transport(HttpAuthenticated): |
34 | 34 |
def __init__(self, model, **kwargs): |
... | ... | |
63 | 63 |
def get_client(model): |
64 | 64 |
transport = Transport(model) |
65 | 65 |
return Client(model.wsdl_url, transport=transport, cache=None) |
66 | ||
67 |
def client_to_jsondict(client): |
|
68 |
"""return description of the client, as dict (for json export)""" |
|
69 |
res = {} |
|
70 |
for i, sd in enumerate(client.sd): |
|
71 |
d = {} |
|
72 |
d['tns'] = sd.wsdl.tns[1] |
|
73 |
d['prefixes'] = dict(p for p in sd.prefixes) |
|
74 |
d['ports'] = {} |
|
75 |
for p in sd.ports: |
|
76 |
d['ports'][p[0].name] = {} |
|
77 |
for m in p[1]: |
|
78 |
d['ports'][p[0].name][m[0]] = dict( |
|
79 |
(mp[0], sd.xlate(mp[1])) for mp in m[1]) |
|
80 |
d['types'] = {} |
|
81 |
for t in sd.types: |
|
82 |
ft = client.factory.create(sd.xlate(t[0])) |
|
83 |
d['types'][sd.xlate(t[0])] = unicode(ft) |
|
84 |
res[sd.service.name] = d |
|
85 |
return res |
|
86 | ||
87 |
def recursive_asdict(d): |
|
88 |
"""Convert Suds object into serializable format.""" |
|
89 |
out = {} |
|
90 |
for k, v in asdict(d).iteritems(): |
|
91 |
if hasattr(v, '__keylist__'): |
|
92 |
out[k] = recursive_asdict(v) |
|
93 |
elif isinstance(v, list): |
|
94 |
out[k] = [] |
|
95 |
for item in v: |
|
96 |
if hasattr(item, '__keylist__'): |
|
97 |
out[k].append(recursive_asdict(item)) |
|
98 |
else: |
|
99 |
out[k].append(item) |
|
100 |
else: |
|
101 |
out[k] = v |
|
102 |
return out |
|
103 |
passerelle/contrib/maarch/views.py | ||
---|---|---|
25 | 25 |
from django.views.decorators.csrf import csrf_exempt |
26 | 26 | |
27 | 27 |
from passerelle import utils |
28 |
from passerelle.soap import sudsobject_to_dict, sudsclient_to_jsondict |
|
28 | 29 | |
29 |
from .soap import get_client, client_to_jsondict, recursive_asdict
|
|
30 |
from .soap import get_client |
|
30 | 31 |
from .models import Maarch |
31 | 32 | |
32 | 33 |
logger = logging.getLogger('passerelle.contrib.maarch') |
... | ... | |
59 | 60 |
client = self.get_client() |
60 | 61 |
res = {'ping': 'pong'} |
61 | 62 |
if 'debug' in request.GET: |
62 |
res['client'] = client_to_jsondict(client) |
|
63 |
res['client'] = sudsclient_to_jsondict(client)
|
|
63 | 64 |
return res |
64 | 65 | |
65 | 66 | |
... | ... | |
223 | 224 |
results = client.service.storeResource( |
224 | 225 |
encodedFile, metadata, collId, |
225 | 226 |
table, fileFormat, status) |
226 |
data = recursive_asdict(results)
|
|
227 |
data = sudsobject_to_dict(results)
|
|
227 | 228 |
logger.debug('storeResource result: %r', data) |
228 | 229 | |
229 | 230 |
resId = data.get('resId') |
passerelle/contrib/seisin_by_email/soap.py | ||
---|---|---|
28 | 28 |
from suds.transport.http import HttpAuthenticated |
29 | 29 |
from suds.transport import Reply |
30 | 30 |
from suds.client import Client |
31 |
from suds.sudsobject import asdict |
|
32 | 31 | |
33 | 32 | |
34 | 33 |
class Transport(HttpAuthenticated): |
... | ... | |
64 | 63 |
def get_client(model): |
65 | 64 |
transport = Transport(model) |
66 | 65 |
return Client(model.wsdl_url, transport=transport, cache=None) |
67 | ||
68 |
def client_to_jsondict(client): |
|
69 |
"""return description of the client, as dict (for json export)""" |
|
70 |
res = {} |
|
71 |
for i, sd in enumerate(client.sd): |
|
72 |
d = {} |
|
73 |
d['tns'] = sd.wsdl.tns[1] |
|
74 |
d['prefixes'] = dict(p for p in sd.prefixes) |
|
75 |
d['ports'] = {} |
|
76 |
for p in sd.ports: |
|
77 |
d['ports'][p[0].name] = {} |
|
78 |
for m in p[1]: |
|
79 |
d['ports'][p[0].name][m[0]] = dict( |
|
80 |
(mp[0], sd.xlate(mp[1])) for mp in m[1]) |
|
81 |
d['types'] = {} |
|
82 |
for t in sd.types: |
|
83 |
ft = client.factory.create(sd.xlate(t[0])) |
|
84 |
d['types'][sd.xlate(t[0])] = unicode(ft) |
|
85 |
res[sd.service.name] = d |
|
86 |
return res |
|
87 | ||
88 |
def recursive_asdict(d): |
|
89 |
"""Convert Suds object into serializable format.""" |
|
90 |
out = {} |
|
91 |
for k, v in asdict(d).iteritems(): |
|
92 |
if hasattr(v, '__keylist__'): |
|
93 |
out[k] = recursive_asdict(v) |
|
94 |
elif isinstance(v, list): |
|
95 |
out[k] = [] |
|
96 |
for item in v: |
|
97 |
if hasattr(item, '__keylist__'): |
|
98 |
out[k].append(recursive_asdict(item)) |
|
99 |
else: |
|
100 |
out[k].append(item) |
|
101 |
else: |
|
102 |
out[k] = v |
|
103 |
return out |
passerelle/contrib/seisin_by_email/views.py | ||
---|---|---|
21 | 21 |
from django.views.decorators.csrf import csrf_exempt |
22 | 22 | |
23 | 23 |
from passerelle import utils |
24 |
from passerelle.soap import sudsobject_to_dict, sudsclient_to_jsondict |
|
24 | 25 | |
25 |
from .soap import get_client, client_to_jsondict, recursive_asdict
|
|
26 |
from .soap import get_client |
|
26 | 27 |
from .models import SeisinByEmailManagement |
27 | 28 | |
28 | 29 | |
... | ... | |
51 | 52 |
client = self.get_client() |
52 | 53 |
res = {'ping': 'pong'} |
53 | 54 |
if 'debug' in request.GET: |
54 |
res['client'] = client_to_jsondict(client) |
|
55 |
res['client'] = sudsclient_to_jsondict(client)
|
|
55 | 56 |
return res |
56 | 57 | |
57 | 58 | |
... | ... | |
120 | 121 |
request_object, |
121 | 122 |
data, |
122 | 123 |
attachmentData) |
123 |
data = recursive_asdict(results)
|
|
124 |
data = sudsobject_to_dict(results)
|
|
124 | 125 | |
125 | 126 |
if debug: |
126 | 127 |
data['debug'] = debug_output |
passerelle/contrib/teamnet_axel/models.py | ||
---|---|---|
29 | 29 |
from jsonfield import JSONField |
30 | 30 | |
31 | 31 |
from passerelle.base.models import BaseResource |
32 |
from passerelle.soap import sudsclient_to_jsondict |
|
32 | 33 |
from passerelle.utils.api import endpoint |
33 | 34 |
from passerelle.utils.jsonresponse import APIError |
34 | 35 |
from passerelle.views import WrongParameter |
... | ... | |
172 | 173 |
raise APIError('Client Error: %s' % exc.message) |
173 | 174 |
res = {'ping': 'pong'} |
174 | 175 |
if 'debug' in request.GET: |
175 |
res['client'] = soap.client_to_jsondict(client)
|
|
176 |
res['client'] = sudsclient_to_jsondict(client)
|
|
176 | 177 |
return {'data': res} |
177 | 178 | |
178 | 179 |
@endpoint(perm='can_access') |
passerelle/contrib/teamnet_axel/soap.py | ||
---|---|---|
25 | 25 |
from suds.transport.http import HttpAuthenticated |
26 | 26 |
from suds.transport import Reply |
27 | 27 |
from suds.client import Client |
28 |
from suds.sudsobject import asdict |
|
29 | 28 | |
30 | 29 | |
31 | 30 |
class Transport(HttpAuthenticated): |
... | ... | |
64 | 63 |
return Client(model.wsdl_url, transport=transport, cache=None) |
65 | 64 | |
66 | 65 | |
67 |
def client_to_jsondict(client): |
|
68 |
"""return description of the client, as dict (for json export)""" |
|
69 |
res = {} |
|
70 |
for i, sd in enumerate(client.sd): |
|
71 |
d = {} |
|
72 |
d['tns'] = sd.wsdl.tns[1] |
|
73 |
d['prefixes'] = dict(p for p in sd.prefixes) |
|
74 |
d['ports'] = {} |
|
75 |
for p in sd.ports: |
|
76 |
d['ports'][p[0].name] = {} |
|
77 |
for m in p[1]: |
|
78 |
d['ports'][p[0].name][m[0]] = dict( |
|
79 |
(mp[0], sd.xlate(mp[1])) for mp in m[1]) |
|
80 |
d['types'] = {} |
|
81 |
for t in sd.types: |
|
82 |
ft = client.factory.create(sd.xlate(t[0])) |
|
83 |
d['types'][sd.xlate(t[0])] = unicode(ft) |
|
84 |
res[sd.service.name] = d |
|
85 |
return res |
|
86 | ||
87 | ||
88 |
def recursive_asdict(d): |
|
89 |
"""Convert Suds object into serializable format.""" |
|
90 |
out = {} |
|
91 |
for k, v in asdict(d).iteritems(): |
|
92 |
if hasattr(v, '__keylist__'): |
|
93 |
out[k] = recursive_asdict(v) |
|
94 |
elif isinstance(v, list): |
|
95 |
out[k] = [] |
|
96 |
for item in v: |
|
97 |
if hasattr(item, '__keylist__'): |
|
98 |
out[k].append(recursive_asdict(item)) |
|
99 |
else: |
|
100 |
out[k].append(item) |
|
101 |
else: |
|
102 |
out[k] = v |
|
103 |
return out |
|
104 | ||
105 | ||
106 | 66 |
def xml_to_dict(result): |
107 | 67 |
"""Converts AXEL simple XML responses into dict()""" |
108 | 68 |
d = {} |
passerelle/soap.py | ||
---|---|---|
6 | 6 |
from suds.client import Client |
7 | 7 |
from suds.transport.http import HttpAuthenticated |
8 | 8 |
from suds.transport import Reply |
9 |
import suds.sudsobject |
|
9 | 10 | |
10 | 11 | |
11 | 12 |
class Transport(HttpAuthenticated): |
... | ... | |
116 | 117 |
domains=self.domains), |
117 | 118 |
plugins=self.plugins, |
118 | 119 |
cache=self.cache) |
120 | ||
121 | ||
122 |
def sudsclient_to_jsondict(client): |
|
123 |
"""return description of the client, as dict (for json export)""" |
|
124 |
res = {} |
|
125 |
for i, sd in enumerate(client.sd): |
|
126 |
d = {} |
|
127 |
d['tns'] = sd.wsdl.tns[1] |
|
128 |
d['prefixes'] = dict(p for p in sd.prefixes) |
|
129 |
d['ports'] = {} |
|
130 |
for p in sd.ports: |
|
131 |
d['ports'][p[0].name] = {} |
|
132 |
for m in p[1]: |
|
133 |
d['ports'][p[0].name][m[0]] = dict( |
|
134 |
(mp[0], sd.xlate(mp[1])) for mp in m[1]) |
|
135 |
d['types'] = {} |
|
136 |
for t in sd.types: |
|
137 |
ft = client.factory.create(sd.xlate(t[0])) |
|
138 |
d['types'][sd.xlate(t[0])] = unicode(ft) |
|
139 |
res[sd.service.name] = d |
|
140 |
return res |
|
141 | ||
142 | ||
143 |
def sudsobject_to_dict(sudsobject): |
|
144 |
out = {} |
|
145 |
for key, value in suds.sudsobject.asdict(sudsobject).iteritems(): |
|
146 |
if hasattr(value, '__keylist__'): |
|
147 |
out[key] = sudsobject_to_dict(value) |
|
148 |
elif isinstance(value, list): |
|
149 |
out[key] = [] |
|
150 |
for item in value: |
|
151 |
if hasattr(item, '__keylist__'): |
|
152 |
out[key].append(sudsobject_to_dict(item)) |
|
153 |
else: |
|
154 |
out[key].append(item) |
|
155 |
else: |
|
156 |
out[key] = value |
|
157 |
return out |
|
119 |
- |