Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • workers/base-worker
1 result
Show changes
Commits on Source (3)
0.2.1 0.2.2-beta1
...@@ -156,6 +156,7 @@ class CachedTranscriptionEntity(Model): ...@@ -156,6 +156,7 @@ class CachedTranscriptionEntity(Model):
entity = ForeignKeyField(CachedEntity, backref="transcription_entities") entity = ForeignKeyField(CachedEntity, backref="transcription_entities")
offset = IntegerField(constraints=[Check("offset >= 0")]) offset = IntegerField(constraints=[Check("offset >= 0")])
length = IntegerField(constraints=[Check("length > 0")]) length = IntegerField(constraints=[Check("length > 0")])
worker_version_id = UUIDField()
class Meta: class Meta:
primary_key = CompositeKey("transcription", "entity") primary_key = CompositeKey("transcription", "entity")
......
...@@ -31,7 +31,7 @@ class ElementMixin(object): ...@@ -31,7 +31,7 @@ class ElementMixin(object):
if missing_slugs: if missing_slugs:
raise MissingTypeError( raise MissingTypeError(
f'Element type(s) {", ".join(missing_slugs)} were not found in the {corpus["name"]} corpus ({corpus["id"]}).' f'Element type(s) {", ".join(sorted(missing_slugs))} were not found in the {corpus["name"]} corpus ({corpus["id"]}).'
) )
return True return True
......
...@@ -21,7 +21,7 @@ class EntityType(Enum): ...@@ -21,7 +21,7 @@ class EntityType(Enum):
class EntityMixin(object): class EntityMixin(object):
def create_entity( def create_entity(
self, element, name, type, corpus=None, metas=None, validated=None self, element, name, type, corpus=None, metas=dict(), validated=None
): ):
""" """
Create an entity on the given corpus through API Create an entity on the given corpus through API
...@@ -111,6 +111,7 @@ class EntityMixin(object): ...@@ -111,6 +111,7 @@ class EntityMixin(object):
"entity": entity, "entity": entity,
"length": length, "length": length,
"offset": offset, "offset": offset,
"worker_version_id": self.worker_version_id,
}, },
) )
# TODO: Report transcription entity creation # TODO: Report transcription entity creation
...@@ -118,15 +119,13 @@ class EntityMixin(object): ...@@ -118,15 +119,13 @@ class EntityMixin(object):
if self.use_cache: if self.use_cache:
# Store transcription entity in local cache # Store transcription entity in local cache
try: try:
to_insert = [ CachedTranscriptionEntity.create(
{ transcription=transcription,
"transcription": transcription, entity=entity,
"entity": entity, offset=offset,
"offset": offset, length=length,
"length": length, worker_version_id=self.worker_version_id,
} )
]
CachedTranscriptionEntity.insert_many(to_insert).execute()
except IntegrityError as e: except IntegrityError as e:
logger.warning( logger.warning(
f"Couldn't save created transcription entity in local cache: {e}" f"Couldn't save created transcription entity in local cache: {e}"
......
...@@ -58,7 +58,7 @@ def test_create_tables(tmp_path): ...@@ -58,7 +58,7 @@ def test_create_tables(tmp_path):
CREATE TABLE "elements" ("id" TEXT NOT NULL PRIMARY KEY, "parent_id" TEXT, "type" VARCHAR(50) NOT NULL, "image_id" TEXT, "polygon" text, "initial" INTEGER NOT NULL, "worker_version_id" TEXT, FOREIGN KEY ("image_id") REFERENCES "images" ("id")) CREATE TABLE "elements" ("id" TEXT NOT NULL PRIMARY KEY, "parent_id" TEXT, "type" VARCHAR(50) NOT NULL, "image_id" TEXT, "polygon" text, "initial" INTEGER NOT NULL, "worker_version_id" TEXT, FOREIGN KEY ("image_id") REFERENCES "images" ("id"))
CREATE TABLE "entities" ("id" TEXT NOT NULL PRIMARY KEY, "type" VARCHAR(50) NOT NULL, "name" TEXT NOT NULL, "validated" INTEGER NOT NULL, "metas" text, "worker_version_id" TEXT NOT NULL) CREATE TABLE "entities" ("id" TEXT NOT NULL PRIMARY KEY, "type" VARCHAR(50) NOT NULL, "name" TEXT NOT NULL, "validated" INTEGER NOT NULL, "metas" text, "worker_version_id" TEXT NOT NULL)
CREATE TABLE "images" ("id" TEXT NOT NULL PRIMARY KEY, "width" INTEGER NOT NULL, "height" INTEGER NOT NULL, "url" TEXT NOT NULL) CREATE TABLE "images" ("id" TEXT NOT NULL PRIMARY KEY, "width" INTEGER NOT NULL, "height" INTEGER NOT NULL, "url" TEXT NOT NULL)
CREATE TABLE "transcription_entities" ("transcription_id" TEXT NOT NULL, "entity_id" TEXT NOT NULL, "offset" INTEGER NOT NULL CHECK (offset >= 0), "length" INTEGER NOT NULL CHECK (length > 0), PRIMARY KEY ("transcription_id", "entity_id"), FOREIGN KEY ("transcription_id") REFERENCES "transcriptions" ("id"), FOREIGN KEY ("entity_id") REFERENCES "entities" ("id")) CREATE TABLE "transcription_entities" ("transcription_id" TEXT NOT NULL, "entity_id" TEXT NOT NULL, "offset" INTEGER NOT NULL CHECK (offset >= 0), "length" INTEGER NOT NULL CHECK (length > 0), "worker_version_id" TEXT NOT NULL, PRIMARY KEY ("transcription_id", "entity_id"), FOREIGN KEY ("transcription_id") REFERENCES "transcriptions" ("id"), FOREIGN KEY ("entity_id") REFERENCES "entities" ("id"))
CREATE TABLE "transcriptions" ("id" TEXT NOT NULL PRIMARY KEY, "element_id" TEXT NOT NULL, "text" TEXT NOT NULL, "confidence" REAL NOT NULL, "worker_version_id" TEXT NOT NULL, FOREIGN KEY ("element_id") REFERENCES "elements" ("id"))""" CREATE TABLE "transcriptions" ("id" TEXT NOT NULL PRIMARY KEY, "element_id" TEXT NOT NULL, "text" TEXT NOT NULL, "confidence" REAL NOT NULL, "worker_version_id" TEXT NOT NULL, FOREIGN KEY ("element_id") REFERENCES "elements" ("id"))"""
actual_schema = "\n".join( actual_schema = "\n".join(
......
...@@ -52,7 +52,7 @@ def test_check_required_types(monkeypatch, tmp_path, mock_elements_worker, respo ...@@ -52,7 +52,7 @@ def test_check_required_types(monkeypatch, tmp_path, mock_elements_worker, respo
assert worker.check_required_types(corpus_id, "page", "text_line", "act") assert worker.check_required_types(corpus_id, "page", "text_line", "act")
assert ( assert (
str(e.value) str(e.value)
== "Element type(s) text_line, act were not found in the Some Corpus corpus (12341234-1234-1234-1234-123412341234)." == "Element type(s) act, text_line were not found in the Some Corpus corpus (12341234-1234-1234-1234-123412341234)."
) )
......
...@@ -213,7 +213,7 @@ def test_create_entity(responses, mock_elements_worker): ...@@ -213,7 +213,7 @@ def test_create_entity(responses, mock_elements_worker):
assert json.loads(responses.calls[-1].request.body) == { assert json.loads(responses.calls[-1].request.body) == {
"name": "Bob Bob", "name": "Bob Bob",
"type": "person", "type": "person",
"metas": None, "metas": {},
"validated": None, "validated": None,
"corpus": "12341234-1234-1234-1234-123412341234", "corpus": "12341234-1234-1234-1234-123412341234",
"worker_version": "12341234-1234-1234-1234-123412341234", "worker_version": "12341234-1234-1234-1234-123412341234",
...@@ -247,7 +247,7 @@ def test_create_entity_with_cache(responses, mock_elements_worker_with_cache): ...@@ -247,7 +247,7 @@ def test_create_entity_with_cache(responses, mock_elements_worker_with_cache):
assert json.loads(responses.calls[-1].request.body) == { assert json.loads(responses.calls[-1].request.body) == {
"name": "Bob Bob", "name": "Bob Bob",
"type": "person", "type": "person",
"metas": None, "metas": {},
"validated": None, "validated": None,
"corpus": "12341234-1234-1234-1234-123412341234", "corpus": "12341234-1234-1234-1234-123412341234",
"worker_version": "12341234-1234-1234-1234-123412341234", "worker_version": "12341234-1234-1234-1234-123412341234",
...@@ -261,7 +261,7 @@ def test_create_entity_with_cache(responses, mock_elements_worker_with_cache): ...@@ -261,7 +261,7 @@ def test_create_entity_with_cache(responses, mock_elements_worker_with_cache):
type="person", type="person",
name="Bob Bob", name="Bob Bob",
validated=False, validated=False,
metas=None, metas={},
worker_version_id=UUID("12341234-1234-1234-1234-123412341234"), worker_version_id=UUID("12341234-1234-1234-1234-123412341234"),
) )
] ]
...@@ -449,6 +449,7 @@ def test_create_transcription_entity(responses, mock_elements_worker): ...@@ -449,6 +449,7 @@ def test_create_transcription_entity(responses, mock_elements_worker):
"entity": "11111111-1111-1111-1111-111111111111", "entity": "11111111-1111-1111-1111-111111111111",
"offset": 5, "offset": 5,
"length": 10, "length": 10,
"worker_version_id": "12341234-1234-1234-1234-123412341234",
} }
...@@ -504,6 +505,7 @@ def test_create_transcription_entity_with_cache( ...@@ -504,6 +505,7 @@ def test_create_transcription_entity_with_cache(
"entity": "11111111-1111-1111-1111-111111111111", "entity": "11111111-1111-1111-1111-111111111111",
"offset": 5, "offset": 5,
"length": 10, "length": 10,
"worker_version_id": "12341234-1234-1234-1234-123412341234",
} }
# Check that created transcription entity was properly stored in SQLite cache # Check that created transcription entity was properly stored in SQLite cache
...@@ -513,5 +515,6 @@ def test_create_transcription_entity_with_cache( ...@@ -513,5 +515,6 @@ def test_create_transcription_entity_with_cache(
entity=UUID("11111111-1111-1111-1111-111111111111"), entity=UUID("11111111-1111-1111-1111-111111111111"),
offset=5, offset=5,
length=10, length=10,
worker_version_id=UUID("12341234-1234-1234-1234-123412341234"),
) )
] ]