def get_json_value(self): compjson = [] for key in self.record_ids: record = self.records[key] json_record = {} json_record['id'] = key for header in self.headers: json_record[header.name] = adapt_value(record[header.name]) for rec_name in record.keys(): if isinstance(rec_name, six.text_type) and rec_name.startswith('__') and (rec_name not in self.headers): json_record[rec_name] = record[rec_name] compjson.append(json_record) return compjson
def get_value_for_evaluate(self, field_list, field_value): dep_field = self.get_field_by_name(field_list[0]) if (dep_field is None or is_simple_field(dep_field)) and not isinstance( field_value, LucteriosModel): field_value = adapt_value(field_value) formatnum, formatstr = extract_format( get_format_from_field(dep_field)) field_val = format_to_string(field_value, formatnum, formatstr) elif field_value is None: field_val = "" elif isinstance(field_value, LucteriosModel) and not hasattr(field_value, "all"): field_val = field_value.evaluate("#" + ".".join(field_list[1:])) else: field_val = eval_sublist(field_list, field_value) return field_val
def evaluate(self, text): def eval_sublist(field_list, field_value): field_val = [] for sub_model in field_value.all(): field_val.append( sub_model.evaluate("#" + ".".join(field_list[1:]))) return "{[br/]}".join(field_val) if text == '#': return six.text_type(self) value = text if text is not None: for field in self.TO_EVAL_FIELD.findall(text): field_list = field[1:].split('.') if hasattr(self, field_list[0]): field_value = getattr(self, field_list[0]) else: field_value = "" if PrintFieldsPlugIn.is_plugin(field_list[0]): field_val = PrintFieldsPlugIn.get_plugin( field_list[0]).evaluate("#" + ".".join(field_list[1:])) elif field_list[0][-4:] == '_set': field_val = eval_sublist(field_list, field_value) else: dep_field = self.get_field_by_name(field_list[0]) if (dep_field is None or is_simple_field(dep_field)) and not isinstance( field_value, LucteriosModel): field_value = adapt_value(field_value) formatnum, formatstr = extract_format( get_format_from_field(dep_field)) field_val = format_to_string(field_value, formatnum, formatstr) else: if field_value is None: field_val = "" elif isinstance(field_value, LucteriosModel) and not hasattr( field_value, "all"): field_val = field_value.evaluate( "#" + ".".join(field_list[1:])) else: field_val = eval_sublist(field_list, field_value) value = value.replace(field, six.text_type(field_val)) return value
def get_reading_comp(self, field_name, prefix=''): sub_value = self.item for fieldname in field_name.split('.'): if sub_value is not None: try: sub_value = getattr(sub_value, fieldname) except ObjectDoesNotExist: getLogger("lucterios.core").exception( "fieldname '%s' not found", fieldname) sub_value = None value = adapt_value(sub_value) dep_field = self.item.get_field_by_name(field_name) if isinstance(dep_field, EmailField): comp = XferCompLinkLabel(prefix + field_name) comp.set_link('mailto:' + value) else: comp = XferCompLabelForm(prefix + field_name) comp.set_value(value) comp.set_format(get_format_from_field(dep_field)) return comp