コード例 #1
0
class WaterVolume(Base):
    __lazy_options__ = {}
    __tablename__ = 'water_volume'

    id = Column(Integer, primary_key=True)
    datetime = Column(DateTime, auto_now=True, nullable=False)
    volume = Column(Integer, nullable=False)  # cL
コード例 #2
0
ファイル: models.py プロジェクト: thusoy/blag
class Tag(db.Model):
    id = Column(
        db.Integer,
        primary_key=True,
    )

    name = Column(db.String(30), nullable=False, info={'label': 'Name'})
コード例 #3
0
class Departement(db.Model, MarshalMixin, FilterOr404Mixin):
    id = Column(db.Integer, primary_key=True)
    nom = Column(db.String(255), label='Nom')
    numero = Column(db.String(3), label='Numero')

    def __str__(self):
        return '%s' % (self.numero)
コード例 #4
0
class CuboidTank(Tank):
    __tablename__ = 'cuboid_tank'
    __lazy_options__ = {}

    id = Column(Integer, ForeignKey('tank.id'), primary_key=True)
    length = Column(
        Integer,
        min=1,
        info={'label': 'Length (mm)'},
        nullable=False,
    )
    width = Column(
        Integer,
        min=1,
        info={'label': 'Width (mm)'},
        nullable=False,
    )
    height = Column(
        Integer,
        min=1,
        info={'label': 'Height (mm)'},
        nullable=False,
    )

    __mapper_args__ = {
        'polymorphic_identity': __tablename__,
    }

    is_cuboid = True

    @property
    def volume(self):
        return self.height * self.width * self.length
コード例 #5
0
        class User(self.Model):
            __tablename__ = 'user'
            __lazy_options__ = options

            id = Column(sa.Integer, primary_key=True)
            is_active = Column(sa.Boolean)
            nullable_boolean = Column(sa.Boolean, nullable=True)
            is_admin = Column(sa.Boolean, default=True)
コード例 #6
0
class Character(db.Model):
    id = Column(db.Integer, primary_key=True)
    name = Column(db.Unicode)

    actor_id = Column(db.Integer, db.ForeignKey('actor.id'))
    actor = db.relationship(
        'Actor',
        backref=db.backref('actors', lazy='dynamic'),
    )
    series_id = Column(db.Integer, db.ForeignKey('series.id'))
    series = db.relationship(
        'Series',
        backref=db.backref('characters', lazy='dynamic'),
    )
コード例 #7
0
class Tank(Base):
    __tablename__ = 'tank'

    id = Column(Integer, primary_key=True)
    type = Column(String(50))

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

    is_cuboid = False
    is_cylindric = False

    @property
    def volume(self):
        raise NotImplementedError()
コード例 #8
0
        class User(self.Model):
            __tablename__ = 'user'
            __lazy_options__ = options

            id = Column(Integer, primary_key=True)
            name = Column(Unicode(255))
            age = Column(Integer, info={'min': 13, 'max': 120}, default=16)
            is_active = Column(Boolean)
            is_admin = Column(Boolean, default=True)
            hobbies = Column(Unicode(255), default=u'football')
            favorite_hobbies = Column(Unicode(255),
                                      default=lambda ctx:
                                      (ctx.current_parameters['hobbies']
                                       if ctx.current_parameters['hobbies'] is
                                       not None else u'football'))
            favorite_buddy = Column(Unicode(255), default=u'Örrimörri')
            created_at = Column(sa.DateTime, info={'auto_now': True})
            description = Column(sa.UnicodeText)
コード例 #9
0
class ZUPC(db.Model, MarshalMixin, CacheableMixin):
    cache_label = 'zupc'
    query_class = query_callable()

    id = Column(db.Integer, primary_key=True)
    departement_id = Column(db.Integer, db.ForeignKey('departement.id'))
    nom = Column(db.String(255), label='Nom')
    insee = Column(db.String(), nullable=True)
    shape = Column(Geography(geometry_type='MULTIPOLYGON', srid=4326,
        spatial_index=False), label='Geography of the shape')
    departement = db.relationship('Departement',
            backref=db.backref('departements'), lazy='joined')
    parent_id = Column(db.Integer, db.ForeignKey('ZUPC.id'))
    parent = db.relationship('ZUPC', remote_side=[id], lazy='joined')
    active = Column(db.Boolean, default=False)
    __geom = None
    __preped_geom = None
    __bounds = None

    def __repr__(self):
        return '<ZUPC %r>' % str(self.id)

    def __str__(self):
        return self.nom

    @property
    def geom(self):
        if self.__geom is None:
            self.__geom = to_shape(self.shape)
        return self.__geom

    @property
    def preped_geom(self):
        if self.__preped_geom is None:
            self.__preped_geom = prep(self.geom)
        return self.__preped_geom

    @property
    def bounds(self):
        if not self.__bounds:
            self.__bounds = self.geom.bounds
        return self.__bounds

    @property
    def bottom(self):
        return self.bounds[1]

    @property
    def left(self):
        return self.bounds[0]

    @property
    def top(self):
        return self.bounds[3]

    @property
    def right(self):
        return self.bounds[2]
コード例 #10
0
class Constructor(db.Model, AsDictMixin, MarshalMixin):
    id = Column(db.Integer, primary_key=True)
    name = Column(db.String,
                  label=u'Dénomination commerciale de la marque',
                  description=u'Dénomination commerciale de la marque',
                  unique=True)

    def __init__(self, name=None):
        db.Model.__init__(self)
        if isinstance(name, self.__class__):
            self.name = name.name
        else:
            self.name = name

    def __repr__(self):
        return '<Constructor %r>' % unicode(self.name)

    def __eq__(self, other):
        return self.__repr__() == other.__repr__()

    def __ne__(self, other):
        return not self.__eq__(other)
コード例 #11
0
ファイル: models.py プロジェクト: thusoy/blag
class BlogPost(db.Model):
    __lazy_options__ = {}

    id = Column(
        db.Integer,
        primary_key=True,
    )

    title = Column(
        db.Text,
        info={'label': 'Title'},
    )

    slug = Column(
        db.Text,
        info={'label': 'Slug'},
        nullable=False,
    )

    rendered_content = Column(
        db.Text,
        nullable=False,
    )

    raw_content = Column(
        db.Text,
        info={'label': 'Article'},
        nullable=False,
    )

    datetime_added = Column(
        db.DateTime,
        server_default=func.now(),
        nullable=False,
    )

    tags = db.relationship('Tag',
                           secondary=tags,
                           backref=db.backref('posts', lazy='dynamic'))

    def render(self):
        self.rendered_content = render_blocks(
            json.loads(self.raw_content)['data'])

    def url(self, external=False):
        return url_for('blag.post_details',
                       year=self.year,
                       slug=self.slug,
                       _external=external)

    @property
    def year(self):
        return self.datetime_added.year
コード例 #12
0
class User(db.Model, UserMixin):
    """Flask-Security User model."""
    id = Column(db.Integer, primary_key=True)
    created = Column(db.DateTime, auto_now=True)
    email = Column(db.Unicode)
    password = Column(db.String(255))
    active = Column(db.Boolean, default=True, nullable=False)
    confirmed_at = Column(db.DateTime)
    roles = db.relationship(
        'Role',
        secondary=roles_users,
        backref=db.backref('users', lazy='dynamic'),
    )
コード例 #13
0
        class User(self.Model):
            __tablename__ = 'user'
            __lazy_options__ = options

            id = Column(sa.Integer, primary_key=True)
            name = Column(sa.Unicode(255))
            hobbies = Column(sa.Unicode(255), default=u'football')
            hobbies2 = Column(
                sa.Unicode(255), default=u'ice-hockey', server_default=u''
            )

            favorite_hobbies = Column(sa.Unicode(255), default=lambda ctx: (
                ctx.current_parameters['hobbies']
                if ctx.current_parameters['hobbies'] is not None
                else u'football'
            ))
            favorite_buddy = Column(sa.Unicode(255), default=u'Örrimörri')
            description = Column(sa.UnicodeText)
コード例 #14
0
class Config(Base):
    __tablename__ = 'config'
    __lazy_options__ = {}

    id = Column(Integer, primary_key=True)
    water_volume_max_delta = Column(
        Integer,
        min=0,
        info={'label': 'Water volume max delta (mm3)'},
        nullable=False,
    )
    min_water_volume = Column(
        Integer,
        min=0,
        info={'label': 'Min water volume (mm3)'},
        nullable=False,
    )
    max_water_volume = Column(
        Integer,
        min=0,
        info={'label': 'Max water volume (mm3)'},
        nullable=False,
    )
    well_filling_delay = Column(
        Integer,
        min=0,
        info={'label': 'Well filling delay (s)'},
        nullable=False,
    )
    min_flow_in = Column(
        Integer,
        min=0,
        info={'label': 'Min flow in (mm3/s)'},
        nullable=False,
    )
    tank = relationship(Tank, lazy='subquery')
    tank_id = Column(
        Integer,
        ForeignKey('{}.id'.format(Tank.__tablename__)),
        info={'label': 'Tank'},
        nullable=False,
    )
コード例 #15
0
ファイル: taxis.py プロジェクト: odtvince/APITaxi_models
class Driver(HistoryMixin, db.Model, AsDictMixin, FilterOr404Mixin):
    @declared_attr
    def added_by(cls):
        return Column(db.Integer, db.ForeignKey('user.id'))

    def __init__(self):
        db.Model.__init__(self)
        HistoryMixin.__init__(self)

    id = Column(db.Integer, primary_key=True)
    last_name = Column(db.String(255),
                       label='Nom',
                       description=u'Nom du conducteur')
    first_name = Column(db.String(255),
                        label=u'Prénom',
                        description=u'Prénom du conducteur')
    birth_date = Column(
        db.Date(),
        label=u'Date de naissance (format année-mois-jour)',
        description=u'Date de naissance (format année-mois-jour)')
    professional_licence = Column(
        db.String(),
        label=u'Numéro de la carte professionnelle',
        description=u'Numéro de la carte professionnelle')

    departement_id = Column(db.Integer,
                            db.ForeignKey('departement.id'),
                            nullable=True)
    departement = db.relationship('Departement',
                                  backref='vehicle',
                                  lazy="joined")

    @classmethod
    def can_be_listed_by(cls, user):
        return super(Driver,
                     cls).can_be_listed_by(user) or user.has_role('prefecture')

    def __eq__(self, other):
        return self.__repr__() == other.__repr__()

    def __ne__(self, other):
        return not self.__eq__(other)

    def __repr__(self):
        return '<drivers %r>' % unicode(self.id)
コード例 #16
0
ファイル: models.py プロジェクト: thusoy/blag
class Hike(db.Model):
    __lazy_options__ = {}
    METHODS = [
        ('ski', 'Ski'),
        ('foot', 'Foot'),
        ('crampons', 'Crampons'),
        ('climb', 'Climb'),
        ('via ferrata', 'Via Ferrata'),
        ('bike', 'Bike'),
        ('kayak', 'Kayak'),
    ]
    id = Column(db.Integer, primary_key=True)
    destination_id = Column(db.Integer,
                            db.ForeignKey(HikeDestination.id),
                            nullable=False)
    destination = db.relationship(HikeDestination, backref=db.backref('hikes'))
    date = Column(db.Date, nullable=True, server_default=func.now())
    method = Column(ChoiceType(METHODS), nullable=False)
    notes = Column(db.Text, nullable=False, server_default='')
    created_at = Column(db.DateTime, nullable=False, server_default=func.now())
    __table_args__ = (CheckConstraint("method in (%s)" %
                                      ','.join("'%s'" % method[0]
                                               for method in METHODS)), )
コード例 #17
0
ファイル: models.py プロジェクト: thusoy/blag
class HikeDestination(db.Model):
    id = Column(db.Integer, primary_key=True)
    name = Column(db.String(100), nullable=False)
    altitude = Column(db.Integer, nullable=True)  # TODO: Require if is_summit
    high_point_coord = Column(
        Geometry('POINT'),
        nullable=False,
        info={
            'form_field_class': TextField,
            # 'validators': CoordinateValidator(), # TODO: Ensure input is validated and casted to something understandable by PostGIS
        })  # TODO: Require if summit
    is_summit = Column(db.Boolean, nullable=False, server_default='t')
    created_at = Column(db.DateTime, nullable=False, server_default=func.now())

    def to_json(self):
        geojson = json.loads(
            db.session.scalar(self.high_point_coord.ST_AsGeoJSON()))
        return {
            'name': self.name,
            'coordinates': geojson['coordinates'],
        }

    def __str__(self):
        return '%s (%d)' % (self.name, self.altitude)
コード例 #18
0
class VehicleDescription(HistoryMixin, CacheableMixin, db.Model, AsDictMixin):
    @declared_attr
    def added_by(cls):
        return Column(db.Integer, db.ForeignKey('user.id'))

    cache_label = 'taxis'
    query_class = query_callable()

    def __init__(self, vehicle_id, added_by):
        db.Model.__init__(self)
        HistoryMixin.__init__(self)
        self.vehicle_id = vehicle_id
        self.added_by = added_by

    id = Column(db.Integer, primary_key=True)
    model_id = Column(db.Integer, db.ForeignKey("model.id"))
    __model = db.relationship('Model', lazy='joined')
    constructor_id = Column(db.Integer, db.ForeignKey("constructor.id"))
    __constructor = db.relationship('Constructor', lazy='joined')
    model_year = Column(db.Integer,
                        label=u'Année',
                        nullable=True,
                        description=u'Année de mise en production du véhicule')
    engine = Column(db.String(80),
                    label=u'Motorisation',
                    nullable=True,
                    description=u'Motorisation du véhicule, champ P3')
    horse_power = Column(
        db.Float(),
        label=u'Puissance',
        nullable=True,
        description=u'Puissance du véhicule en chevaux fiscaux')
    relais = Column(db.Boolean,
                    label=u'Relais',
                    default=False,
                    nullable=True,
                    description=u'Est-ce un véhicule relais')
    horodateur = Column(db.String(255),
                        label=u'Horodateur',
                        nullable=True,
                        description=u'Modèle de l\'horodateur')
    taximetre = Column(db.String(255),
                       label=u'Taximètre',
                       nullable=True,
                       description=u'Modèle du taximètre')
    date_dernier_ct = Column(
        db.Date(),
        label=u'Date du dernier CT (format année-mois-jour)',
        description=u'Date du dernier contrôle technique')
    date_validite_ct = Column(
        db.Date(),
        label=u'Date de la fin de validité du CT (format année-mois-jour)',
        description=u'Date de fin de validité du contrôle technique')
    special_need_vehicle = Column(
        db.Boolean,
        name='special_need_vehicle',
        label=u'Véhicule spécialement aménagé pour PMR ',
        nullable=True)
    type_ = Column(Enum('sedan',
                        'mpv',
                        'station_wagon',
                        'normal',
                        name='vehicle_type_enum'),
                   label='Type',
                   nullable=True)
    luxury = Column(db.Boolean, name='luxury', label='Luxe ?', nullable=True)
    credit_card_accepted = Column(db.Boolean,
                                  name='credit_card_accepted',
                                  label=u'Carte bancaire acceptée ?',
                                  nullable=True)
    nfc_cc_accepted = Column(
        db.Boolean,
        name='nfc_cc_accepted',
        label=u'Paiement sans contact sur carte bancaire accepté ?',
        nullable=True)
    amex_accepted = Column(db.Boolean,
                           name='amex_accepted',
                           label=u'AMEX acceptée ?',
                           nullable=True)
    bank_check_accepted = Column(db.Boolean,
                                 name='bank_check_accepted',
                                 label=u'Chèque bancaire accepté ?',
                                 nullable=True)
    fresh_drink = Column(db.Boolean,
                         name='fresh_drink',
                         label=u'Boisson fraiche ?',
                         nullable=True)
    dvd_player = Column(db.Boolean,
                        name='dvd_player',
                        label='Lecteur DVD ?',
                        nullable=True)
    tablet = Column(db.Boolean,
                    name='tablet',
                    label='Tablette ?',
                    nullable=True)
    wifi = Column(db.Boolean,
                  name='wifi',
                  label=u'Wifi à bord ?',
                  nullable=True)
    baby_seat = Column(db.Boolean,
                       name='baby_seat',
                       label=u'Siège bébé ?',
                       nullable=True)
    bike_accepted = Column(db.Boolean,
                           name='bike_accepted',
                           label=u'Transport de vélo',
                           nullable=True)
    pet_accepted = Column(db.Boolean,
                          name='pet_accepted',
                          label=u'Animaux de compagnie acceptés ?',
                          nullable=True)
    air_con = Column(db.Boolean,
                     name='air_con',
                     label=u'Véhicule climatisé',
                     nullable=True)
    electronic_toll = Column(db.Boolean,
                             name='electronic_toll',
                             label=u'Véhicule équipé du télépéage',
                             nullable=True)
    gps = Column(db.Boolean,
                 name='gps',
                 label=u'Véhicule équipé d\'un GPS',
                 nullable=True)
    cpam_conventionne = Column(db.Boolean,
                               name='cpam_conventionne',
                               label=u'Conventionné assurance maladie',
                               nullable=True)
    every_destination = Column(db.Boolean,
                               name='every_destination',
                               label=u'Toute destination',
                               nullable=True)
    color = Column(db.String(255),
                   name='color',
                   label='Couleur : ',
                   nullable=True)
    vehicle_id = Column(db.Integer, db.ForeignKey('vehicle.id'))
    UniqueConstraint('vehicle_id', 'added_by', name="uq_vehicle_description")
    _status = Column(Enum(*status_vehicle_description_enum,
                          name='status_taxi_enum'),
                     nullable=True,
                     default='free',
                     name='status')
    nb_seats = Column(
        db.Integer,
        name='nb_seats',
        description=u'Nombre de places assises disponibles pour les voyageurs',
        label=u'Nombre de places')
    __table_args__ = (db.UniqueConstraint('vehicle_id',
                                          'added_by',
                                          name="_uq_vehicle_description"), )

    @property
    def status(self):
        return self._status

    @status.setter
    def status(self, value):
        assert value is None or value == 'None' or value in status_vehicle_description_enum,\
                '{} is not a valid status, (valid statuses are {})'\
                    .format(value, status_vehicle_description_enum)
        self._status = value
        from .taxis import Taxi
        operator = User.query.get(self.added_by)
        for t in Taxi.query.join(Taxi.vehicle,
                                 aliased=True).filter_by(id=self.vehicle_id):
            t.set_avaibility(operator.email, self._status)

    @classmethod
    def to_exclude(cls):
        return list(HistoryMixin.to_exclude()) + ['status']

    @property
    def constructor(self):
        return self.__constructor.name

    @constructor.setter
    def constructor(self, name):
        self.__constructor = Constructor(name)

    @property
    def model(self):
        return self.__model.name

    @model.setter
    def model(self, name):
        self.__model = Model(name)

    @property
    def characteristics(self):
        return VehicleDescription.get_characs(lambda o, f: getattr(o, f), self)

    @staticmethod
    def get_characs(getattr_, obj):
        fields = [
            'special_need_vehicle', 'every_destination', 'gps',
            'electronic_toll', 'air_con', 'pet_accepted', 'bike_accepted',
            'baby_seat', 'wifi', 'tablet', 'dvd_player', 'fresh_drink',
            'amex_accepted', 'bank_check_accepted', 'nfc_cc_accepted',
            'credit_card_accepted', 'luxury'
        ]
        return list(compress(fields, map(lambda f: getattr_(obj, f), fields)))
コード例 #19
0
class Vehicle(CacheableMixin, db.Model, AsDictMixin, MarshalMixin,
              FilterOr404Mixin):
    cache_label = 'taxis'
    query_class = query_callable()
    id = Column(db.Integer, primary_key=True)
    licence_plate = Column(db.String(80),
                           label=u'Immatriculation',
                           description=u'Immatriculation du véhicule',
                           unique=True)
    descriptions = db.relationship("VehicleDescription", lazy='joined')

    def __init__(self, licence_plate=None):
        if isinstance(licence_plate, self.__class__):
            self.licence_plate = licence_plate.licence_plate
        else:
            self.licence_plate

    @classmethod
    def marshall_obj(cls, show_all=False, filter_id=False, level=0, api=None):
        if level >= 2:
            return {}
        return_ = super(Vehicle, cls).marshall_obj(show_all,
                                                   filter_id,
                                                   level=level + 1,
                                                   api=api)
        dict_description = VehicleDescription.marshall_obj(show_all,
                                                           filter_id,
                                                           level=level + 1,
                                                           api=api)
        for k, v in dict_description.items():
            dict_description[k].attribute = 'description.{}'.format(k)
        return_.update(dict_description)
        return_.update({
            "model":
            fields.String(attribute="description.model"),
            "constructor":
            fields.String(attribute="description.constructor")
        })
        if not filter_id:
            return_["id"] = fields.Integer()
        return return_

    @property
    def description(self):
        return self.get_description()

    def get_description(self, user=None):
        if not user:
            user = current_user
        returned_description = None
        for description in self.descriptions:
            if description.added_by == user.id:
                returned_description = description
        return returned_description

    @property
    def model(self):
        return self.description.model if self.description else None

    @property
    def constructor(self):
        return self.description.constructor.name if self.description else None

    @property
    def model_year(self):
        return self.description.model_year if self.description else None

    @property
    def engine(self):
        return self.description.engine if self.description else None

    @property
    def horse_power(self):
        return self.description.horse_power if self.description else None

    @property
    def relais(self):
        return self.description.relais if self.description else None

    @property
    def horodateur(self):
        return self.description.horodateur if self.description else None

    @property
    def taximetre(self):
        return self.description.taximetre if self.description else None

    @property
    def date_dernier_ct(self):
        return self.description.date_dernier_ct if self.description else None

    @property
    def date_validite_ct(self):
        return self.description.date_validite_ct if self.description else None

    @property
    def type_(self):
        return self.description.type_ if self.description else None

    def __repr__(self):
        return '<Vehicle %r>' % unicode(self.id)

    def __eq__(self, other):
        return self.__repr__() == other.__repr__()

    def __ne__(self, other):
        return not self.__eq__(other)

    @classmethod
    def to_exclude(cls):
        columns = list(
            filter(lambda f: isinstance(getattr(HistoryMixin, f), Column),
                   HistoryMixin.__dict__.keys()))
        columns += ["Vehicle", "vehicle_taxi", "descriptions"]
        return columns
コード例 #20
0
class Series(db.Model):
    id = Column(db.Integer, primary_key=True)
    name = Column(db.Unicode)
    debut_year = Column(db.Integer, min=1936)  # min = first broadcast date
コード例 #21
0
 class Article(self.Model):
     __tablename__ = 'article'
     __lazy_options__ = options
     id = Column(sa.Integer, primary_key=True)
     name = Column(sa.Unicode(255))
     author_id = Column(sa.Integer, sa.ForeignKey(User.id))
コード例 #22
0
ファイル: models.py プロジェクト: thusoy/blag
from sqlalchemy_defaults import Column
from sqlalchemy_utils import ChoiceType
from sqlalchemy import func, CheckConstraint
from wtforms_alchemy import model_form_factory, ModelFieldList
from wtforms import FormField, HiddenField, TextField

import ujson as json


class ModelForm(model_form_factory(Form)):
    pass


tags = db.Table(
    'tags',
    Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
    Column('post_id', db.Integer, db.ForeignKey('blog_post.id')),
)


class Tag(db.Model):
    id = Column(
        db.Integer,
        primary_key=True,
    )

    name = Column(db.String(30), nullable=False, info={'label': 'Name'})


class TagForm(ModelForm):
    class Meta(object):
コード例 #23
0
ファイル: taxis.py プロジェクト: odtvince/APITaxi_models
class ADS(HistoryMixin, db.Model, AsDictMixin, FilterOr404Mixin):
    @declared_attr
    def added_by(cls):
        return Column(db.Integer, db.ForeignKey('user.id'))

    def __init__(self, licence_plate=None):
        db.Model.__init__(self)
        HistoryMixin.__init__(self)
        if licence_plate:
            self.vehicle = licence_plate

    public_fields = set(['numero', 'insee'])
    id = Column(db.Integer, primary_key=True)
    numero = Column(db.String,
                    label=u'Numéro',
                    description=u'Numéro de l\'ADS')
    doublage = Column(db.Boolean,
                      label=u'Doublage',
                      default=False,
                      nullable=True,
                      description=u'L\'ADS est elle doublée ?')
    insee = Column(db.String,
                   label=u'Code INSEE de la commune d\'attribution',
                   description=u'Code INSEE de la commune d\'attribution')
    vehicle_id = db.Column(db.Integer,
                           db.ForeignKey('vehicle.id'),
                           nullable=True)
    _vehicle = db.relationship('Vehicle', lazy='joined')
    owner_type = Column(Enum(*owner_type_enum, name='owner_type_enum'),
                        label=u'Type Propriétaire')
    owner_name = Column(db.String, label=u'Nom du propriétaire')
    category = Column(db.String, label=u'Catégorie de l\'ADS')
    zupc_id = db.Column(db.Integer, db.ForeignKey('ZUPC.id'), nullable=True)

    @property
    def zupc(self):
        return ZUPC.cache.get(self.zupc_id)

    @validates('owner_type')
    def validate_owner_type(self, key, value):
        assert value in owner_type_enum
        return value

    @classmethod
    def can_be_listed_by(cls, user):
        return super(ADS,
                     cls).can_be_listed_by(user) or user.has_role('prefecture')

    @classmethod
    def marshall_obj(cls, show_all=False, filter_id=False, level=0, api=None):
        if level >= 2:
            return {}
        return_ = super(ADS, cls).marshall_obj(show_all,
                                               filter_id,
                                               level=level + 1,
                                               api=api)
        return_['vehicle_id'] = fields.Integer()
        return return_

    @property
    def vehicle(self):
        return vehicle.Vehicle.query.get(self.vehicle_id)

    @vehicle.setter
    def vehicle(self, vehicle):
        if isinstance(vehicle, string_types):
            self.__vehicle = Vehicle(vehicle)
        else:
            self.__vehicle = Vehicle(vehicle.licence_plate)

    def __repr__(self):
        return '<ADS %r>' % unicode(self.id)

    def __eq__(self, other):
        return self.__repr__() == other.__repr__()

    def __ne__(self, other):
        return not self.__eq__(other)
コード例 #24
0
class Actor(db.Model):
    id = Column(db.Integer, primary_key=True)
    name = Column(db.Unicode)
コード例 #25
0
ファイル: digital_state.py プロジェクト: tartopum/wello
class DigitalState:
    __lazy_options__ = {}

    id = Column(Integer, primary_key=True)
    running = Column(Boolean, nullable=False)
    datetime = Column(DateTime, auto_now=True, nullable=False)
コード例 #26
0
ファイル: security.py プロジェクト: odtvince/APITaxi_models
class User(CacheableMixin, db.Model, UserMixin, MarshalMixin, FilterOr404Mixin,
           UserBase):
    cache_label = 'users'
    query_class = query_callable()
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    roles = db.relationship('Role',
                            secondary=roles_users,
                            lazy='joined',
                            query_class=query_callable())
    apikey = db.Column(db.String(36), nullable=False)
    hail_endpoint_production = Column(db.String,
                                      nullable=True,
                                      label=u'Hail endpoint production',
                                      description='Hail endpoint production')
    hail_endpoint_staging = Column(db.String,
                                   nullable=True,
                                   label=u'Hail endpoint staging',
                                   description='Hail endpoint staging')
    hail_endpoint_testing = Column(db.String,
                                   nullable=True,
                                   label=u'Hail endpoint testing',
                                   description='Hail endpoint testing')
    commercial_name = Column(db.String,
                             nullable=True,
                             label='Nom commercial',
                             description='Votre nom commercial')
    phone_number_customer = Column(
        db.String,
        nullable=True,
        label=u'Numéro de téléphone du service client',
        description=u'Numéro de téléphone de support pour les clients')
    phone_number_technical = Column(
        db.String,
        nullable=True,
        label=u'Numéro de téléphone du contact technique',
        description=u'Numéro de téléphone du contact technique')
    email_customer = Column(db.String,
                            nullable=True,
                            label=u'Email du service client',
                            description=u'Email de support pour les clients')
    email_technical = Column(db.String,
                             nullable=True,
                             label=u'Email du contact technique',
                             description=u'Email du contact technique')
    logos = db.relationship('Logo', backref="user", lazy='joined')
    operator_header_name = Column(
        db.String,
        nullable=True,
        label=u'Nom du header http pour l\'authentification',
        description=u"""Cet header sera envoyé lors de la communication
                de l'ODT vers votre serveur""")
    operator_api_key = Column(
        db.String,
        nullable=True,
        label=u'Valeur de la clé d\'api',
        description=u"""Valeur de la clé d'api envoyé par l'ODT
            à votre serveur pour l'authentification.""")

    def __init__(self, *args, **kwargs):
        kwargs['apikey'] = str(uuid.uuid4())
        kwargs['password'] = encrypt_password(kwargs['password'])
        kwargs['active'] = True
        super(self.__class__, self).__init__(*args, **kwargs)
コード例 #27
0
 def added_by(cls):
     return Column(db.Integer, db.ForeignKey('user.id'))
コード例 #28
0
ファイル: taxis.py プロジェクト: odtvince/APITaxi_models
class Taxi(CacheableMixin, db.Model, HistoryMixin, AsDictMixin, GetOr404Mixin,
           TaxiRedis):
    @declared_attr
    def added_by(cls):
        return Column(db.Integer, db.ForeignKey('user.id'))

    cache_label = 'taxis'
    query_class = query_callable()

    def __init__(self, *args, **kwargs):
        db.Model.__init__(self)
        HistoryMixin.__init__(self)
        kwargs['id'] = kwargs.get('id', None)
        if not kwargs['id']:
            kwargs['id'] = str(get_short_uuid())
        super(self.__class__, self).__init__(**kwargs)
        HistoryMixin.__init__(self)
        TaxiRedis.__init__(self, self.id)

    id = Column(db.String, primary_key=True)
    vehicle_id = db.Column(db.Integer,
                           db.ForeignKey('vehicle.id'),
                           nullable=True)
    vehicle = db.relationship('Vehicle', backref='vehicle_taxi', lazy='joined')
    ads_id = db.Column(db.Integer, db.ForeignKey('ADS.id'), nullable=True)
    ads = db.relationship('ADS', backref='ads', lazy='joined')
    driver_id = db.Column(db.Integer,
                          db.ForeignKey('driver.id'),
                          nullable=True)
    driver = db.relationship('Driver', backref='driver', lazy='joined')

    _ACTIVITY_TIMEOUT = 15 * 60  #Used for dash

    @property
    def rating(self):
        return 4.5

    @property
    def status(self):
        return self.vehicle.description.status

    @status.setter
    def status(self, status):
        self.vehicle.description.status = status
        self.last_update_at = datetime.now()

    def is_free(self, min_time=None):
        return self._is_free(self.vehicle.descriptions,
                             lambda desc: User.query.get(desc.added_by).email,
                             lambda desc: desc.status, min_time)

    def set_free(self):
        #For debugging purposes
        for desc in self.vehicle.descriptions:
            desc.status = 'free'

    @property
    def driver_professional_licence(self):
        return self.driver.professional_licence

    @property
    def vehicle_licence_plate(self):
        return self.vehicle.licence_plate

    @property
    def ads_numero(self):
        return self.ads.numero

    @property
    def driver_insee(self):
        return self.ads.insee

    @property
    def driver_departement(self):
        return self.driver.departement

    map_hail_status_taxi_status = {
        'emitted': 'free',
        'received': 'answering',
        'sent_to_operator': 'answering',
        'received_by_operator': 'answering',
        'received_by_taxi': 'answering',
        'accepted_by_taxi': 'answering',
        'accepted_by_customer': 'oncoming',
        'declined_by_taxi': 'free',
        'declined_by_customer': 'free',
        'incident_customer': 'free',
        'incident_taxi': 'free',
        'timeout_customer': 'free',
        'timeout_taxi': 'free',
        'outdated_customer': 'free',
        'outdated_taxi': 'free',
        'failure': 'free'
    }

    def synchronize_status_with_hail(self, hail):
        description = self.vehicle.get_description(hail.operateur)
        description.status = self.map_hail_status_taxi_status[hail.status]
        self.last_update_at = datetime.now()
        RawTaxi.flush(self.id)
コード例 #29
0
from flask.ext.security import RoleMixin, UserMixin
from sqlalchemy_defaults import Column

from .core import db

roles_users = db.Table(
    'roles_users',
    Column('user_id', db.Integer, db.ForeignKey('user.id')),
    Column('role_id', db.Integer, db.ForeignKey('role.id')),
)


class Role(db.Model, RoleMixin):
    """Flask-Security Role model."""
    id = Column(db.Integer, primary_key=True)
    created = Column(db.DateTime, auto_now=True)
    name = Column(db.Unicode, unique=True)
    description = Column(db.UnicodeText)


class User(db.Model, UserMixin):
    """Flask-Security User model."""
    id = Column(db.Integer, primary_key=True)
    created = Column(db.DateTime, auto_now=True)
    email = Column(db.Unicode)
    password = Column(db.String(255))
    active = Column(db.Boolean, default=True, nullable=False)
    confirmed_at = Column(db.DateTime)
    roles = db.relationship(
        'Role',
        secondary=roles_users,
コード例 #30
0
class Role(db.Model, RoleMixin):
    """Flask-Security Role model."""
    id = Column(db.Integer, primary_key=True)
    created = Column(db.DateTime, auto_now=True)
    name = Column(db.Unicode, unique=True)
    description = Column(db.UnicodeText)