diff --git a/grandlyon/scripts/generate-geojson.py b/grandlyon/scripts/generate-geojson.py new file mode 100644 index 0000000..4f0ed66 --- /dev/null +++ b/grandlyon/scripts/generate-geojson.py @@ -0,0 +1,34 @@ +import json +import os + +from quixote import get_publisher + +from qommon.misc import JSONEncoder +from qommon.storage import Contains + +from wcs.categories import Category +from wcs.formdef import FormDef +from wcs.backoffice.management import geojson_formdatas + +geojson_dir = os.path.join(get_publisher().app_dir, 'geojsons') +if not os.path.exists(geojson_dir): + os.mkdir(geojson_dir) + +category = [x for x in Category.select() if x.name == 'Signalements'][0] + +for formdef in FormDef.select(): + if not formdef.category_id == category.id: + continue + applied_filters = ['wf-%s' % x.id for x in formdef.workflow.get_not_endpoint_status()] + + formdatas = formdef.data_class().select([Contains('status', applied_filters)]) + + geojson = geojson_formdatas(formdatas) + for feature in geojson['features']: + formdata_id = feature['properties']['url'].split('/')[-2] + formdata = formdef.data_class().get(formdata_id) + formdata_vars = formdata.get_substitution_variables() + feature['properties']['message'] = formdata_vars['form_var_message'] + + json.dump(geojson, open(os.path.join(geojson_dir, formdef.url_name + '.json'), 'w'), + indent=2, cls=JSONEncoder)