cvsdatasource: data is now a new-generation endpoint (#32121)
This commit is contained in:
parent
fdcada0be0
commit
ac776b7e4e
|
@ -269,6 +269,20 @@ class CsvDataSource(BaseResource):
|
|||
def titles(self):
|
||||
return [smart_text(t.strip()) for t in self.columns_keynames.split(',')]
|
||||
|
||||
@endpoint(perm='can_access', methods=['get'], name='data')
|
||||
def data(self, request, **kwargs):
|
||||
params = request.GET
|
||||
filters = []
|
||||
for column_title in [t.strip() for t in self.columns_keynames.split(',') if t]:
|
||||
if column_title in params.keys():
|
||||
query_value = request.GET.get(column_title, '')
|
||||
if 'case-insensitive' in params:
|
||||
filters.append("%s.lower() == %r" % (column_title, query_value.lower()))
|
||||
else:
|
||||
filters.append("%s == %r" % (column_title, query_value))
|
||||
query = Query(filters='\n'.join(filters))
|
||||
return self.execute_query(request, query, **params.dict())
|
||||
|
||||
@endpoint(perm='can_access', methods=['get'],
|
||||
name='query', pattern=r'^(?P<query_name>[\w-]+)/$')
|
||||
def select(self, request, query_name, **kwargs):
|
||||
|
|
|
@ -13,16 +13,17 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block endpoints %}
|
||||
{% url 'generic-endpoint' connector='csvdatasource' slug=object.slug endpoint='data' as csvdatasource_data_url %}
|
||||
<ul>
|
||||
<li>{% trans "Returning all file lines: "%}
|
||||
<a href="{% url "csvdatasource-data" slug=object.slug %}">{% url "csvdatasource-data" slug=object.slug %}</a>
|
||||
<a href="{{ csvdatasource_data_url }}">{{ csvdatasource_data_url }}</a>
|
||||
</li>
|
||||
<ul>
|
||||
<li>{% trans "Returning lines containing 'abc' in 'text' column: "%}
|
||||
<a href="{% url "csvdatasource-data" slug=object.slug %}?q=abc">{% url "csvdatasource-data" slug=object.slug %}?q=abc</a>
|
||||
<a href="{{ csvdatasource_data_url }}?q=abc">{{ csvdatasource_data_url }}?q=abc</a>
|
||||
</li>
|
||||
<li>{% trans "Same filter, but case insensitive:" %}
|
||||
<a href="{% url "csvdatasource-data" slug=object.slug %}?case-insensitive&q=abc">{% url "csvdatasource-data" slug=object.slug %}?case-insensitive&q=abc</a>
|
||||
<a href="{{ csvdatasource_data_url }}?case-insensitive&q=abc">{{ csvdatasource_data_url }}?case-insensitive&q=abc</a>
|
||||
</li>
|
||||
</ul>
|
||||
{% for query in object.query_set.all %}
|
||||
|
|
|
@ -18,10 +18,6 @@ from django.conf.urls import include, url
|
|||
|
||||
from .views import *
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^(?P<slug>[\w,-]+)/data$', CsvDataView.as_view(), name='csvdatasource-data'),
|
||||
]
|
||||
|
||||
management_urlpatterns = [
|
||||
url(r'^(?P<connector_slug>[\w,-]+)/download/$',
|
||||
CsvDownload.as_view(), name='csv-download'),
|
||||
|
|
|
@ -92,7 +92,11 @@ def setup():
|
|||
apiuser=api,
|
||||
resource_type=obj_type,
|
||||
resource_pk=csv.pk)
|
||||
url = reverse('csvdatasource-data', kwargs={'slug': csv.slug})
|
||||
url = reverse('generic-endpoint', kwargs={
|
||||
'connector': 'csvdatasource',
|
||||
'slug': csv.slug,
|
||||
'endpoint': 'data',
|
||||
})
|
||||
return csv, url
|
||||
|
||||
return maker
|
||||
|
|
|
@ -64,7 +64,11 @@ def setup():
|
|||
obj_type = ContentType.objects.get_for_model(csv)
|
||||
AccessRight.objects.create(codename='can_access', apiuser=api, resource_type=obj_type,
|
||||
resource_pk=csv.pk)
|
||||
url = reverse('csvdatasource-data', kwargs={'slug': csv.slug})
|
||||
url = reverse('generic-endpoint', kwargs={
|
||||
'connector': 'csvdatasource',
|
||||
'slug': csv.slug,
|
||||
'endpoint': 'data',
|
||||
})
|
||||
return csv, url
|
||||
|
||||
return maker
|
||||
|
|
Loading…
Reference in New Issue