From 798fe826c5b72de4785e69e83c0a1351664cc51f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Fri, 22 Sep 2017 17:29:46 +0200 Subject: [PATCH] grandlyon: generate static geojson files from demands --- grandlyon/scripts/generate-geojson.py | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 grandlyon/scripts/generate-geojson.py 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)