From a554ba393b640105663ca27383934ddb23b01114 Mon Sep 17 00:00:00 2001 From: jungtop Date: Tue, 3 Jan 2023 12:09:28 +0530 Subject: [PATCH] updated metadata --- docs/docs/toolkit/metadata.md | 4 ++-- openpecha/core/metadata.py | 43 +++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/docs/docs/toolkit/metadata.md b/docs/docs/toolkit/metadata.md index f6e242d3..1df5e23c 100644 --- a/docs/docs/toolkit/metadata.md +++ b/docs/docs/toolkit/metadata.md @@ -10,8 +10,8 @@ Work | W######## | `openpecha.core.metadata.WorkMetadata` | Initial | I######## | `openpecha.core.metadata.InitialPechaMetadata` | Diplomatic | D######## | `openpecha.core.metadata.DiplomaticPechaMetadata` | Open | O######## | `openpecha.core.metadata.OpenPechaMetadata` | -Alignment | A######## | `` | -Collection | C######## | `` | +Alignment | A######## | `openpecha.core.metadata.AlignmentMetadata` | +Collection | C######## | `openpecha.core.metadata.CollectionMetadata` | here is an example to create metadata for *Initial Pecha* type diff --git a/openpecha/core/metadata.py b/openpecha/core/metadata.py index 4bb4274e..45b58bd9 100644 --- a/openpecha/core/metadata.py +++ b/openpecha/core/metadata.py @@ -1,11 +1,11 @@ from datetime import datetime from enum import Enum -from typing import Dict, Optional, Union +from typing import Dict, Optional, Union,List from pydantic import AnyHttpUrl, BaseModel, Extra, validator from . import ids - +import re class InitialCreationType(Enum): ocr = "ocr" @@ -115,3 +115,42 @@ class DiplomaticPechaMetadata(PechaMetadata): @validator("id", pre=True, always=True) def set_id(cls, v): return v or ids.get_diplomatic_id() + +class AlignmentMetadata(BaseModel): + id:str + title:str + type: str + pechas: List[str] + alignment_to_base:Dict[str,str] + source_metadata: Optional[Dict] = None + +class InstanceMetadata(BaseModel): + id: str + title: List[str] + colophon: str + authors: List[str] + bdrc_id: str + location_info: dict + diplomatic_id:Optional[List[str]] + alignmnet_ids:Optional[List[str]] + collection_ids:Optional[List[str]] + + @validator("diplomatic_id") + def validate_diplonatic_id(cls,value): + if not re.match(r"I.*",value): + raise ValueError("Pecha Id is not Diplomatic") + + +class WorkMetadata(BaseModel): + id: str + title: str + alternative_title: Optional[str] + language: str + bdrc_work_id: str + authors: List[str] + best_instance:Optional[InstanceMetadata] + instances: Optional[List[InstanceMetadata]] + + +class CollectionMetadata: + pass