class LienDetecteurRechercheInteret(db.Model): __tablename__ = 'lien_detecteur_recherche_interet' detecteur_id = db.Column(db.Integer(), db.ForeignKey('detecteur.id', ondelete='CASCADE'), primary_key=True) recherche_interet_id = db.Column(db.Integer(), db.ForeignKey('recherche_interet.id', ondelete='CASCADE'), primary_key=True)
class LienSousRegleOperationLogique(db.Model): __tablename__ = 'lien_sous_regle_operation_logique' operation_logique_recherche_interet_id = db.Column( db.Integer(), db.ForeignKey('operation_logique_recherche_interet.id', ondelete='CASCADE'), primary_key=True) recherche_interet_id = db.Column(db.Integer(), db.ForeignKey('recherche_interet.id', ondelete='CASCADE'), primary_key=True)
class Detecteur(db.Model): id = db.Column(db.Integer(), primary_key=True) designation = db.Column(db.String(255), nullable=False) regles = db.relationship("RechercheInteret", secondary='lien_detecteur_recherche_interet', lazy='joined', enable_typechecks=False, cascade="save-update, merge") # type: list[RechercheInteret] createur_id = db.Column(db.ForeignKey('user.id'), nullable=True) createur = db.relationship(User, primaryjoin="User.id==Detecteur.createur_id") date_creation = db.Column(db.DateTime(timezone=True), nullable=False, default=datetime.datetime.utcnow()) date_modification = db.Column(db.DateTime(timezone=True), nullable=False, default=datetime.datetime.utcnow()) responsable_derniere_modification_id = db.Column(db.ForeignKey('user.id'), nullable=True) responsable_derniere_modification = db.relationship(User, primaryjoin="User.id==Detecteur.responsable_derniere_modification_id") def __repr__(self): return _('<Détection DE \'{detecteur_nom}\'>').format(detecteur_nom=self.designation) def transcription(self): """ :rtype: hermes.detecteur.Detecteur """ from hermes.detecteur import Detecteur as HermesDetecteur mon_detecteur = HermesDetecteur( self.designation ) for regle in self.regles: mon_detecteur.je_veux( get_child_polymorphic(regle).transcription() ) return mon_detecteur
class ExpressionDansCleRechercheInteret(RechercheInteret): __tablename__ = 'expression_dans_cle_recherche_interet' id = db.Column(db.Integer(), db.ForeignKey('recherche_interet.id'), primary_key=True) cle_recherchee = db.Column(db.String(255), nullable=False) expression_recherchee = db.Column(db.String(255), nullable=False) __mapper_args__ = { 'polymorphic_identity': str(RechercheInteret).replace('RechercheInteret', 'ExpressionDansCleRechercheInteret'), } def __repr__(self): return _('<Recherche Exactement \'{expr}\' DANS Clé Auto-Découverte "{loc}">').format(expr=self.expression_recherchee, loc=self.cle_recherchee) def transcription(self): """ :rtype: hermes.detecteur.ExpressionDansCleRechercheInteret """ from hermes.detecteur import ExpressionDansCleRechercheInteret as Critere return Critere( self.designation, self.cle_recherchee, self.expression_recherchee, self.est_obligatoire, self.friendly_name )
class Role(admin_db.Model, RoleMixin): id = admin_db.Column(admin_db.Integer(), primary_key=True) name = admin_db.Column(admin_db.String(80), unique=True) description = admin_db.Column(admin_db.String(255)) def __str__(self): return self.name
class RechercheInteret(db.Model): __tablename__ = 'recherche_interet' id = db.Column(db.Integer(), primary_key=True) designation = db.Column(db.String(255), nullable=False) detecteurs = db.relationship(Detecteur, secondary='lien_detecteur_recherche_interet') est_obligatoire = db.Column(db.Boolean(), nullable=False) focus_cle = db.Column(db.String(255), nullable=True) createur_id = db.Column(db.ForeignKey('user.id'), nullable=True) createur = db.relationship( User, primaryjoin="User.id==RechercheInteret.createur_id") date_creation = db.Column(db.DateTime(timezone=True), nullable=False, default=datetime.datetime.utcnow()) date_modification = db.Column(db.DateTime(timezone=True), nullable=False, default=datetime.datetime.utcnow()) responsable_derniere_modification_id = db.Column(db.ForeignKey('user.id'), nullable=True) responsable_derniere_modification = db.relationship( User, primaryjoin= "User.id==RechercheInteret.responsable_derniere_modification_id") mapped_class_child = db.Column(db.String(128), nullable=True) friendly_name = db.Column(db.String(255), nullable=True) __mapper_args__ = { 'polymorphic_on': mapped_class_child, 'polymorphic_identity': str(Detecteur).replace('.Detecteur', '.RechercheInteret'), } def __repr__(self): return _('<Recherche DE \'{nom}\'>').format(nom=self.designation) def transcription(self): """ Transforme un critère "RechercheInteret < db.Model" en objet "RechercheInteret < hermes" :rtype: hermes.detecteur.RechercheInteret """ raise NotImplemented
class BoiteAuxLettresImap(db.Model): id = db.Column(db.Integer(), primary_key=True) designation = db.Column(db.String(255), nullable=False) activation = db.Column(db.Boolean(), default=False) hote_distante = db.Column(db.String(255), nullable=False) nom_utilisateur = db.Column(db.String(255), nullable=False) mot_de_passe = db.Column(db.String(255), nullable=False) dossier_cible = db.Column(db.String(255), nullable=False, default='INBOX') enable_tls = db.Column(db.Boolean(), nullable=False, default=True) verification_certificat = db.Column(db.Boolean(), nullable=False, default=True) legacy_tls_support = db.Column(db.Boolean(), nullable=False, default=False) createur_id = db.Column(db.ForeignKey('user.id', ondelete='SET NULL'), nullable=True) createur = db.relationship( User, primaryjoin="User.id==BoiteAuxLettresImap.createur_id") date_creation = db.Column(db.DateTime(timezone=True), nullable=False) date_modification = db.Column(db.DateTime(timezone=True), nullable=False) responsable_derniere_modification_id = db.Column(db.ForeignKey( 'user.id', ondelete='SET NULL'), nullable=True) responsable_derniere_modification = db.relationship( User, primaryjoin= "User.id==BoiteAuxLettresImap.responsable_derniere_modification_id") def get_mailtoolbox(self): """ :return: :rtype: MailToolbox """ existant = MailToolbox.fetch_instance(self.hote_distante, self.nom_utilisateur) if existant is None: return MailToolbox(self.hote_distante, self.nom_utilisateur, self.mot_de_passe, dossier_cible=self.dossier_cible, verify_peer=self.verification_certificat, use_secure_socket=self.enable_tls, legacy_secure_protocol=self.legacy_tls_support) return existant
class AutomateExecution(db.Model): id = db.Column(db.BigInteger(), primary_key=True, autoincrement=True) automate_id = db.Column(db.Integer(), db.ForeignKey(Automate.id, ondelete='CASCADE'), nullable=False) automate = db.relationship(Automate, cascade='all, save-update, delete, merge') sujet = db.Column(db.String(255), nullable=False) corps = db.Column(db.Text(), nullable=False) date_creation = db.Column(db.DateTime(timezone=True), nullable=False) detecteur_id = db.Column(db.Integer(), db.ForeignKey(Detecteur.id, ondelete='CASCADE'), nullable=False) detecteur = db.relationship(Detecteur, cascade='all, save-update, merge') validation_detecteur = db.Column(db.Boolean(), default=False, nullable=False) validation_automate = db.Column(db.Boolean(), default=False, nullable=False) explications_detecteur = db.Column(db.Text(), nullable=True) logs = db.Column(db.Text(), nullable=True) date_finalisation = db.Column(db.DateTime(timezone=True), nullable=False) actions_noeuds_executions = db.relationship('ActionNoeudExecution') recherches_interets_executions = db.relationship( 'RechercheInteretExecution')
class RechercheInteretExecution(db.Model): id = db.Column(db.BigInteger(), primary_key=True, autoincrement=True) automate_execution_id = db.Column(db.BigInteger(), db.ForeignKey(AutomateExecution.id), nullable=False) automate_execution = db.relationship(AutomateExecution) recherche_interet_id = db.Column(db.Integer(), db.ForeignKey(RechercheInteret.id)) recherche_interet = db.relationship(RechercheInteret) validation_recherche_interet = db.Column(db.Boolean(), default=False, nullable=False) payload = db.Column(db.Text(), nullable=True)
class ActionNoeudExecution(db.Model): id = db.Column(db.BigInteger(), primary_key=True, autoincrement=True) automate_execution_id = db.Column(db.BigInteger(), db.ForeignKey(AutomateExecution.id, ondelete='CASCADE'), nullable=False) automate_execution = db.relationship( AutomateExecution, cascade='all, save-update, delete, merge') action_noeud_id = db.Column( db.Integer(), db.ForeignKey(ActionNoeud.id, ondelete='CASCADE')) action_noeud = db.relationship(ActionNoeud) validation_action_noeud = db.Column(db.Boolean(), default=False, nullable=False) args_payload = db.Column(db.Text(), nullable=True) payload = db.Column(db.Text(), nullable=True)
from flask_security import RoleMixin, UserMixin from hermes_ui.db import db as admin_db roles_users = admin_db.Table( 'roles_users', admin_db.Column('user_id', admin_db.Integer(), admin_db.ForeignKey('user.id')), admin_db.Column('role_id', admin_db.Integer(), admin_db.ForeignKey('role.id'))) class Role(admin_db.Model, RoleMixin): id = admin_db.Column(admin_db.Integer(), primary_key=True) name = admin_db.Column(admin_db.String(80), unique=True) description = admin_db.Column(admin_db.String(255)) def __str__(self): return self.name class User(admin_db.Model, UserMixin): id = admin_db.Column(admin_db.Integer, primary_key=True) first_name = admin_db.Column(admin_db.String(255)) last_name = admin_db.Column(admin_db.String(255)) email = admin_db.Column(admin_db.String(255), unique=True, nullable=False) password = admin_db.Column(admin_db.String(255), nullable=False) active = admin_db.Column(admin_db.Boolean(), nullable=False) roles = admin_db.relationship('Role', secondary=roles_users, backref='users')