From 6898318f8210ca49cf66bbce192d76c1f62530f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sun, 1 Oct 2017 12:00:08 +0200 Subject: [PATCH] grandlyon: add "+1" hack support scripts (#19000) --- grandlyon/scripts/fill_plus1.py | 25 ++++++++++++++++++++++++ grandlyon/scripts/generate_plus1_json.py | 23 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 grandlyon/scripts/fill_plus1.py create mode 100644 grandlyon/scripts/generate_plus1_json.py diff --git a/grandlyon/scripts/fill_plus1.py b/grandlyon/scripts/fill_plus1.py new file mode 100644 index 0000000..2294647 --- /dev/null +++ b/grandlyon/scripts/fill_plus1.py @@ -0,0 +1,25 @@ +import json +import sys + +from wcs.formdef import FormDef + +if len(sys.argv) == 2: + data = json.load(open(sys.argv[1])) +else: + data = json.load(sys.stdin) + +for key in data: + formdef = FormDef.get_by_urlname(key) + plus1_field_id = None + for field in formdef.workflow.backoffice_fields_formdef.fields: + if field.varname == 'plus1': + plus1_field_id = field.id + break + if not plus1_field_id: + continue + dataclass = formdef.data_class() + for data_id, data_count in data[key].items(): + formdata = dataclass.get(data_id) + if str(data_count) != formdata.data.get(plus1_field_id): + formdata.data[plus1_field_id] = str(data_count) + formdata.store() diff --git a/grandlyon/scripts/generate_plus1_json.py b/grandlyon/scripts/generate_plus1_json.py new file mode 100644 index 0000000..b9d7e3e --- /dev/null +++ b/grandlyon/scripts/generate_plus1_json.py @@ -0,0 +1,23 @@ +#! /usr/bin/env python + +import json + +from passerelle.apps.jsondatastore.models import JsonDataStore, JsonData + +plus1_store = JsonDataStore.objects.get(slug='plus1') + +formdefs = {} + +for data in JsonData.objects.filter(datastore=plus1_store): + if not 'reference' in data.content: + continue + if not ':' in data.content['reference']: + continue + formdef_slug, formdata_id = data.content['reference'].split(':') + if not formdef_slug in formdefs: + formdefs[formdef_slug] = {} + if not formdata_id in formdefs[formdef_slug]: + formdefs[formdef_slug][formdata_id] = 0 + formdefs[formdef_slug][formdata_id] = formdefs[formdef_slug][formdata_id] + 1 + +print json.dumps(formdefs)