Projet

Général

Profil

0001-lingo-notify-wcs-about-local-items-payment-9351.patch

Frédéric Péters, 14 janvier 2016 15:31

Télécharger (2,79 ko)

Voir les différences:

Subject: [PATCH] lingo: notify wcs about local items payment (#9351)

 combo/apps/lingo/models.py | 26 ++++++++++++++++++++++----
 combo/apps/lingo/views.py  |  2 +-
 2 files changed, 23 insertions(+), 5 deletions(-)
combo/apps/lingo/models.py
16 16

  
17 17
import datetime
18 18
import json
19
import logging
19 20
import requests
20 21
import urllib
22
import urlparse
21 23
from dateutil import parser
22 24
from decimal import Decimal
23 25

  
......
49 51
    (eopayment.PAYZEN, _('PayZen')),
50 52
]
51 53

  
54
logger = logging.getLogger(__name__)
52 55

  
53 56
def build_remote_item(data, regie):
54 57
    return RemoteItem(id=data.get('id'), regie=regie,
......
173 176
    payment_date = models.DateTimeField(null=True)
174 177
    notification_date = models.DateTimeField(null=True)
175 178

  
176
    def notify(self):
177
        # TODO: sign with real values
178
        url = self.source_url + 'jump/trigger/paid?email=trigger@localhost&orig=combo'
179
        url = sign_url(url, key='xxx')
179
    def notify(self, request):
180
        source_server = urlparse.urlparse(self.source_url).netloc.split(':')[0]
181
        service_dict = None
182
        for services in settings.KNOWN_SERVICES.values():
183
            for service in services.values():
184
                url = service.get('url')
185
                verif_orig = urlparse.urlparse(url).netloc.split(':')[0]
186
                if verif_orig == source_server:
187
                    service_dict = service
188
                    break
189
            else:
190
                continue
191
            break
192
        if not service_dict:
193
            logger.error('failed to find data for server %s', source_server)
194
            raise RuntimeError('failed to find data for server')
195
        params = urllib.urlencode({'orig': service_dict.get('orig')})
196
        url = self.source_url + 'jump/trigger/paid?' + params
197
        url = sign_url(url, key=service_dict.get('secret'))
180 198
        message = {'result': 'ok'}
181 199
        r = requests.post(url, data=json.dumps(message), timeout=3)
182 200
        self.notification_date = timezone.now()
combo/apps/lingo/views.py
200 200
            item.payment_date = transaction.end_date
201 201
            item.save()
202 202
            try:
203
                item.notify()
203
                item.notify(request)
204 204
            except:
205 205
                # ignore errors, it will be retried later on if it fails
206 206
                pass
207
-