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)