예제 #1
0
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
예제 #2
0
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
예제 #3
0
파일: source.py 프로젝트: dutch2005/hermes
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
예제 #4
0
class OperationLogiqueRechercheInteret(RechercheInteret):
    __tablename__ = 'operation_logique_recherche_interet'
    id = db.Column(db.Integer, db.ForeignKey('recherche_interet.id'), primary_key=True)

    operande = db.Column(db.Enum("AND", "NOT", 'XOR', 'OR'), nullable=False)
    sous_regles = db.relationship(RechercheInteret, secondary='lien_sous_regle_operation_logique', enable_typechecks=False, cascade="save-update, delete")

    __mapper_args__ = {
        'polymorphic_identity': str(RechercheInteret).replace('RechercheInteret', 'OperationLogiqueRechercheInteret'),
    }

    def __repr__(self):
        return _('<Opération sur Critère(s) {operande} "{nom}">').format(operande=self.operande, nom=self.designation)

    def transcription(self):
        """
        :rtype: hermes.detecteur.OperationLogiqueRechercheInteret
        """
        from hermes.detecteur import OperationLogiqueRechercheInteret as Critere

        kwargs = dict()

        for sous_regle in self.sous_regles:
            kwargs['ma_cond_{}'.format(sous_regle.id)] = sous_regle.transcription()

        kwargs['friendly_name'] = self.friendly_name

        return Critere(
            self.designation,
            self.operande,
            **kwargs
        )
예제 #5
0
파일: session.py 프로젝트: dutch2005/hermes
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)
예제 #6
0
class Configuration(db.Model):

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    designation = db.Column(db.String(255), nullable=False, unique=True)
    valeur = db.Column(db.Text(), nullable=False)

    createur_id = db.Column(db.ForeignKey('user.id', ondelete='SET NULL'),
                            nullable=True)
    createur = db.relationship(
        User, primaryjoin="User.id==Configuration.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==Configuration.responsable_derniere_modification_id")

    format = db.Column(db.Enum("JSON", 'YAML', 'AUTRE'), nullable=False)

    def __repr__(self):
        return '<Configuration \'{}\'>'.format(self.designation)

    def on_model_change(self, form, model, is_created):
        """

        :param form:
        :param Configuration model:
        :param bool is_created:
        :return:
        """
        if is_created is True:
            model.createur = current_user
            model.date_creation = datetime.now()

        model.date_modification = datetime.now()
        model.responsable_derniere_modification = current_user

        Session.charger_input(model.designation, model.valeur, model.format)
예제 #7
0
파일: session.py 프로젝트: dutch2005/hermes
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)
예제 #8
0
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')

    def __str__(self):
        return self.first_name + " " + self.last_name + " <" + self.email + ">"
예제 #9
0
파일: session.py 프로젝트: dutch2005/hermes
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')