コード例 #1
0
def guess_destination_and_type(field_name: str,
                               sample_value: Optional[str]) -> Tuple:
    if field_name == "id":
        # The uploader *probably* does not mean to use the id field (possibly originating
        # from another AmCAT instance).
        return None, None

    from navigator.views.articleset_upload_views import CORE_FIELDS
    if field_name in CORE_FIELDS:
        return field_name, None

    # Guess based on field_name:
    ptype = get_property_primitive_type(field_name)
    if ptype != str:
        if ptype == float:
            return field_name, "num"
        elif ptype == int:
            return field_name, "int"
        elif ptype == datetime.datetime:
            return field_name, "date"
        else:
            raise ValueError(
                "Did not recognize return value of get_property_primitive_type: {}"
                .format(ptype))

    # Guess based on sample value
    if sample_value is None:
        # Not able to guess something, do not recommend anything
        return None, None

    # Guess datetime
    try:
        iso8601.parse_date(sample_value)
    except iso8601.ParseError:
        pass
    else:
        return get_fieldname_tuple(field_name, "date")

    # TODO: Guess datetime based on DATE_INPUT_TYPES of Django

    # Guess int
    try:
        int(sample_value)
    except ValueError:
        pass
    else:
        return get_fieldname_tuple(field_name, "int")

    # Guess float
    try:
        float(sample_value)
    except ValueError:
        pass
    else:
        return get_fieldname_tuple(field_name, "num")

    if sample_value.startswith(("https://", "http://")):
        return get_fieldname_tuple(field_name, "url")

    return field_name, "default"
コード例 #2
0
ファイル: csv_import.py プロジェクト: amcat/amcat
def guess_destination_and_type(field_name: str, sample_value: Optional[str]) -> Tuple:
    if field_name == "id":
        # The uploader *probably* does not mean to use the id field (possibly originating
        # from another AmCAT instance).
        return None, None

    from navigator.views.articleset_upload_views import CORE_FIELDS
    if field_name in CORE_FIELDS:
        return field_name, None

    # Guess based on field_name:
    ptype = get_property_primitive_type(field_name)
    if ptype != str:
        if ptype == float:
            return field_name, "num"
        elif ptype == int:
            return field_name, "int"
        elif ptype == datetime.datetime:
            return field_name, "date"
        else:
            raise ValueError("Did not recognize return value of get_property_primitive_type: {}".format(ptype))

    # Guess based on sample value
    if sample_value is None:
        # Not able to guess something, do not recommend anything
        return None, None

    # Guess datetime
    try:
        iso8601.parse_date(sample_value)
    except iso8601.ParseError:
        pass
    else:
        return get_fieldname_tuple(field_name, "date")

    # TODO: Guess datetime based on DATE_INPUT_TYPES of Django

    # Guess int
    try:
        int(sample_value)
    except ValueError:
        pass
    else:
        return get_fieldname_tuple(field_name, "int")

    # Guess float
    try:
        float(sample_value)
    except ValueError:
        pass
    else:
        return get_fieldname_tuple(field_name, "num")

    if sample_value.startswith(("https://", "http://")):
        return get_fieldname_tuple(field_name, "url")

    return field_name, "default"
コード例 #3
0
def parse_value(property: str, value: str):
    t = get_property_primitive_type(property)
    parser = get_parser(t)
    return parser(value)
コード例 #4
0
 def parse_value(self, property, value):
     t = get_property_primitive_type(property)
     parser = PARSERS[t]
     return parser(value)
コード例 #5
0
ファイル: csv_import.py プロジェクト: amcat/amcat
def parse_value(property: str, value: str):
    t = get_property_primitive_type(property)
    parser = get_parser(t)
    return parser(value)
コード例 #6
0
ファイル: csv_import.py プロジェクト: amcat/amcat
 def parse_value(self, property, value):
     t = get_property_primitive_type(property)
     parser = PARSERS[t]
     return parser(value)