class Dataset(db.Model): __tablename__ = 'datasets' id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(100), nullable=False) number_of_rows = db.Column(db.Integer) filename = db.Column(db.String(40), nullable=False) latitude_attr = db.Column(db.String(50)) longitude_attr = db.Column(db.String(50)) attributes = db.relationship('Attribute', backref='dataset', cascade='all, delete-orphan') created_at = db.Column(db.DateTime, nullable=False) indexed_at = db.Column(db.DateTime) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) def __init__(self, title, filename, number_of_rows=None, latitude_attr=None, longitude_attr=None): self.title = title self.filename = filename self.number_of_rows = number_of_rows self.latitude_attr = latitude_attr self.longitude_attr = longitude_attr self.created_at = datetime.datetime.now() self.user_id = current_user.id def __repr__(self): return '<Dataset {}>'.format(self.filename)
class Session(db.Model): __tablename__ = 'sessions' id = db.Column(db.Integer, primary_key=True, autoincrement=True) created_at = db.Column(db.DateTime, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) dataset_id = db.Column(db.Integer, db.ForeignKey('datasets.id')) def __init__(self, dataset): self.user_id = current_user.id self.created_at = datetime.datetime.now(datetime.timezone.utc) self.dataset_id = dataset.id def __repr__(self): return '<Session {}>'.format(self.created_at)
class Attribute(db.Model): __tablename__ = 'attributes' id = db.Column(db.Integer, primary_key=True, autoincrement=True) description = db.Column(db.String(50), nullable=False) type = db.Column(ChoiceType(AttributeType, impl=db.Integer())) dataset_id = db.Column(db.Integer, db.ForeignKey('datasets.id'), nullable=False) visible = db.Column(db.Boolean, default=True) def __init__(self, description, type, dataset_id, visible=True): self.description = description self.type = type self.dataset_id = dataset_id self.visible = visible def __repr__(self): return '<Attribute {}>'.format(self.description)
class Polygon(db.Model): __tablename__ = 'polygons' id = db.Column(db.Integer, primary_key=True, autoincrement=True) geom = db.Column(Geometry('POLYGON')) created_at = db.Column(db.DateTime, nullable=False) session_id = db.Column(db.Integer, db.ForeignKey('sessions.id'), nullable=False) iteration = db.Column(db.Integer) profile = db.Column(JSON) def __init__(self, session_id, geom, iteration): self.geom = geom self.iteration = iteration self.session_id = session_id self.created_at = datetime.datetime.now(datetime.timezone.utc) def __repr__(self): return '<Polygon {}>'.format(self.id)