diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index b4a7ab57b8f3c15163916deecc132e775add64b7..3bc903714f70db03c024941a70911ee7af39104c 100644 --- a/src/caosadvancedtools/models/parser.py +++ b/src/caosadvancedtools/models/parser.py @@ -605,7 +605,7 @@ class JsonSchemaParser(Parser): def _get_atomic_datatype(self, elt): if elt["type"] == "string": - if "format" in elt and elt["format"] == "date-time": + if "format" in elt and elt["format"] in ["date", "date-time"]: return db.DATETIME else: return db.TEXT diff --git a/unittests/json-schema-models/datamodel_atomic_properties.schema.json b/unittests/json-schema-models/datamodel_atomic_properties.schema.json index 71ba3ad4c252d5a7917b00609ae9ccacfbfed7ad..3828f131180a839d5c9b8bc5aa1a1285717da723 100644 --- a/unittests/json-schema-models/datamodel_atomic_properties.schema.json +++ b/unittests/json-schema-models/datamodel_atomic_properties.schema.json @@ -14,7 +14,8 @@ "title": "Dataset2", "type": "object", "properties": { - "date": { "type": "string", "format": "date-time" }, + "date_time": { "type": "string", "format": "date-time" }, + "date": { "type": "string", "format": "date" }, "integer": { "type": "integer", "description": "Some integer property" }, "boolean": { "type": "boolean" }, "number_prop": { "type": "number", "description": "Some float property" } diff --git a/unittests/json-schema-models/datamodel_list_properties.schema.json b/unittests/json-schema-models/datamodel_list_properties.schema.json index d2f7e493750edb6d7b75c4f13b11dcda788e06b6..b95f468a1c13f1912266e65f029654077ce6a14e 100644 --- a/unittests/json-schema-models/datamodel_list_properties.schema.json +++ b/unittests/json-schema-models/datamodel_list_properties.schema.json @@ -23,6 +23,10 @@ "type": "array", "items": { "type": "string", "format": "date-time" } }, + "dates": { + "type": "array", + "items": { "type": "string", "format": "date" } + }, "reference": { "type": "array", "items": { "type": "object", "properties": {} } diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py index e9d4ea4b385a1e732a8462db6bafc052bd638137..7ae92bfd537f027a6f132626f3dd88f0cd974ad6 100644 --- a/unittests/test_json_schema_model_parser.py +++ b/unittests/test_json_schema_model_parser.py @@ -103,11 +103,14 @@ def test_datamodel_with_atomic_properties(): assert isinstance(rt2, db.RecordType) assert rt2.name == "Dataset2" assert not rt2.description - assert len(rt2.get_properties()) == 4 + assert len(rt2.get_properties()) == 5 date_prop = rt2.get_property("date") assert date_prop.datatype == db.DATETIME + datetime_prop = rt2.get_property("date_time") + assert date_prop.datatype == db.DATETIME + int_prop = rt2.get_property("integer") assert int_prop.datatype == db.INTEGER assert int_prop.description == "Some integer property" @@ -221,7 +224,8 @@ def test_list(): FILEPATH, "datamodel_list_properties.schema.json")) licenses = ["CC-BY", "CC-BY-SA", "CC0", "restricted access"] names = ["Dataset", "keywords", "booleans", "integers", "floats", - "datetimes", "reference", "reference_with_name", "event", "license"] + "datetimes", "dates", "reference", "reference_with_name", "event", + "license"] for name in names + licenses: assert name in model @@ -257,6 +261,13 @@ def test_list(): assert model["datetimes"].name == "datetimes" assert model["datetimes"].datatype == db.LIST(db.DATETIME) + assert dataset_rt.get_property("dates") is not None + assert dataset_rt.get_property( + "dates").datatype == db.LIST(db.DATETIME) + assert isinstance(model["dates"], db.Property) + assert model["dates"].name == "dates" + assert model["dates"].datatype == db.LIST(db.DATETIME) + # Simple reference list property assert dataset_rt.get_property("reference") is not None assert dataset_rt.get_property("reference").is_reference()