From de034a6ec8d6b78ba4c0dab019ecdb20cee20cfa Mon Sep 17 00:00:00 2001 From: fspreck <f.spreckelsen@indiscale.com> Date: Tue, 22 Mar 2022 13:09:18 +0100 Subject: [PATCH] ENH: Add "format": "date" for DATETIME properties --- src/caosadvancedtools/models/parser.py | 2 +- .../datamodel_atomic_properties.schema.json | 3 ++- .../datamodel_list_properties.schema.json | 4 ++++ unittests/test_json_schema_model_parser.py | 15 +++++++++++++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index b4a7ab57..3bc90371 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 71ba3ad4..3828f131 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 d2f7e493..b95f468a 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 e9d4ea4b..7ae92bfd 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() -- GitLab