geojson: don't return fields with no value (#15889)

This commit is contained in:
Serghei Mihai 2017-04-18 11:22:41 +02:00
parent 8304a4d902
commit 01dd49631f
3 changed files with 6 additions and 5 deletions

View File

@ -915,6 +915,7 @@ def test_backoffice_geojson(pub):
create_environment(pub)
formdef = FormDef.get_by_urlname('form-title')
formdef.fields.append(fields.MapField(id='4', label='4th field', type='map'))
formdef.fields.append(fields.MapField(id='5', label='5th field', type='string'))
form_class = formdef.data_class()
number31 = [x for x in form_class.select() if x.data['1'] == 'FOO BAR 30'][0]
app = login(get_app(pub))
@ -927,7 +928,7 @@ def test_backoffice_geojson(pub):
number31.geolocations = {'base': {'lat': 48.83, 'lon': 2.32}}
number31.store()
resp = app.get('/backoffice/management/form-title/geojson?1=on&4=on')
resp = app.get('/backoffice/management/form-title/geojson?1=on&4=on&5=on')
assert len(resp.json['features']) == 1
assert resp.json['features'][0]['geometry']['coordinates'] == [2.32, 48.83]
assert 'status_colour' in resp.json['features'][0]['properties']

View File

@ -82,6 +82,8 @@ def geojson_formdatas(formdatas, geoloc_key='base', fields=None):
continue
value = formdata.get_field_view_value(field, max_length=60)
value = value.replace('[download]', formdata_backoffice_url)
if not value:
continue
display_fields.append((str(htmlescape(field.label)), str(htmlescape(value))))
feature = {

View File

@ -96,10 +96,8 @@ $(window).on('load', function() {
if (feature.properties.display_fields.length > 0) {
var popup = '';
$.each(feature.properties.display_fields, function(index, field) {
if (field[1]) {
popup += '<p class="popup-field"><span class="field-label">' + field[0] + '</span>';
popup += '<span class="field-value">' + field[1] + '</span></p>';
}
popup += '<p class="popup-field"><span class="field-label">' + field[0] + '</span>';
popup += '<span class="field-value">' + field[1] + '</span></p>';
});
} else {
var popup = '<p class="popup-field formdata-name">' + feature.properties.name + '</p>';