Projet

Général

Profil

0001-misc-move-duplicated-soap-utility-functions-to-main-.patch

Frédéric Péters, 09 octobre 2018 15:23

Télécharger (8,02 ko)

Voir les différences:

Subject: [PATCH] misc: move duplicated soap utility functions to main soap.py
 (#27140)

 passerelle/contrib/maarch/soap.py          | 40 ++-------------------
 passerelle/contrib/seisin_by_email/soap.py | 39 ++------------------
 passerelle/contrib/teamnet_axel/soap.py    | 41 ++--------------------
 passerelle/soap.py                         | 38 ++++++++++++++++++++
 4 files changed, 45 insertions(+), 113 deletions(-)
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
from passerelle.soap import recursive_asdict, client_to_jsondict
33

  
32 34

  
33 35
class Transport(HttpAuthenticated):
34 36
    def __init__(self, model, **kwargs):
......
64 66
    transport = Transport(model)
65 67
    return Client(model.wsdl_url, transport=transport, cache=None)
66 68

  
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 69

  
passerelle/contrib/seisin_by_email/soap.py
30 30
from suds.client import Client
31 31
from suds.sudsobject import asdict
32 32

  
33
from passerelle.soap import recursive_asdict, client_to_jsondict
34

  
33 35

  
34 36
class Transport(HttpAuthenticated):
35 37
    def __init__(self, model, **kwargs):
......
64 66
def get_client(model):
65 67
    transport = Transport(model)
66 68
    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/teamnet_axel/soap.py
27 27
from suds.client import Client
28 28
from suds.sudsobject import asdict
29 29

  
30
from passerelle.soap import recursive_asdict, client_to_jsondict
31

  
30 32

  
31 33
class Transport(HttpAuthenticated):
32 34

  
......
64 66
    return Client(model.wsdl_url, transport=transport, cache=None)
65 67

  
66 68

  
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 69
def xml_to_dict(result):
107 70
    """Converts AXEL simple XML responses into dict()"""
108 71
    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
from suds.sudsobject import asdict
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
def client_to_jsondict(client):
122
    """return description of the client, as dict (for json export)"""
123
    res = {}
124
    for i, sd in enumerate(client.sd):
125
        d = {}
126
        d['tns'] = sd.wsdl.tns[1]
127
        d['prefixes'] = dict(p for p in sd.prefixes)
128
        d['ports'] = {}
129
        for p in sd.ports:
130
            d['ports'][p[0].name] = {}
131
            for m in p[1]:
132
                d['ports'][p[0].name][m[0]] = dict(
133
                        (mp[0], sd.xlate(mp[1])) for mp in m[1])
134
        d['types'] = {}
135
        for t in sd.types:
136
            ft = client.factory.create(sd.xlate(t[0]))
137
            d['types'][sd.xlate(t[0])] = unicode(ft)
138
        res[sd.service.name] = d
139
    return res
140

  
141
def recursive_asdict(d):
142
    """Convert Suds object into serializable format."""
143
    out = {}
144
    for k, v in asdict(d).iteritems():
145
        if hasattr(v, '__keylist__'):
146
            out[k] = recursive_asdict(v)
147
        elif isinstance(v, list):
148
            out[k] = []
149
            for item in v:
150
                if hasattr(item, '__keylist__'):
151
                    out[k].append(recursive_asdict(item))
152
                else:
153
                    out[k].append(item)
154
        else:
155
            out[k] = v
156
    return out
119
-