Projet

Général

Profil

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

Frédéric Péters, 14 janvier 2016 13:35

Télécharger (2,68 ko)

Voir les différences:

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

 combo/apps/lingo/models.py | 24 ++++++++++++++++++++----
 combo/apps/lingo/views.py  |  2 +-
 2 files changed, 21 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
                if service['verif_orig'] == source_server:
185
                    service_dict = service
186
                    break
187
            else:
188
                continue
189
            break
190
        if not service_dict:
191
            logger.error('failed to find data for server %s', source_server)
192
            raise RuntimeError('failed to find data for server')
193
        params = urllib.urlencode({'orig': service_dict.get('orig')})
194
        url = self.source_url + 'jump/trigger/paid?' + params
195
        url = sign_url(url, key=service_dict.get('secret'))
180 196
        message = {'result': 'ok'}
181 197
        r = requests.post(url, data=json.dumps(message), timeout=3)
182 198
        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
-