Exemple #1
0
    def speed(self):
        if self.distance is None or self.duration is None:
            return None

        return float(self.distance) / self.duration.total_seconds()

    @property
    def locations(self):
        return [
            Location(longitude=location[0], latitude=location[1])
            for location in to_shape(self._locations).coords
        ]

    @locations.setter
    def locations(self, locations):
        points = [
            "{} {}".format(location.longitude, location.latitude)
            for location in locations
        ]
        wkt = "LINESTRING({})".format(",".join(points))
        self._locations = WKTElement(wkt, srid=4326)


db.Index(
    "traces_contest_idx",
    Trace.flight_id,
    Trace.contest_type,
    Trace.trace_type,
    unique=True,
)
Exemple #2
0
    @property
    def speed(self):
        if self.distance is None or self.duration is None:
            return None

        return float(self.distance) / self.duration.total_seconds()

    @property
    def locations(self):
        return [
            Location(longitude=location[0], latitude=location[1])
            for location in to_shape(self._locations).coords
        ]

    @locations.setter
    def locations(self, locations):
        points = [
            '{} {}'.format(location.longitude, location.latitude)
            for location in locations
        ]
        wkt = "LINESTRING({})".format(','.join(points))
        self._locations = WKTElement(wkt, srid=4326)


db.Index('traces_contest_idx',
         Trace.flight_id,
         Trace.contest_type,
         Trace.trace_type,
         unique=True)
Exemple #3
0
    def get_largest_flights(self):
        """
        Returns a query with all flights by the user
        as pilot ordered by distance
        """
        from skylines.model.flight import Flight

        return Flight.get_largest().filter(Flight.pilot == self)

    ##############################

    def delete(self):
        from skylines.model.follower import Follower
        from skylines.model.igcfile import IGCFile

        for row in db.session.query(IGCFile).filter_by(owner_id=self.id):
            files.delete_file(row.filename)

        db.session.query(IGCFile).filter_by(owner_id=self.id).delete()

        db.session.query(Follower).filter_by(source_id=self.id).delete()
        db.session.query(Follower).filter_by(destination_id=self.id).delete()

        db.session.delete(self)


db.Index("users_lower_email_address_idx",
         db.func.lower(User.email_address),
         unique=True)
Exemple #4
0
            .filter(cls.time_visible <= datetime.utcnow()) \
            .filter(cls.location_wkt != None) \
            .subquery()

        # Create outer query that orders by time and
        # only selects the latest fix
        query = cls.query() \
            .options(db.joinedload(cls.pilot)) \
            .filter(cls.id == subq.c.id) \
            .filter(subq.c.row_number == 1) \
            .order_by(cls.time.desc())

        return query


db.Index('tracking_fixes_pilot_time', TrackingFix.pilot_id, TrackingFix.time)


class TrackingSession(db.Model):
    __tablename__ = 'tracking_sessions'

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

    pilot_id = db.Column(Integer,
                         db.ForeignKey('users.id', ondelete='CASCADE'),
                         nullable=False)
    pilot = db.relationship('User', innerjoin=True)

    lt24_id = db.Column(BigInteger, index=True)

    time_created = db.Column(DateTime, nullable=False, default=datetime.utcnow)
Exemple #5
0
        )

        # Create outer query that orders by time and
        # only selects the latest fix
        query = (
            cls.query()
            .options(db.joinedload(cls.pilot))
            .filter(cls.id == subq.c.id)
            .filter(subq.c.row_number == 1)
            .order_by(cls.time.desc())
        )

        return query


db.Index("tracking_fixes_pilot_time", TrackingFix.pilot_id, TrackingFix.time)


class TrackingSession(db.Model):
    __tablename__ = "tracking_sessions"

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

    pilot_id = db.Column(
        Integer, db.ForeignKey("users.id", ondelete="CASCADE"), nullable=False
    )
    pilot = db.relationship("User", innerjoin=True)

    lt24_id = db.Column(BigInteger, index=True)

    time_created = db.Column(DateTime, nullable=False, default=datetime.utcnow)