def set_value_from_selection(self, doc: Document, value: str): if self.field_type == FieldType.FIELD_TYPE_CONCRETE_STRING: doc.__setattr__(self.field, value) elif self.field_type == FieldType.FIELD_TYPE_CONCRETE_FLOAT: try: doc.__setattr__(self.field, float(value)) except ValueError: nums = list(extractors.find_numbers(value)) if value else None doc.__setattr__(self.field, nums[0] if nums else None) elif self.field_type == FieldType.FIELD_TYPE_CONCRETE_INTEGER: try: doc.__setattr__(self.field, int(value)) except ValueError: nums = list(extractors.find_numbers(value)) if value else None doc.__setattr__(self.field, nums[0] if nums else None) elif self.field_type == FieldType.FIELD_TYPE_CONCRETE_DATE: d = dateparser.parse(value) if value else None if d: doc.__setattr__(self.field, d) else: dates = list(get_dates(value)) if value else None doc.__setattr__(self.field, dates[0] if dates else None) return doc.__getattribute__(self.field)
def get_value(self, doc: Document): return doc.__getattribute__(self.field)