Beispiel #1
0
class Agent(User):
    __tablename__ = 'agent'
    id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
    tel = db.Column(db.String(20))
    debut_contrat = db.Column(db.Date)
    # client = db.relationship('Clients', backref='client', lazy='dynamic')

    __mapper_args__ = {
        'polymorphic_identity': 'agent',
    }
Beispiel #2
0
class Client(User):
    __tablename__ = 'client'
    id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)
    tel = db.Column(db.String(20))
    adresse = db.Column(db.String(140))
    justificatif = db.Column(db.String(20))
    # id_agent = db.Column(db.String(50), db.ForeignKey('agent.id'))
    # compte = db.relationship('Comptes', backref='compte', lazy='dynamic')

    __mapper_args__ = {
        'polymorphic_identity': 'client',
    }
Beispiel #3
0
class Admin(User):
    __tablename__ = 'admin'
    id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True)

    __mapper_args__ = {
        'polymorphic_identity': 'admin',
    }
Beispiel #4
0
class Post(PaginatedAPIMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def to_dict(self):
        data = {
            'id': self.id,
            'body': self.body,
            'timestamp': self.timestamp,
            '_links': {
                'self': url_for('api.get_post', id=self.id),
                'user': url_for('api.get_user', id=self.user_id)
            }
        }
        return data

    def __repr__(self):
        return '<Post {}>'.format(self.body)
Beispiel #5
0
class DemandeCreacompte(db.Model):
    id_compte = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50))
    password = db.Column(db.String(120))
    nom = db.Column(db.String(50))
    prenom = db.Column(db.String(50))
    mail = db.Column(db.String(50))
    tel = db.Column(db.String(20))
    adresse = db.Column(db.String(140))
    justificatif = db.Column(db.String(20))
    affect = db.Column(db.String(50))
    valide = db.Column(db.Boolean)

    def __repr__(self):
        test = (self.id, self.username, self.password, self.nom, self.prenom,
                self.mail, self.tel, self.adresse, self.justificatif,
                self.valid, self.affect)
        return str(test)

    def affectation(self, agent):  # l'admin affect un client a un agent
        self.affect = agent
        db.session.commit(self)
        db.session.close()

    def validation(self, valide):  # L'agent valide le client
        self.valide = valide
        db.session.commit(self)
        db.session.close()

    def creation_compte_User(self):
        user = Client(
            username=self.username,
            password_hash=self.password,
            nom=self.nom,
            prenom=self.prenom,
            email=self.mail,
            tel=self.tel,
            adresse=self.adresse,
            justificatif=self.justificatif,
        )
        User.populate(user)

    @classmethod
    def add_demande(
        cls, formulaire
    ):  # Stocakge d'une demmande dans la base de donnee (table demande)
        demande = DemandeCreacompte(username=formulaire.username.data,
                                    nom=formulaire.nom.data,
                                    prenom=formulaire.prenom.data,
                                    password=User.password(
                                        formulaire.password.data),
                                    mail=formulaire.mail.data,
                                    tel=formulaire.tel.data,
                                    adresse=formulaire.adresse.data,
                                    justificatif=formulaire.justificatif.data)
        User.populate(demande)
Beispiel #6
0
class User(UserMixin, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50))
    password_hash = db.Column(db.String(150))
    nom = db.Column(db.String(50))
    prenom = db.Column(db.String(50))
    email = db.Column(db.String(50))
    type = db.Column(db.String(50))

    __mapper_args__ = {'polymorphic_identity': 'user', 'polymorphic_on': type}

    @classmethod
    def password(self, pwd):
        return generate_password_hash(pwd)

    def __repr__(self):
        return '<Utilisateur {}>'.format(self.username)

    @classmethod
    def populate(cls, *args):
        for user in args:
            db.session.add(user)
        db.session.commit()
        db.session.close()
        #TODO raise exeption

    @classmethod
    def verify_reset_password_token(self, token):
        try:
            password_check = jwt.decode(token,
                                        current_app.config['SECRET_KEY'],
                                        algorithms=['HS256'])
        except:
            flash("Erreur decodage tokken!!!!")
            return redirect(url_for('index'))
        finally:
            user = User.query.get(int(password_check['reset_password']))
            if password_check['password'] == user.password_hash:
                return (user)
            else:
                flash('token Déjà utilisé')

    def update(self):
        db.session.commit()
        db.session.close()

    def lister(self):
        liste = [
            self.type, self.id, self.username, self.nom, self.prenom,
            self.email
        ]
        print(liste)
        return liste

    def set_pwd(self, pwd):
        if not self.check_pwd(pwd):
            self.password_hash = generate_password_hash(pwd)
            return True
        else:
            flash(_('This password has allredy been used'))
            return False

    def check_pwd(self, pwd):
        return check_password_hash(self.password_hash, pwd)

    def get_reset_password_token(self, expires_in=600):
        return jwt.encode(
            {
                'reset_password': self.id,
                'password': self.password_hash,
                'exp': time() + expires_in
            },
            current_app.config['SECRET_KEY'],
            algorithm='HS256').decode('utf-8')
Beispiel #7
0
class User(PaginatedAPIMixin, UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(40), index=True, unique=True)
    email = db.Column(db.String(40), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    posts = db.relationship('Post', backref='author', lazy='dynamic')

    @classmethod
    def password(self, pwd):
        return generate_password_hash(pwd)

    def __repr__(self):
        return '<Utilisateur {}>'.format(self.username)

    @classmethod
    def populate(cls, *args):
        for user in args:
            db.session.add(user)
        db.session.commit()
        db.session.close()
        #TODO raise exeption

    def lister(self):
        liste = [self.id, self.username, self.email, self.password_hash]
        print(liste)
        return liste

    def set_pwd(self, pwd):
        if not self.check_pwd(pwd):
            self.password_hash = generate_password_hash(pwd)
            return True
        else:
            flash('mot de passe déja utiliser veulliez changer merci')
            return False

    def check_pwd(self, pwd):
        return check_password_hash(self.password_hash, pwd)

    def get_reset_password_token(self, expires_in=600):
        return jwt.encode(
            {
                'reset_password': self.id,
                'password': self.password_hash,
                'exp': time() + expires_in
            },
            current_app.config['SECRET_KEY'],
            algorithm='HS256').decode('utf-8')

    @classmethod
    def verify_reset_password_token(self, token):
        try:
            password_check = jwt.decode(token,
                                        current_app.config['SECRET_KEY'],
                                        algorithms=['HS256'])
        except:
            flash("Erreur decodage tokken!!!!")
            return redirect(url_for('index'))
        finally:
            user = User.query.get(int(password_check['reset_password']))
            if password_check['password'] == user.password_hash:
                return (user)
            else:
                flash('token Déjà utilisé')

    def to_dict(self, include_email=False):
        data = {
            'id': self.id,
            'username': self.username,
            'post_count': self.posts.count(),
            '_links': {
                'self': url_for('api.get_user', id=self.id),
                'posts': url_for('api.get_posts', id=self.id)
            }
        }
        if include_email:
            data['email'] = self.email
        return data

    def from_dict(self, data, new_user=False):
        for field in ['username', 'email']:
            if field in data:
                setattr(self, field, data[field])
            if new_user and 'password' in data:
                self.set_password(data['password'])