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