diff --git a/app/cmd/db.py b/app/cmd/db.py index 1e8f8e4..e01f479 100644 --- a/app/cmd/db.py +++ b/app/cmd/db.py @@ -9,12 +9,8 @@ from lxml import etree from tqdm import tqdm from app.app import APPPATH, db -from app.data_actes import diplomatic_type, institution, state -from app.modeles import Institution, State, Production_place, Diplo_type, Document, Acte, Individual, Duke, Produced_by - -# from app.data import institution -# from app.data import state -# from app.data import diplomatic_type +from app.data_actes import diplomatic_type, institution, state, houses +from app.modeles import Institution, State, House, Production_place, Diplo_type, Document, Acte, Individual, Produced_by db_cli = AppGroup("db") @@ -49,6 +45,11 @@ def _create_state(data_lst: list)-> None: for data in tqdm(data_lst, desc="Populating State..."): State.create(**data) +def _create_house(data_lst: list)-> None: + """create state table""" + for data in tqdm(data_lst, desc="Populating House..."): + House.create(**data) + def _create_diplo_type(data_lst: list)-> None: """create diplo type table""" for data in tqdm(data_lst, desc="Populating Diplo_type..."): @@ -158,7 +159,10 @@ def __indiv_infos(indiv_type): def _create_indiv(): actors = [*__indiv_infos("secret"), *__indiv_infos("prince")] - individuals = [{"name_indiv": actor[0], "role_indiv": actor[1]} + individuals = [{"name_indiv": actor[0], "role_indiv": actor[1], + "house_indiv": [t.id_house for t in House.select().where( + House.house_label == actor[2])][0], + "date1": actor[3], "date2": actor[4], "date3": actor[5]} for actor in actors] for data in tqdm(individuals, desc="Populating Individual..."): Individual.create(**data) @@ -187,11 +191,11 @@ def _create_produced_by(xml_file: str, folder: str): prince = duke.text.replace("\n", "") prince_q = [t.id_indiv for t in Individual.select().where( Individual.name_indiv == duke.text.replace("\n", ""))] - duke_q = [t.id_duke for t in Duke.select().where( - Duke.indiv_duke == prince_q[0])] - # print(prince, "==", prince_q[0], "==", duke_q[0]) + # duke_q = [t.id_duke for t in Duke.select().where( + # Duke.indiv_duke == prince_q[0])] + # print(prince, "==", prince_q[0]) princes_actes.append({"produced_by_acte": acte_q[0], - "produced_by_prince": duke_q[0]}) + "produced_by_prince": prince_q[0]}) for data in tqdm(princes_actes, desc="Populating Produced_by..."): Produced_by.create(**data) @@ -205,19 +209,18 @@ def init() -> None: "Bourbon", "Brb_5_Charles_Ier") print("Dropping existing DB...") - db.drop_tables([Institution, State, Production_place, - Diplo_type, Document, Acte, Individual, Duke, + db.drop_tables([Institution, State, House, Production_place, + Diplo_type, Document, Acte, Individual, Produced_by]) print("Re-creating schema...") - db.create_tables([Institution, State, Production_place, - Diplo_type, Document, Acte, Individual, Duke, - Produced_by]) + db.create_tables([Institution, State, House, Production_place, + Diplo_type, Document, Acte, Individual, Produced_by]) _create_institution(institution) _create_state(state) + _create_house(houses) _create_diplo_type(diplomatic_type) _create_produc_place(xml, xml_folder) _create_doc(xml, xml_folder) _create_acte(xml, xml_folder) _create_indiv() - _create_duke() _create_produced_by(xml, xml_folder) diff --git a/app/data_actes/__init__.py b/app/data_actes/__init__.py index 82c03bc..090f40b 100644 --- a/app/data_actes/__init__.py +++ b/app/data_actes/__init__.py @@ -1,5 +1,6 @@ from .diplo_type_data import diplomatic_type from .institution_data import institution from .state_data import state +from .house_data import houses -__all__ = ["diplomatic_type", "institution", "state"] +__all__ = ["diplomatic_type", "institution", "state", "houses"] diff --git a/app/modeles/__init__.py b/app/modeles/__init__.py index 81bbefa..3e31840 100644 --- a/app/modeles/__init__.py +++ b/app/modeles/__init__.py @@ -1,3 +1,3 @@ -from .data import Institution, State, Production_place, Diplo_type, Document, Acte, Individual, Duke, Produced_by +from .data import Institution, State, House, Production_place, Diplo_type, Document, Acte, Individual, Produced_by -__all__ = ["Institution", "State", "Production_place", "Diplo_type", "Document", "Acte", "Individual", "Duke", "Produced_by"] +__all__ = ["Institution", "State", "House", "Production_place", "Diplo_type", "Document", "Acte", "Individual", "Produced_by"] diff --git a/app/modeles/data.py b/app/modeles/data.py index e09f504..be04a65 100644 --- a/app/modeles/data.py +++ b/app/modeles/data.py @@ -46,6 +46,13 @@ class State(BaseModel): database = db db_table = 'State' +class House(BaseModel): + id_house = peewee.AutoField() + house_label = peewee.TextField() + + class Meta: + database = db + db_table = 'House' class Production_place(BaseModel): id_place = peewee.AutoField() @@ -95,27 +102,19 @@ class Individual(BaseModel): id_indiv = peewee.AutoField() name_indiv = peewee.TextField() role_indiv = peewee.TextField() + house_indiv = peewee.ForeignKeyField(House, backref='individuals') + date1 = peewee.TextField() + date2 = peewee.TextField() + date3 = peewee.TextField() class Meta: database = db db_table = 'Individual' -class Duke(BaseModel): - id_duke = peewee.AutoField() - house = peewee.TextField() - indiv_duke = peewee.ForeignKeyField(Individual, backref='dukes') - birth = peewee.TextField() - reign = peewee.TextField() - death = peewee.TextField() - - class Meta: - database = db - db_table = 'Duke' - class Produced_by(BaseModel): id_produced_by = peewee.AutoField() produced_by_acte = peewee.ForeignKeyField(Acte, backref='produced_bys') - produced_by_prince = peewee.ForeignKeyField(Duke, backref='produced_bys') + produced_by_prince = peewee.ForeignKeyField(Individual, backref='produced_bys') class Meta: database = db