示例#1
0
class Entite(db.Model):
    __tablename__ = 'ann_entite'
    __mapper_args__ = {
        'polymorphic_identity': 'entite',
        'polymorphic_on': 'type_entite'
    }
    id = db.Column(db.Integer, primary_key=True)
    meta_update_date = db.Column(db.Date)
    meta_update_user = db.Column(db.Unicode(length=100))
    _nom = db.Column(db.Unicode(length=255))
    _label = db.Column('nom_complet', db.Unicode(length=255))
    type_entite = db.Column(db.Unicode(50))
    observations = db.Column(db.Unicode(length=1000))
    relations = db.relationship('Entite',
                                secondary='ann_relations',
                                primaryjoin=id == RelationEntite.id_parent,
                                secondaryjoin=id == RelationEntite.id_enfant,
                                join_depth=0,
                                backref='parents')

    @hybrid_property
    def label(self):
        return self._label

    @hybrid_property
    def nom(self):
        return self._nom

    @nom.setter
    def nom(self, val):
        self._nom = val
        self._label = val
示例#2
0
class User(db.Model):
    '''
    Représente un utilisateur
    '''
    __tablename__ = 'auth_utilisateur'
    id = db.Column(db.Integer, primary_key=True)
    login = db.Column(db.Unicode(length=100))
    _password = db.Column('password', db.Unicode(length=100))
    name = db.Column(db.Unicode(length=100))
    email = db.Column(db.Unicode(length=250))
    groups = db.relationship('Group',
                             secondary='auth_rel_user_group',
                             lazy='joined')

    @property
    def password(self):
        return self._password

    @password.setter
    def password(self, pwd):
        self._password = hashlib.sha256(pwd.encode('utf8')).hexdigest()

    def check_password(self, pwd):
        return self._password == hashlib.sha256(pwd.encode('utf8')).hexdigest()

    def to_json(self):
        return {
            'id': self.id,
            'login': self.login,
            'mail': self.email,
            'name': self.name,
            'groups': [grp.name for grp in self.groups]
        }
示例#3
0
class AgentDetail(Agent):
    __tablename__ = 'recr_agent_detail'
    id_agent = db.Column(
        db.Integer,
        db.ForeignKey('recr_agent.id'),
        primary_key=True)
    desc_mission = db.Column(db.UnicodeText)
    notif_list = db.Column(db.UnicodeText)
    type_contrat = db.Column(db.Integer)  # TH ref 14
    lieu = db.Column(db.Integer)  # TH ref 1
    logement = db.Column(db.Integer)  # TH ref 10
    categorie = db.Column(db.Integer)  # TH ref 38
    referent = db.Column(db.UnicodeText)
    gratification = db.Column(db.Integer)
    temps_travail = db.Column(db.Integer)  # TH ref 33
    temps_travail_autre = db.Column(db.Unicode(length=100))
    residence_administrative = db.Column(db.Unicode(length=100))
    convention_signee = db.Column(db.Boolean)
    bureau = db.Column(db.Unicode(length=50))
    observations = db.Column(db.UnicodeText)
    meta_create = db.Column(db.Date)
    meta_update = db.Column(db.Date)
    meta_createur_fiche = db.Column(db.Unicode(length=100))
    materiel = db.relationship(
        Thesaurus,
        secondary='recr_rel_agent_thesaurus_materiel',
        lazy='joined'
    )
    fichiers = db.relationship(
        Fichier,
        secondary='recr_rel_agent_fichier',
        lazy='joined'
    )
示例#4
0
class Agent(db.Model):
    __tablename__ = 'recr_agent'
    id = db.Column(db.Integer, primary_key=True)
    nom = db.Column(db.Unicode(length=100))
    prenom = db.Column(db.Unicode(length=100))
    intitule_poste = db.Column(db.Unicode(length=255))
    service_id = db.Column(db.Integer)  # TH ref 4
    arrivee = db.Column(db.Date)
    depart = db.Column(db.Date)
示例#5
0
class RefGeoBatiment(db.Model):
    """
    Bâtiments entretenus par le parc
    """
    __tablename__ = 'ref_geo_batiment'
    id = db.Column(db.Integer, primary_key=True)
    ref_commune = db.Column(db.Integer)
    reference = db.Column(db.Unicode(10))
    lieu_dit = db.Column(db.Unicode(255))
    designation = db.Column(db.Unicode(255))
示例#6
0
class Changelog(db.Model):
    __tablename__ = 'commons_changelog'
    id = db.Column(db.Integer, primary_key=True)
    module_name = db.Column(db.Unicode(length=50))
    model_name = db.Column(db.Unicode(length=50))
    entity_id = db.Column(db.Integer)
    author = db.Column(db.Unicode(length=100))
    change_type = db.Column(db.Integer)
    change_date = db.Column(db.Date)
    changes = db.Column(db.UnicodeText)
示例#7
0
class Equipement(db.Model):
    '''
    Mapping d'un équipement réseau
    '''
    __tablename__ = 'sup_equipement'
    id = db.Column(db.Integer, primary_key=True)
    ip_addr = db.Column(db.Unicode(length=20))
    label = db.Column(db.Unicode(length=50))
    equip_type = db.Column(db.Integer)
    status = db.Column(db.Integer)
    stats = db.Column(db.UnicodeText)
    last_up = db.Column(db.DateTime)
    commentaires = db.Column(db.UnicodeText)
    evts = db.relationship(EvtEquipement, lazy='joined', cascade='delete')
示例#8
0
class Materiel(db.Model):
    '''
    Matériel avec numéro d'inventaire
    '''
    __tablename__ = 'invent_materiel'
    id = db.Column(db.Integer, primary_key=True)
    type_mat = db.Column(db.Integer)
    label = db.Column(db.Unicode(length=100))
    reference = db.Column(db.Unicode(length=50))
    observations = db.Column(db.UnicodeText)
    date_entree = db.Column(db.Date)
    date_exclusion = db.Column(db.Date)
    etat = db.Column(db.Integer)
    disponible = db.Column(db.Integer)
    utilisateur_actuel = db.Column(db.Unicode(length=50))
    affectations = db.relationship(Affectation, backref="materiel")
示例#9
0
class RefGeoCommunes(db.Model):
    """
    Communes sur lesquelles le parc entretien des bâtiments
    """
    __tablename__ = 'ref_geo_commune'
    id = db.Column(db.Integer, primary_key=True)
    nom_commune = db.Column(db.Unicode(255))
示例#10
0
class TypeMateriel(db.Model):
    '''
    Thésaurus dynamique des différents types de matériel
    '''
    __tablename__ = 'invent_type_mat'
    id = db.Column(db.Integer, primary_key=True)
    label = db.Column(db.Unicode(length=100))
    observations = db.Column(db.UnicodeText)
示例#11
0
class Demande(db.Model):
    """
    Modele de fiche d'intervention
    """
    __tablename__ = 'intv_demande'
    id = db.Column(db.Integer, primary_key=True)
    num_intv = db.Column(db.Unicode(length=50))
    dem_date = db.Column(db.Date)
    dem_objet = db.Column(db.Integer)
    dem_localisation = db.Column(db.Integer)
    dem_loc_commune = db.Column(db.Unicode(length=100))
    dem_loc_libelle = db.Column(db.Unicode(length=100))
    dem_details = db.Column(db.UnicodeText)
    dem_delai = db.Column(db.Unicode(length=100))

    dmdr_service = db.Column(db.Integer)
    dmdr_contact_nom = db.Column(db.Unicode(length=100))
    dmdr_contact_email = db.Column(db.Unicode(length=255))

    plan_date = db.Column(db.Unicode(length=100))
    plan_commentaire = db.Column(db.UnicodeText)

    rea_date = db.Column(db.Date)
    rea_duree = db.Column(db.Integer)
    rea_nb_agents = db.Column(db.Integer)
    rea_commentaire = db.Column(db.UnicodeText)
    rea_annulation = db.Column(db.Integer)

    dem_fichiers = db.relationship(Fichier,
                                   secondary='intv_rel_demande_fichier',
                                   lazy='joined')

    rea_fichiers = db.relationship(Fichier,
                                   secondary='intv_rel_rea_fichier',
                                   lazy='joined')
示例#12
0
class Affectation(db.Model):
    '''
    Affectation ou emprunt
    '''
    __tablename__ = 'invent_affectation'
    id = db.Column(db.Integer, primary_key=True)
    id_materiel = db.Column(db.Integer, db.ForeignKey('invent_materiel.id'))
    # materiel = db.relationship(Materiel, backref="affectations")
    type_affectation = db.Column(db.Integer)
    utilisateur = db.Column(db.Unicode(50))
    date_affectation = db.Column(db.Date)
    date_retour = db.Column(db.Date)
    observations = db.Column(db.UnicodeText)
示例#13
0
class TravauxBatiment(db.Model):
    """
    Modele de fiche de travaux
    """
    __tablename__ = 'bati_travaux'
    id = db.Column(db.Integer, primary_key=True)
    dmdr_service = db.Column(db.Integer)
    dmdr_contact_nom = db.Column(db.Unicode(length=100))
    dmdr_contact_email = db.Column(db.Unicode(length=255))

    dem_date = db.Column(db.Date)
    dem_importance_travaux = db.Column(db.Integer)
    dem_type_travaux = db.Column(db.Integer)
    dem_description_travaux = db.Column(db.UnicodeText)
    dem_commune = db.Column(db.Integer)
    dem_designation = db.Column(db.Integer)

    plan_service = db.Column(db.Integer)
    plan_entreprise = db.Column(db.Unicode(255))
    plan_date = db.Column(db.Date)
    plan_commentaire = db.Column(db.UnicodeText)

    rea_date = db.Column(db.Date)
    rea_duree = db.Column(db.Integer)
    rea_commentaire = db.Column(db.UnicodeText)
    rea_annulation = db.Column(db.Integer)

    dem_fichiers = db.relationship(Fichier,
                                   secondary='bati_rel_travaux_fichier',
                                   lazy='joined')

    plan_fichiers = db.relationship(Fichier,
                                    secondary='bati_rel_plan_fichier',
                                    lazy='joined')

    rea_fichiers = db.relationship(Fichier,
                                   secondary='bati_rel_rea_fichier',
                                   lazy='joined')
示例#14
0
class Fichier(db.Model):
    __tablename__ = 'commons_fichier'
    id = db.Column(db.Integer, primary_key=True)
    filename = db.Column(db.Unicode(length=255))

    @property
    def file_uri(self):
        return '%s_%s' % (self.id, self.filename)

    def to_json(self):
        return {
            'id': self.id,
            'filename': self.filename,
            'file_uri': self.file_uri
        }
示例#15
0
class Group(db.Model):
    '''
    Représente un groupe de sécurité
    '''
    __tablename__ = 'auth_group'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Unicode(length=100))
    users = db.relationship('User', secondary='auth_rel_user_group')

    def to_json(self):
        return {
            'id': self.id,
            'name': self.name,
            'users': [user.id for user in self.users]
        }
示例#16
0
class AuthStatus(db.Model):
    '''
    Informations de session utilisateur
    '''
    __tablename__ = 'auth_status'
    user_id = db.Column(db.Integer, primary_key=True)
    token = db.Column(db.Unicode(length=100))
    expiration = db.Column(db.Date)
    userdata = db.Column(db.UnicodeText)

    def as_dict(self):
        return {
            'id': self.user_id,
            'token': self.token,
            'userdata': json.loads(self.userdata)
        }
示例#17
0
class Correspondant(Entite):
    __tablename__ = 'ann_correspondant'
    __mapper_args__ = {
        'polymorphic_identity': 'correspondant',
    }
    id_entite = db.Column(db.Integer,
                          db.ForeignKey('ann_entite.id'),
                          primary_key=True)
    civilite = db.Column(db.Unicode(length=50))
    _prenom = db.Column('prenom', db.Unicode(length=100))
    adresse = db.Column(db.Unicode(length=255))
    adresse2 = db.Column(db.Unicode(length=255))
    code_postal = db.Column(db.Unicode(length=50))
    telephone = db.Column(db.Unicode(length=20))
    mobile = db.Column(db.Unicode(length=20))
    email = db.Column(db.Unicode(length=255))
    fonction = db.Column(db.Unicode(length=100))

    @hybrid_property
    def label(self):
        return self._label

    @hybrid_property
    def nom(self):
        return self._nom

    @nom.setter
    def nom(self, val):
        self._nom = val
        self._label = '%s %s' % (val, self._prenom)

    @hybrid_property
    def prenom(self):
        return self._prenom

    @prenom.setter
    def prenom(self, val):
        self._prenom = val
        self._label = '%s %s' % (self.nom, val)
示例#18
0
class Commune(Entite):
    __tablename__ = 'ann_commune'
    __mapper_args__ = {
        'polymorphic_identity': 'commune',
    }
    id_entite = db.Column(db.Integer,
                          db.ForeignKey('ann_entite.id'),
                          primary_key=True)
    adresse = db.Column(db.Unicode(length=255))
    adresse2 = db.Column(db.Unicode(length=255))
    code_postal = db.Column(db.Unicode(length=50))
    telephone = db.Column(db.Unicode(length=20))
    email = db.Column(db.Unicode(length=255))
    site_internet = db.Column(db.Unicode(length=255))
示例#19
0
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, index=True)
    email = db.Column(db.Unicode(80), default="")
    password_hash = db.Column(db.LargeBinary)
    is_facebook = db.Column(db.Boolean, default=False)
    fb_id = db.Column(db.Unicode(100), default="", index=True)
    token_hash = db.Column(db.LargeBinary)
    number = db.Column(db.Integer, default=0)

    # Is facebook
    # Email
    # List of saved songs
    # Times user requested from server
    # More metadata (ask designer)

    def generate_token(self):
        s = URLSafeSerializer(os.environ['SIGNER_SECRET'])
        info = {
            'id': self.id,
            'time': time.time(),
            'email': self.email,
            'fb_id': self.fb_id,
        }
        token = s.dumps(info)
        self.token_hash = hashlib.md5(token.encode('utf-8')).hexdigest()
        return token

    def update_number(self, num):
        self.number = num
        db.session.commit()

    @staticmethod
    def add_user(args):
        user = User()

        for key, value in args.items():
            setattr(user, key, value)

        db.session.add(user)
        db.session.commit()
        return user

    @staticmethod
    def get_data(token):
        s = URLSafeSerializer(os.environ['SIGNER_SECRET'])
        try:
            return s.loads(token)
        except BadSignature:
            # Invalid token
            return None

    @staticmethod
    def verify_token(token):
        s = URLSafeSerializer(os.environ['SIGNER_SECRET'])
        data = get_data(token)
        if data is None:
            return None
        user = User.query.get(data['id'])
        # This block is for logging out other logged in devices (also possibly more secure)
        if hashlib.md5(token.encode('utf-8')).hexdigest() != user.token_hash:
            # Token is old (someone logged in again on another device)
            return None

        return user
示例#20
0
class Entreprise(Entite):
    __tablename__ = 'ann_entreprise'
    __mapper_args__ = {
        'polymorphic_identity': 'entreprise',
    }
    id_entite = db.Column(db.Integer,
                          db.ForeignKey('ann_entite.id'),
                          primary_key=True)
    nom_gerant = db.Column(db.Unicode(length=100))
    prenom_gerant = db.Column(db.Unicode(length=100))
    fonction_gerant = db.Column(db.Unicode(length=255))
    adresse = db.Column(db.Unicode(length=255))
    adresse2 = db.Column(db.Unicode(length=255))
    code_postal = db.Column(db.Unicode(length=50))
    telephone = db.Column(db.Unicode(length=20))
    telephone2 = db.Column(db.Unicode(length=20))
    email = db.Column(db.Unicode(length=255))
    alt_email = db.Column(db.Unicode(length=255))
    site_internet = db.Column(db.Unicode(length=255))
示例#21
0
class Chrono(db.Model):
    __tablename__ = 'commons_chrono'
    reference = db.Column(db.Unicode(length=50), primary_key=True)
    cur_id = db.Column(db.Integer)
示例#22
0
class Thesaurus(db.Model):
    __tablename__ = 'th_thesaurus'
    id = db.Column(db.Integer, primary_key=True)
    id_ref = db.Column(db.Integer)
    label = db.Column(db.Unicode(length=50))
    menu = db.Column(db.Integer)