0001-lingo-notify-wcs-about-local-items-payment-9351.patch
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 |
- |