Ejemplo n.º 1
0
    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)
             select=r'shall\s+(?:end).*\d.*',
             process_selected=lambda sentence, match: get_dates(match),
             fill_fields=lambda sentence, dates:
             {'expiration_date': dates[0]}),
         FieldDetector(
             select=r'expiration\s+date.*\d.*',
             process_selected=lambda sentence, match: get_dates(match),
             fill_fields=lambda sentence, dates:
             {'expiration_date': dates[0]}),
     ]),
 FieldConfig(
     LeaseDocument, 'area_size_sq_ft', 'Area Size (sq. ft.)',
     FieldType.FIELD_TYPE_CONCRETE_FLOAT, [
         FieldDetector(
             select=r'(?:premises|property)(.*?)\s+square\s+(?:foot|feet)',
             process_selected=lambda sentence, match: find_numbers(match),
             fill_fields=lambda sentence, numbers:
             {'area_square_feet__list': list(numbers)[-1]}),
         FieldDetector(
             select=r'(?:premises|property)(.*?)\s+acres?',
             process_selected=lambda sentence, match: find_numbers(match),
             fill_fields=lambda sentence, numbers:
             {'area_square_feet__list': 43560 * list(numbers)[-1]}),
         FieldDetector(
             select=r'(.*?)\s+square\s+(?:foot|feet).+(?:premises|property)',
             process_selected=lambda sentence, match: find_numbers(match),
             fill_fields=lambda sentence, numbers:
             {'area_square_feet__list': list(numbers)[-1]}),
         FieldDetector(
             select=r'(.*?)\s+acres?.+(?:premises|property)',
             process_selected=lambda sentence, match: find_numbers(match),