You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
2.8 KiB
Python

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
Authors : Jean-Damien Généro
Affiliation : French National Center for Scientific Research (CNRS)
Assigned at the Centre de recherches historiques (CRH, UMR 8558)
Date : 2022-10-11
Update :
"""
import re
import typing as t
import peewee
from flask import url_for
from playhouse.sqlite_ext import FTS5Model, RowIDField, SearchField
from app.app import db
class BaseModel(peewee.Model):
class Meta:
database = db
# db = SqliteDatabase('actes_princiers.db')
# from app.app import db
class Institution(BaseModel):
id_institution = peewee.AutoField()
full_label = peewee.TextField()
inst_label = peewee.TextField()
art_inst = peewee.TextField()
inst_place = peewee.TextField()
inst_rank = peewee.TextField()
inst_type = peewee.TextField()
class Meta:
database = db
db_table = 'Institution'
class State(BaseModel):
id_state = peewee.AutoField()
state_label = peewee.TextField()
class Meta:
database = db
db_table = 'State'
class Production_place(BaseModel):
id_place = peewee.AutoField()
placename = peewee.TextField()
class Meta:
database = db
db_table = 'Production_place'
class Diplo_type(BaseModel):
id_diplo_type = peewee.AutoField()
diplo_label = peewee.TextField()
class Meta:
database = db
db_table = 'Diplo_type'
class Document(BaseModel):
id_document = peewee.AutoField()
inst_doc = peewee.ForeignKeyField(Institution, backref='documents')
collection_doc = peewee.TextField()
class Meta:
database = db
db_table = 'Document'
class Acte(BaseModel):
id_acte = peewee.AutoField()
numb_acte = peewee.TextField()
date_time = peewee.TextField() # YYYY-MM-DD
date = peewee.TextField() # verbose
prod_place_acte = peewee.ForeignKeyField(Production_place, backref='actes')
analysis = peewee.TextField()
doc_acte = peewee.ForeignKeyField(Document, backref='actes')
ref_acte = peewee.TextField() # cote
state_doc = peewee.ForeignKeyField(State, backref='actes')
diplo_type_acte = peewee.ForeignKeyField(Diplo_type, backref='actes')
class Meta:
database = db
db_table = 'Acte'
class Individual(BaseModel):
id_indiv = peewee.AutoField()
name_indiv = peewee.TextField()
role_indiv = 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')
class Meta:
database = db
db_table = 'Produced_by'