Projet

Général

Profil

0001-fields-add-a-structured-form-to-map-fields-28639.patch

Frédéric Péters, 06 décembre 2018 12:36

Télécharger (2,61 ko)

Voir les différences:

Subject: [PATCH 1/2] fields: add a structured form to map fields (#28639)

 wcs/fields.py    | 9 +++++++++
 wcs/formdata.py  | 4 ++--
 wcs/variables.py | 4 ++--
 3 files changed, 13 insertions(+), 4 deletions(-)
wcs/fields.py
306 306
    def get_csv_value(self, element, **kwargs):
307 307
        return []
308 308

  
309
    def get_structured_value(self, data):
310
        if not self.store_structured_value:
311
            return None
312
        return data.get('%s_structured' % self.id)
313

  
309 314
    def get_prefill_value(self, user=None, force_string=True):
310 315
        # returns a tuple with two items,
311 316
        #  1. value[str], the value that will be used to prefill
......
2093 2098
        else:
2094 2099
            return None
2095 2100

  
2101
    def get_structured_value(self, data):
2102
        return self.get_json_value(data.get(self.id))
2103

  
2104

  
2096 2105
register_field_class(MapField)
2097 2106

  
2098 2107

  
wcs/formdata.py
77 77
                                    formdata.get_url(), field.id)
78 78
                elif raw_value is not None:
79 79
                    new_data['var_%s_raw' % field.varname] = raw_value
80
            if field.store_structured_value and data is not None:
81
                structured_value = data.get('%s_structured' % field.id)
80
            if data is not None:
81
                structured_value = field.get_structured_value(data)
82 82
                if type(structured_value) is dict:
83 83
                    for k, v in structured_value.items():
84 84
                        if k in ('id', 'text'):
wcs/variables.py
374 374
            return getattr(self, key)
375 375
        except AttributeError:
376 376
            pass
377
        structured_value = self.data.get('%s_structured' % self.field.id)
378
        if not (self.field.store_structured_value and structured_value):
377
        structured_value = self.field.get_structured_value(self.data)
378
        if not structured_value:
379 379
            raise KeyError(key)
380 380
        if isinstance(structured_value, dict):
381 381
            return structured_value[key]
382
-