0001-iparapheur-don-t-pass-explicit-parameters-to-transpo.patch
passerelle/contrib/iparapheur/migrations/0006_auto_20190307_1805.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
# Generated by Django 1.11.18 on 2019-03-07 17:05 |
|
3 |
from __future__ import unicode_literals |
|
4 | ||
5 |
from django.db import migrations |
|
6 | ||
7 | ||
8 |
class Migration(migrations.Migration): |
|
9 | ||
10 |
dependencies = [ |
|
11 |
('iparapheur', '0005_remove_iparapheur_log_level'), |
|
12 |
] |
|
13 | ||
14 |
operations = [ |
|
15 |
migrations.RenameField( |
|
16 |
model_name='iparapheur', |
|
17 |
old_name='password', |
|
18 |
new_name='basic_auth_password', |
|
19 |
), |
|
20 |
migrations.RenameField( |
|
21 |
model_name='iparapheur', |
|
22 |
old_name='username', |
|
23 |
new_name='basic_auth_username', |
|
24 |
), |
|
25 |
migrations.RenameField( |
|
26 |
model_name='iparapheur', |
|
27 |
old_name='keystore', |
|
28 |
new_name='client_certificate', |
|
29 |
), |
|
30 |
] |
passerelle/contrib/iparapheur/models.py | ||
---|---|---|
72 | 72 |
help_text=_('WSDL URL')) |
73 | 73 |
verify_cert = models.BooleanField(default=True, |
74 | 74 |
verbose_name=_('Check HTTPS Certificate validity')) |
75 |
username = models.CharField(max_length=128, blank=True, |
|
75 |
basic_auth_username = models.CharField(max_length=128, blank=True,
|
|
76 | 76 |
verbose_name=_('Username')) |
77 |
password = models.CharField(max_length=128, blank=True, |
|
77 |
basic_auth_password = models.CharField(max_length=128, blank=True,
|
|
78 | 78 |
verbose_name=_('Password')) |
79 |
keystore = models.FileField(upload_to='iparapheur', null=True, blank=True,
|
|
79 |
client_certificate = models.FileField(upload_to='iparapheur', null=True, blank=True,
|
|
80 | 80 |
verbose_name=_('Keystore'), |
81 | 81 |
help_text=_('Certificate and private key in PEM format')) |
82 | 82 |
passerelle/contrib/iparapheur/soap.py | ||
---|---|---|
50 | 50 |
self.model = model |
51 | 51 |
HttpAuthenticated.__init__(self, **kwargs) |
52 | 52 | |
53 |
def get_requests_kwargs(self): |
|
54 |
kwargs = {} |
|
55 |
if self.model.username: |
|
56 |
kwargs['auth'] = (self.model.username, self.model.password) |
|
57 |
if self.model.keystore: |
|
58 |
kwargs['cert'] = (self.model.keystore.path, self.model.keystore.path) |
|
59 |
if not self.model.verify_cert: |
|
60 |
kwargs['verify'] = False |
|
61 |
return kwargs |
|
62 | ||
63 | 53 |
def open(self, request): |
64 | 54 |
# only use our custom handler to fetch service resources, not schemas |
65 | 55 |
# from other namespaces |
66 | 56 |
if 'www.w3.org' in request.url: |
67 | 57 |
return HttpAuthenticated.open(self, request) |
68 |
resp = self.model.requests.get(request.url, headers=request.headers, |
|
69 |
**self.get_requests_kwargs()) |
|
58 |
resp = self.model.requests.get(request.url, headers=request.headers) |
|
70 | 59 |
return StringIO.StringIO(resp.content) |
71 | 60 | |
72 | 61 |
def send(self, request): |
... | ... | |
74 | 63 |
self.addcredentials(request) |
75 | 64 |
try: |
76 | 65 |
resp = self.model.requests.post(request.url, data=request.message, |
77 |
headers=request.headers, **self.get_requests_kwargs())
|
|
66 |
headers=request.headers) |
|
78 | 67 |
except(RequestException,) as e: |
79 | 68 |
raise TransportError(e.message.message, None) |
80 | 69 |
tests/test_iparapheur.py | ||
---|---|---|
32 | 32 |
keytype='API', |
33 | 33 |
key=API_KEY) |
34 | 34 |
conn = IParapheur.objects.create(title='parapheur', slug='parapheur', |
35 |
wsdl_url=WSDL_URL, username='test', |
|
36 |
password='secret') |
|
35 |
wsdl_url=WSDL_URL, basic_auth_username='test',
|
|
36 |
basic_auth_password='secret')
|
|
37 | 37 |
obj_type = ContentType.objects.get_for_model(IParapheur) |
38 | 38 |
AccessRight.objects.create(codename='can_access', |
39 | 39 |
apiuser=api, resource_type=obj_type, |
40 |
- |