160 lines
11 KiB
Python
160 lines
11 KiB
Python
from importlib import import_module
|
|
from initDb import initDb # For database initialization
|
|
from wisski.api import Api, Pathbuilder, Entity # For WissKI API
|
|
import os # For environment variable loading
|
|
from dotenv import load_dotenv # For environment variable loading
|
|
from time import sleep
|
|
|
|
# Import entities
|
|
material_module = import_module("01_importMaterialsAndTechnique")
|
|
administrator_module = import_module("02_importAdministrator")
|
|
administrator_status_module = import_module("03_importAdministratorStatus")
|
|
source_module = import_module("03_importSource")
|
|
artist_source_reference_assignment_module = import_module("04_importArtistSourceReferenceAssignment")
|
|
marks_module = import_module("04_importMarks")
|
|
source_reference_assignment_module = import_module("04_importSourceReferenceAssignment")
|
|
artist_module = import_module("05_importArtist")
|
|
literature_module = import_module("06_importLiterature")
|
|
inspection_mark_module = import_module("07_importInspectionMark")
|
|
journal_assignment_module = import_module("07_importJournalAssignment")
|
|
literature_reference_assignment_module = import_module("07_importLiteratureReferenceAssignment")
|
|
parent_literature_assignment_module = import_module("07_importParentLiteratureAssignment")
|
|
inspection_mark_location_module = import_module("08_importInspectionMarkLocation")
|
|
inspection_mark_relation_module = import_module("09_importInspectionMarkRelation")
|
|
mark_dating_info_module = import_module("10_importMarkDatingInfo")
|
|
birth_module = import_module("12_importBirth")
|
|
death_module = import_module("13_importDeath")
|
|
dating_module = import_module("14_importDating")
|
|
goldsmith_relation_module = import_module("15_importGoldsmithRelation")
|
|
client_module = import_module("16_importClient")
|
|
mentioned_module = import_module("17_importMentioned")
|
|
num_dating_module = import_module("18_importNumDating")
|
|
origin_assignment_module = import_module("19_importOriginAssignment")
|
|
workshops_module = import_module("20_importWorkshops")
|
|
artifacts_module = import_module("21_importArtifacts")
|
|
artifact_relation_module = import_module("22_importArtifactRelation")
|
|
artist_assignment_module = import_module("24_importArtistAssignment")
|
|
mark_information_module = import_module("25_importMarkInformation")
|
|
photographer_module = import_module("26_importPhotographer")
|
|
|
|
# Import relations
|
|
artifact_to_artist_relation_module = import_module("98__r__importArtifactToArtistRelationRelation")
|
|
artifact_to_client_assignment_relation_module = import_module("98__r__importArtifactToClientAssignmentRelation")
|
|
artifact_to_inspection_mark_location_relation_module = import_module("98__r__importArtifactToInspectionMarkLocationRelation")
|
|
artifact_to_literature_reference_assignment_relation_module = import_module("98__r__importArtifactToLiteratureReferenceAssignmentRelation")
|
|
artifact_to_mark_information_assignment_relation_module = import_module("98__r__importArtifactToMarkInformationAssignmentRelation")
|
|
artifact_to_material_relation_module = import_module("98__r__importArtifactToMaterialRelation")
|
|
artifact_to_numerice_date_relation_module = import_module("98__r__importArtifactToNumericeDateRelation")
|
|
artifact_to_photograph_relation_module = import_module("98__r__importArtifactToPhotographRelation")
|
|
artifact_to_relation_relation_module = import_module("98__r__importArtifactToRelationRelation")
|
|
artifact_to_source_relation_module = import_module("98__r__importArtifactToSourceRelation")
|
|
artifact_to_status_administrator_relation_module = import_module("98__r__importArtifactToStatusAdministratorRelation")
|
|
artist_to_birth_relation_module = import_module("98__r__importArtistToBirthRelation")
|
|
artist_to_death_relation_module = import_module("98__r__importArtistToDeathRelation")
|
|
artist_to_goldsmith_relation_module = import_module("98__r__importArtistToGoldsmithRelation")
|
|
artist_to_literature_reference_relation_module = import_module("98__r__importArtistToLiteratureReferenceRelation")
|
|
artist_to_mentioned_relation_module = import_module("98__r__importArtistToMentionedRelation")
|
|
artist_to_origin_relation_module = import_module("98__r__importArtistToOriginRelation")
|
|
artist_to_workshop_relation_module = import_module("98__r__importArtistToWorkshopRelation")
|
|
inspection_mark_dating_information_assignment_relation_module = import_module("98__r__importInspectionMarkDatingInformationAssignmentRelation")
|
|
inspection_mark_relation_relation_module = import_module("98__r__importInspectionMarkRelationRelation")
|
|
inspection_mark_to_literature_reference_relation_module = import_module("98__r__importInspectionMarkToLiteratureReferenceRelation")
|
|
literature_to_journal_relation_module = import_module("98__r__importLiteratureToJournalRelation")
|
|
literature_to_parent_publication_relation_module = import_module("98__r__importLiteratureToParentPublicationRelation")
|
|
mark_to_dating_relation_module = import_module("98__r__importMarkToDatingRelation")
|
|
mark_to_literature_relation_module = import_module("98__r__importMarkToLiteratureRelation")
|
|
mark_to_mark_information_relation_module = import_module("98__r__importMarkToMarkInformationRelation")
|
|
mark_to_source_relation_module = import_module("98__r__importMarkToSourceRelation")
|
|
source_to_date_relation_module = import_module("98__r__importSourceToDateRelation")
|
|
source_to_literature_reference_assignment_relation_module = import_module("98__r__importSourceToLiteratureReferenceAssignmentRelation")
|
|
|
|
# Initialize the database
|
|
print('Initializing the database...')
|
|
engine, metadata, Session = initDb(True, './schemas/')
|
|
if engine == False:
|
|
print('Database initialization failed.')
|
|
exit()
|
|
|
|
# Load the environment variables
|
|
load_dotenv()
|
|
|
|
# Initialize the WissKI API
|
|
print('Initializing the WissKI API...')
|
|
api_url = os.getenv('API_URL')
|
|
auth = (os.getenv('API_USERNAME'), os.getenv('API_PASSWORD'))
|
|
headers = {"Cache-Control": "no-cache"}
|
|
api = Api(api_url, auth, headers)
|
|
api.pathbuilders = ['default']
|
|
|
|
trials = 0
|
|
while trials < 3 :
|
|
trials += 1
|
|
try:
|
|
# Call the function from the imported module
|
|
material_module.importMaterialsAndTechnique(api, engine)
|
|
administrator_module.importAdministrator(api, engine)
|
|
administrator_status_module.importAdministratorStatus(api, engine)
|
|
source_module.importSource(api, engine)
|
|
artist_source_reference_assignment_module.importArtistSourceReferenceAssignment(api, engine)
|
|
marks_module.importMarks(api, engine)
|
|
source_reference_assignment_module.importSourceReferenceAssignment(api, engine)
|
|
artist_module.importArtist(api, engine)
|
|
literature_module.importLiterature(api, engine)
|
|
inspection_mark_module.importInspectionMark(api, engine)
|
|
journal_assignment_module.importJournalAssignment(api, engine)
|
|
literature_reference_assignment_module.importLiteratureReferenceAssignment(api, engine)
|
|
parent_literature_assignment_module.importParentLiteratureAssignment(api, engine)
|
|
inspection_mark_location_module.importInspectionMarkLocation(api, engine)
|
|
inspection_mark_relation_module.importInspectionMarkRelation(api, engine)
|
|
mark_dating_info_module.importMarkDatingInfo(api, engine)
|
|
birth_module.importBirth(api, engine)
|
|
death_module.importDeath(api, engine)
|
|
dating_module.importDating(api, engine)
|
|
goldsmith_relation_module.importGoldsmithRelation(api, engine)
|
|
client_module.importClient(api, engine)
|
|
mentioned_module.importMentioned(api, engine)
|
|
num_dating_module.importNumDating(api, engine)
|
|
origin_assignment_module.importOriginAssignment(api, engine)
|
|
workshops_module.importWorkshops(api, engine)
|
|
artifacts_module.importArtifacts(api, engine)
|
|
artifact_relation_module.importArtifactRelation(api, engine)
|
|
artist_assignment_module.importArtistAssignment(api, engine)
|
|
mark_information_module.importMarkInformation(api, engine)
|
|
photographer_module.importPhotographer(api, engine)
|
|
|
|
api.pathbuilders = ['relations']
|
|
artifact_to_artist_relation_module.importArtifactToArtistRelationRelation(api, engine)
|
|
artifact_to_client_assignment_relation_module.importArtifactToClientAssignmentRelation(api, engine)
|
|
artifact_to_inspection_mark_location_relation_module.importArtifactToInspectionMarkLocationRelation(api, engine)
|
|
artifact_to_literature_reference_assignment_relation_module.importArtifactToLiteratureReferenceAssignmentRelation(api, engine)
|
|
artifact_to_mark_information_assignment_relation_module.importArtifactToMarkInformationAssignmentRelation(api, engine)
|
|
artifact_to_material_relation_module.importArtifactToMaterialRelation(api, engine)
|
|
artifact_to_numerice_date_relation_module.importArtifactToNumericeDateRelation(api, engine)
|
|
artifact_to_photograph_relation_module.importArtifactToPhotographRelation(api, engine)
|
|
artifact_to_relation_relation_module.importArtifactToRelationRelation(api, engine)
|
|
artifact_to_source_relation_module.importArtifactToSourceRelation(api, engine)
|
|
artifact_to_status_administrator_relation_module.importArtifactToStatusAdministratorRelation(api, engine)
|
|
artist_to_birth_relation_module.importArtistToBirthRelation(api, engine)
|
|
artist_to_death_relation_module.importArtistToDeathRelation(api, engine)
|
|
artist_to_goldsmith_relation_module.importArtistToGoldsmithRelation(api, engine)
|
|
artist_to_literature_reference_relation_module.importArtistToLiteratureReferenceRelation(api, engine)
|
|
artist_to_mentioned_relation_module.importArtistToMentionedRelation(api, engine)
|
|
artist_to_origin_relation_module.importArtistToOriginRelation(api, engine)
|
|
artist_to_workshop_relation_module.importArtistToWorkshopRelation(api, engine)
|
|
inspection_mark_dating_information_assignment_relation_module.importInspectionMarkDatingInformationAssignmentRelation(api, engine)
|
|
inspection_mark_relation_relation_module.importInspectionMarkRelationRelation(api, engine)
|
|
inspection_mark_to_literature_reference_relation_module.importInspectionMarkToLiteratureReferenceRelation(api, engine)
|
|
literature_to_journal_relation_module.importLiteratureToJournalRelation(api, engine)
|
|
literature_to_parent_publication_relation_module.importLiteratureToParentPublicationRelation(api, engine)
|
|
mark_to_dating_relation_module.importMarkToDatingRelation(api, engine)
|
|
mark_to_literature_relation_module.importMarkToLiteratureRelation(api, engine)
|
|
mark_to_mark_information_relation_module.importMarkToMarkInformationRelation(api, engine)
|
|
mark_to_source_relation_module.importMarkToSourceRelation(api, engine)
|
|
source_to_date_relation_module.importSourceToDateRelation(api, engine)
|
|
source_to_literature_reference_assignment_relation_module.importSourceToLiteratureReferenceAssignmentRelation(api, engine)
|
|
except Exception as e:
|
|
print(f'Error: {e}')
|
|
print(f'Trial {trials} of 3 failed.')
|
|
print(f'Retrying in 10 seconds...')
|
|
sleep(10)
|
|
continue
|