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, )
@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)
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)
.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)
) # 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)