0002-opendatasoft-use-APIError-into-endpoint-50212.patch
passerelle/apps/opendatasoft/models.py | ||
---|---|---|
17 | 17 |
from django.db import models |
18 | 18 |
from django.shortcuts import get_object_or_404 |
19 | 19 |
from django.urls import reverse |
20 | 20 |
from django.utils.six.moves.urllib import parse as urlparse |
21 | 21 |
from django.utils.translation import ugettext_lazy as _ |
22 | 22 | |
23 | 23 |
from passerelle.base.models import BaseQuery, BaseResource |
24 | 24 |
from passerelle.utils.api import endpoint |
25 |
from passerelle.utils.jsonresponse import APIError |
|
25 | 26 |
from passerelle.utils.templates import render_to_string, validate_template |
26 | 27 | |
27 | 28 | |
28 | 29 |
class OpenDataSoft(BaseResource): |
29 | 30 |
service_url = models.CharField( |
30 | 31 |
_('Site URL'), |
31 | 32 |
max_length=256, |
32 | 33 |
blank=False, |
... | ... | |
90 | 91 |
if self.api_key: |
91 | 92 |
params.update({'apikey': self.api_key}) |
92 | 93 |
if limit: |
93 | 94 |
params.update({'rows': limit}) |
94 | 95 | |
95 | 96 |
result_response = self.requests.get(url, params=params) |
96 | 97 |
err_desc = result_response.json().get('error') |
97 | 98 |
if err_desc: |
98 |
return {'err': 1, 'err_desc': err_desc}
|
|
99 |
raise APIError(err_desc, http_status=200)
|
|
99 | 100 | |
100 | 101 |
result = [] |
101 | 102 |
for record in result_response.json().get('records'): |
102 | 103 |
data = {} |
103 | 104 |
for key, value in record.get('fields').items(): |
104 | 105 |
data[key] = value |
105 | 106 |
data['id'] = record.get('recordid') |
106 | 107 |
data['text'] = render_to_string(text_template, data).strip() |
107 |
- |