Example #1
0
class User(db.Model):
    """ User Model for storing user related details """
    __tablename__ = "auth_users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(255, collation='utf8_unicode_ci'), unique=True, nullable=False)
    email = db.Column(db.String(255), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    first_name = db.Column(db.String(255, collation='utf8_unicode_ci'), nullable=False)
    last_name = db.Column(db.String(255, collation='utf8_unicode_ci'), nullable=False)
    registered_on = db.Column(db.DateTime(), nullable=False)
    confirmed = db.Column(db.Boolean, nullable=False, default=False)
    confirmed_on = db.Column(db.DateTime, nullable=True)
    last_login_at = db.Column(db.DateTime())
    current_login_at = db.Column(db.DateTime())
    company = db.Column(db.String(255))
    title = db.Column(db.String(255))
    language = db.Column(db.String(255), nullable=False)
    admin_validation = db.Column(db.Boolean, nullable=False, default=False)
    location_id = db.Column(db.Integer, db.ForeignKey('auth_locations.id', ondelete='CASCADE'), nullable=True)
    roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'),
                            post_update=True)
    location = db.relationship(Location, primaryjoin=location_id == Location.id, post_update=True, uselist=False)

    def __init__(self, username, password, email, first_name, last_name, language='en', company=None,
                 title=None, confirmed=False, confirmed_on=None, admin_validation=False, roles='PENDING', location_id=1):
        self.username = username
        self.password = encrypt_password(password)
        self.email = email
        self.first_name = first_name
        self.last_name = last_name
        self.company = company
        self.title = title
        self.language = language
        self.registered_on = datetime.datetime.now()
        self.confirmed = confirmed
        self.confirmed_on = confirmed_on
        self.admin_validation = admin_validation
        self.location_id = location_id
        self.location = Location.query.filter_by(id=location_id).one()
        # role = Role.query.filter_by(name='ADMIN').one()
        self.roles = roles.query(roles).last()

        new_roles = []

        if roles is not None:
            if roles == 'ADMIN':
                role = Role.query.filter_by(name='ADMIN').one()
                new_roles.append(role)
            elif roles == 'ANNOTATOR':
                role = Role.query.filter_by(name='ANNOTATOR').one()
                new_roles.append(role)
            else:
                role = Role.query.filter_by(name='VIEWER').one()
                new_roles.append(role)
            self.roles = new_roles
        else:
            role = Role.query.filter_by(name='VIEWER').one()
            new_roles.append(role)
            self.roles = new_roles

    def from_partial_json(self, dictionary):
        super(User, self).from_partial_json(dictionary)
        if 'password' in dictionary:
            self.password = encrypt_password(dictionary.get('password'))
        self.registered_on = datetime.datetime.now()
        return self

    def from_json(self, json):
        self.id = json.get('user_id', None)
        self.email = json.get('email', None)
        self.password = json.get('password', None)
        self.first_name = json.get('first_name', None)
        self.last_name = json.get('last_name', None)
        self.roles = json.get('roles', None)
        return self

    def to_dictionary(self):
        obj = {
            'admin_validation': self.admin_validation,
            'user_id': self.id,
            'username': self.username,
            'email': self.email,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'last_login_at': self.last_login_at,
            'registered_on': self.registered_on,
            'confirmed': self.confirmed,
            'confirmed_on': self.confirmed_on,
            'company': self.company,
            'title': self.title,
            'language': self.language,
            'roles': [role.name for role in self.roles],
            'location': [get_json_clean_response(self.location)]
        }
        return obj
Example #2
0
class Image(db.Model):
    """ Image Model for storing image related details """
    __tablename__ = 'sys_image'

    id = db.Column(db.Integer,
                   primary_key=True,
                   nullable=False,
                   autoincrement=True)
    updated_on = db.Column(db.DateTime, nullable=True, default=datetime.now())
    image_path = db.Column(db.String(255), nullable=False)
    filename = db.Column(db.String(255), nullable=False)
    dataset_id = db.Column(db.Integer,
                           db.ForeignKey('ai_dataset.id',
                                         ondelete='CASCADE',
                                         onupdate="cascade"),
                           nullable=True)
    attributes_id = db.Column(db.Integer,
                              db.ForeignKey('ai_attribute.id',
                                            ondelete='CASCADE'),
                              nullable=True,
                              default=1)
    annotation_id = db.Column(db.Integer,
                              db.ForeignKey('ai_annotation.id',
                                            ondelete='CASCADE'),
                              nullable=True,
                              default=1)
    categories_id = db.Column(db.Integer,
                              db.ForeignKey('ai_category.id',
                                            ondelete='CASCADE'),
                              nullable=True,
                              default=1)
    annotation_path = db.Column(db.String(255), nullable=True, default='NULL')
    flagging = db.Column(db.String(255), nullable=True, default='NULL')
    license = db.Column(db.String(255), nullable=True, default='NULL')
    width = db.Column(db.Float, nullable=True, default='1')
    height = db.Column(db.Float, nullable=True, default='1')
    dataset = db.relationship(Dataset,
                              primaryjoin=dataset_id == Dataset.id,
                              post_update=True)
    attribute = db.relationship(Attribute,
                                primaryjoin=attributes_id == Attribute.id,
                                post_update=True)
    category = db.relationship(Category,
                               primaryjoin=categories_id == Category.id,
                               post_update=True)
    annotation = db.relationship(Annotation,
                                 primaryjoin=annotation_id == Annotation.id,
                                 post_update=True,
                                 uselist=True)

    def __init__(self,
                 updated_on,
                 image_path,
                 filename,
                 dataset_id,
                 attributes_id=None,
                 categories_id=None,
                 annotation_id=None):
        self.updated_on = updated_on
        self.image_path = image_path
        self.filename = filename
        if dataset_id is not None:
            self.dataset = Dataset.query.get_or_404(dataset_id)
        if attributes_id is not None:
            self.attribute = Attribute.query.get_or_404(attributes_id)
        if annotation_id is not None:
            self.annotation = Annotation.query.get_or_404(annotation_id)
        if categories_id is not None:
            self.category = Category.query.get_or_404(categories_id)

    def from_json(self, json):
        self.id = json.get('image_id', None)
        self.updated_on = json.get('updated_on', None)
        self.image_path = json.get('image_path', None)
        self.dataset = json.get('dataset', None)
        return self

    def to_dictionary(self):
        obj = {
            'image_id': self.id,
            'updated_on': self.updated_on,
            'image_path': self.image_path,
            'filename': self.filename,
            'dataset_id': self.dataset_id,
            # 'agent': [get_json_clean_response(self.agent)],
            'annotation': get_json_clean_response(self.annotation),
            'attributes': [get_json_clean_response(self.attribute)],
            'categories': [get_json_clean_response(self.category)]
        }
        return obj
Example #3
0
class User(db.Model):
    """ User Model for storing user related details """
    __tablename__ = "auth_users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(255), unique=True, nullable=False)
    email = db.Column(db.String(255), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    first_name = db.Column(db.String(255), nullable=False)
    last_name = db.Column(db.String(255), nullable=False)
    registered_on = db.Column(db.DateTime(), nullable=False)
    confirmed = db.Column(db.Boolean, nullable=False, default=False)
    confirmed_on = db.Column(db.DateTime, nullable=True)
    last_login_at = db.Column(db.DateTime())
    current_login_at = db.Column(db.DateTime())
    company = db.Column(db.String(255))
    title = db.Column(db.String(255))
    language = db.Column(db.String(255), nullable=False)
    roles = db.relationship('Role',
                            secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'),
                            post_update=True)

    def __init__(self,
                 username,
                 password,
                 email,
                 first_name,
                 last_name,
                 language='en',
                 company=None,
                 title=None,
                 admin=False,
                 confirmed=False,
                 confirmed_on=None):
        self.username = username
        self.password = encrypt_password(password)
        self.email = email
        self.first_name = first_name
        self.last_name = last_name
        self.company = company
        self.title = title
        self.language = language
        self.registered_on = datetime.datetime.now()
        self.confirmed = confirmed
        self.confirmed_on = confirmed_on

        if admin:
            role = Role.query.filter_by(name='ADMIN').one()
            self.roles.append(role)
        else:
            role = Role.query.filter_by(name='CUSTOMER').one()
            self.roles.append(role)

    def from_partial_json(self, dictionary):
        super(User, self).from_partial_json(dictionary)
        if 'password' in dictionary:
            self.password = encrypt_password(dictionary.get('password'))
        self.registered_on = datetime.datetime.now()
        return self

    def from_json(self, json):
        self.id = json.get('user_id', None)
        self.email = json.get('email', None)
        self.password = json.get('password', None)
        self.first_name = json.get('first_name', None)
        self.last_name = json.get('last_name', None)
        return self

    def to_dictionary(self):
        obj = {
            'user_id': self.id,
            'username': self.username,
            'email': self.email,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'registered_on': self.registered_on,
            'confirmed': self.confirmed,
            'confirmed_on': self.confirmed_on,
            'company': self.company,
            'title': self.title,
            'language': self.language,
            'roles': [role.name for role in self.roles],
        }
        return obj
Example #4
0
class Camera(db.Model):
    """ Camera Model for storing camera related details """
    __tablename__ = 'sys_camera'

    id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
    camera_id = db.Column(db.String(255), nullable=True)
    updated_on = db.Column(db.DateTime(), nullable=True)
    camera_type = db.Column(db.String(255), nullable=True)
    frame_rate = db.Column(db.String(255), nullable=True)
    resolution = db.Column(db.Float, nullable=True)
    color = db.Column(db.String(255), nullable=True)
    shutter_speed = db.Column(db.Boolean, nullable=True)
    exposure = db.Column(db.String(255), nullable=True)
    image_size_H = db.Column(db.Boolean, nullable=True)
    image_size_W = db.Column(db.String(255), nullable=True)
    image_size_C = db.Column(db.String(255), nullable=True)
    spot_name = db.Column(db.String(255), nullable=True)
    weight_file = db.Column(db.String(255), nullable=True)
    threshold = db.Column(db.String(255), nullable=True)
    orientation = db.Column(db.String(255), nullable=True)
    current_status = db.Column(db.Boolean, nullable=True)
    agent_id = db.Column(db.Integer, db.ForeignKey("ai_agent.id", ondelete='CASCADE'), nullable=True)
    models_id = db.Column(db.Integer, db.ForeignKey("ai_models.id", ondelete='CASCADE'), nullable=True)
    agent = db.relationship(Agent, primaryjoin=agent_id == Agent.id)
    model = db.relationship(Models, primaryjoin=models_id == Models.id)
    # inference_id = db.Column(db.Integer, db.ForeignKey("ai_inference.id"), nullable=True)
    # inference = db.relationship(Inference, primaryjoin=inference_id == Inference.id)


    def __init__(self, camera_id, updated_on, camera_type, frame_rate, resolution, color, shutter_speed, exposure,
                 image_size_H,
                 image_size_W, image_size_C, spot_name, weight_file, threshold, orientation):
        self.camera_id = camera_id
        self.updated_on = updated_on
        self.camera_type = camera_type
        self.frame_rate = frame_rate
        self.resolution = resolution
        self.color = color
        self.shutter_speed = shutter_speed
        self.exposure = exposure
        self.image_size_H = image_size_H
        self.image_size_W = image_size_W
        self.image_size_C = image_size_C
        self.spot_name = spot_name
        self.weight_file = weight_file
        self.threshold = threshold
        self.orientation = orientation
        self.model = Models.query.all()
        # self.inference = Inference.query.all()

    def from_json(self, json):
        self.camera_id = json.get('camera_id', None)
        self.updated_on = json.get('updated_on', None)
        self.camera_type = json.get('camera_type', None)
        self.frame_rate = json.get('frame_rate', None)
        self.resolution = json.get('resolution', None)
        self.color = json.get('color', None)
        self.shutter_speed = json.get('shutter_speed', None)
        self.exposure = json.get('exposure', None)
        self.image_size_H = json.get('image_size_H', None)
        self.image_size_W = json.get('image_size_W', None)
        self.image_size_C = json.get('image_size_C', None)
        self.spot_name = json.get('spot_name', None)
        self.weight_file = json.get('weight_file', None)
        self.threshold = json.get('threshold', None)
        self.orientation = json.get('orientation', None)

        return self

    def to_dictionary(self):
        obj = {
            'camera_id': self.camera_id,
            'updated_on': self.updated_on,
            'camera_type': self.camera_type,
            'frame_rate': self.frame_rate,
            'resolution': self.resolution,
            'color': self.color,
            'shutter_speed': self.shutter_speed,
            'exposure': self.exposure,
            'image_size_H': self.image_size_H,
            'image_size_W': self.image_size_W,
            'image_size_C': self.image_size_C,
            'weight_file': self.weight_file,
            'threshold': self.threshold,
            'orientation': self.orientation,
            'model': [get_json_clean_response(self.model)],
            # 'inference': [get_json_clean_response(self.inference)]
        }
        return obj