Ejemplo n.º 1
0
class Role(base.PaginatedCollection, db.Model):
    """ Role table. References user """

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(10))
    description = db.Column(db.String(35))
    users = db.relationship('User', backref='role', lazy='dynamic')

    def __repr__(self):
        return '<Role id={}>'.format(self.name)

    def to_json(self):
        data = {
            'id': self.id,
            'name': self.name,
            'description': self.description,
            '_links': {
                'self': url_for('api.get_role', id=self.id),
                'users': url_for('api.get_role_users', id=self.id),
            }
        }

        return data

    def from_json(self, data):
        for field in ['id', 'name', 'description']:
            if field in data:
                setattr(self, field, data[field])
Ejemplo n.º 2
0
class Fleet(base.PaginatedCollection, db.Model):
    """ Fleet table. References fleet_pool and fleet_user """

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(35))
    cars = db.relationship('Fleet_Pool', backref='pool', lazy='dynamic')
    users = db.relationship('Fleet_User', backref='fleet', lazy='dynamic')

    def __repr__(self):
        return '<Fleet id={}, name={}>'.format(self.id, self.name)

    def to_json(self):
        data = {
            'id': self.id,
            'name': self.name,
            '_links': {
                'self': url_for('api.get_fleet', id=self.id),
                'cars': url_for('api.get_fleet_cars', id=self.id),
                'users': url_for('api.get_fleet_users', id=self.id)
            }
        }

        return data

    def from_json(self, data):
        for field in ['id', 'name']:
            if field in data:
                setattr(self, field, data[field])
Ejemplo n.º 3
0
class User(base.PaginatedCollection, db.Model):
    """ User table. References log, journey, address """

    id = db.Column(db.String(9), primary_key=True)
    first_name = db.Column(db.String(35))
    last_name = db.Column(db.String(35))
    email = db.Column(db.String(254))
    password = db.Column(db.String(64))
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'))
    status = db.Column(db.Boolean)
    logs = db.relationship('Log', backref='issuer', lazy='dynamic')
    fleets = db.relationship('Fleet_User', backref='users', lazy='dynamic')
    journeys = db.relationship('Journey', backref='driver', lazy='dynamic')
    addresses = db.relationship('Address', backref='creator', lazy='dynamic')

    def __repr__(self):
        return '<User id={}>'.format(self.id)

    def to_json(self):
        data = {
            'id': self.id,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'email': self.email,
            # Do not add hashed password to json representation
            #'password': self.password,
            'role_id': self.role_id,
            'status': self.status,
            '_links': {
                'self': url_for('api.get_user', id=self.id),
                'role': url_for('api.get_role', id=self.role_id),
                'fleets': url_for('api.get_user_fleets', id=self.id),
                'journeys': url_for('api.get_user_journeys', id=self.id),
                'addresses': url_for('api.get_user_addresses', id=self.id),
                'logs': url_for('api.get_user_logs', id=self.id)
            }
        }
        return data

    def from_json(self, data):
        for field in [
                'id', 'first_name', 'last_name', 'email', 'password',
                'role_id', 'status'
        ]:
            if field in data:
                setattr(self, field, data[field])
Ejemplo n.º 4
0
class Car(base.PaginatedCollection, db.Model):
    """ Car table. References journey, fleet_pool """

    id = db.Column(db.String(10), primary_key=True)
    brand = db.Column(db.String(35))
    model = db.Column(db.String(35))
    fuel = db.Column(db.String(10))
    vin = db.Column(db.String(17))
    owner = db.Column(db.String(35))
    mot = db.Column(db.Date)
    wheel = db.Column(db.String(10))
    status = db.Column(db.Boolean)
    fleets = db.relationship('Fleet_Pool', backref='cars', lazy='dynamic')
    journeys = db.relationship('Journey', backref='car', lazy='dynamic')

    def __repr__(self):
        return '<Car id={}>'.format(self.id)

    def to_json(self):
        data = {
            'id': self.id,
            'brand': self.brand,
            'model': self.model,
            'fuel': self.fuel,
            'vin': self.vin,
            'owner': self.owner,
            'mot': self.mot,
            'wheel': self.wheel,
            'status': self.status,
            '_links': {
                'self': url_for('api.get_car', id=self.id),
                'fleets': url_for('api.get_car_fleets', id=self.id),
                'journeys': url_for('api.get_car_journeys', id=self.id)
            }
        }

        return data

    def from_json(self, data):
        for field in [
                'id', 'brand', 'model', 'fuel', 'vin', 'owner', 'mot', 'wheel',
                'status'
        ]:
            if field in data:
                setattr(self, field, data[field])
Ejemplo n.º 5
0
class Address(base.PaginatedCollection, db.Model):
    """ Address table. References user """

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(35))
    group = db.Column(db.String(10))
    street = db.Column(db.String(35))
    number = db.Column(db.String(10))
    zipcode = db.Column(db.String(5))
    city = db.Column(db.String(35))
    user_id = db.Column(db.String(9), db.ForeignKey('user.id'))

    # TODO: Map all journeys which used this address

    def __repr__(self):
        return '<Address id={}>'.format(self.id)

    def to_json(self):
        data = {
            'id': self.id,
            'name': self.name,
            'group': self.group,
            'street': self.street,
            'number': self.number,
            'zipcode': self.zipcode,
            'city': self.city,
            '_links': {
                'self': url_for('api.get_address', id=self.id),
                'user': url_for('api.get_user', id=self.user_id)
            }
        }

        return data

    def from_json(self, data):
        for field in [
                'id', 'name', 'group', 'street', 'number', 'zipcode', 'city'
        ]:
            if field in data:
                setattr(self, field, data[field])
Ejemplo n.º 6
0
class Log(base.PaginatedCollection, db.Model):
    """ Log table. References user """

    timestamp = db.Column(db.DateTime, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    info = db.Column(db.String(255))

    def __repr__(self):
        return '<Log timestamp={}, user_id={}, info={}>'.format(
            self.timestamp, self.user_id, self.info)

    def to_json(self):
        data = {
            'timestamp': self.timestamp,
            'user_id': self.issuer.id,
            'info': self.info
        }

        return data

    def from_json(self, data):
        for field in ['timestamp', 'user_id', 'info']:
            if field in data:
                setattr(self, field, data[field])
Ejemplo n.º 7
0
class Journey(base.PaginatedCollection, db.Model):
    """ Journey table. References car, address, bill, user """

    id = db.Column(db.Integer, primary_key=True)
    car_id = db.Column(db.String(10), db.ForeignKey('car.id'))
    time_start = db.Column(db.DateTime)
    time_end = db.Column(db.DateTime)
    address_id_start = db.Column(db.Integer, db.ForeignKey('address.id'))
    address_id_end = db.Column(db.Integer, db.ForeignKey('address.id'))
    reason = db.Column(db.String(35))
    visited = db.Column(db.String(35))
    km_start = db.Column(db.Integer)
    km_business = db.Column(db.Integer)
    km_commute = db.Column(db.Integer)
    km_private = db.Column(db.Integer)
    km_end = db.Column(db.Integer)
    bill_id = db.Column(db.Integer, db.ForeignKey('bill.id'))
    bill = db.relationship('Bill', back_populates='journey')
    user_id = db.Column(db.String(9), db.ForeignKey('user.id'))

    def __repr__(self):
        return '<Journey id={}, car_id={}, user_id={}>'.format(
            self.id, self.car_id, self.user_id)

    def to_json(self):
        data = {
            'id': self.id,
            'car_id': self.car_id,
            'time_start': self.time_start,
            'time_end': self.time_end,
            'address_id_start': self.address_id_start,
            'address_id_end': self.address_id_end,
            'reason': self.reason,
            'visited': self.visited,
            'km_start': self.km_start,
            'km_business': self.km_business,
            'km_commute': self.km_commute,
            'km_private': self.km_private,
            'km_end': self.km_end,
            'bill_id': self.bill_id,
            'user_id': self.user_id,
            '_links': {
                'self':
                url_for('api.get_journey', id=self.id),
                'car':
                url_for('api.get_car', id=self.car_id),
                'address_start':
                url_for('api.get_address', id=self.address_id_start),
                'address_end':
                url_for('api.get_address', id=self.address_id_end),
                'bill':
                url_for('api.get_bill', id=self.bill_id),
                'user':
                url_for('api.get_user', id=self.user_id)
            }
        }

        return data

    def from_json(self, data):
        array = {
            'id', 'car_id', 'time_start', 'time_end', 'address_id_start',
            'address_id_end', 'reason', 'visited', 'km_start', 'km_business',
            'km_commute', 'km_private', 'km_end', 'bill_id', 'user_id'
        }

        for field in array:
            if field in data:
                setattr(self, field, data[field])