Example #1
0
import datetime

from flask_security import UserMixin
from sqlalchemy import ForeignKeyConstraint

from project.server.helpers.encrypter import encrypt_password
from project.server.managers.database import db
from project.server.models.auth_role import Role

roles_users = db.Table(
    'roles_users',
    db.Column('user_id', db.Integer(), db.ForeignKey('auth_users.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('auth_roles.id')),
)


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())
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 Inference(db.Model):
    """ Models Model for storing model related details """
    __tablename__ = "ai_inference"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    updated_on = db.Column(db.DateTime(), nullable=False)
    agent_id = db.Column(db.Integer,
                         db.ForeignKey('ai_agent.id'),
                         nullable=True)
    file_name = db.Column(db.String(255), nullable=False)
    file_path = db.Column(db.String(255), nullable=False)
    tag = db.Column(db.String(255), nullable=False)
    model_id = db.Column(db.Integer,
                         db.ForeignKey('ai_models.id'),
                         nullable=False)
    camera_id = db.Column(db.Integer,
                          db.ForeignKey('sys_camera.id'),
                          nullable=False)
    dataset = db.Column(db.String(255), nullable=True)
    confidence = db.Column(db.Float, nullable=False)
    label = db.Column(db.String(255), nullable=False)

    def __init__(self, updated_on, agent_id, file_name, file_path, tag,
                 model_id, camera_id, dataset, confidence, label):
        self.updated_on = updated_on
        self.agent_id = agent_id
        self.file_name = file_name
        self.file_path = file_path
        self.tag = tag
        self.model_id = model_id
        self.camera_id = camera_id
        self.dataset = dataset
        self.confidence = confidence
        self.label = label

    def from_json(self, json):
        self.id = json.get('inference_id', None)
        self.updated_on = json.get('updated_on', None)
        self.agent_id = json.get('agent_id', None)
        self.file_name = json.get('file_name', None)
        self.file_path = json.get('file_path', None)
        self.tag = json.get('tag', None)
        self.model_id = json.get('model_id', None)
        self.camera_id = json.get('camera_id', None)
        self.dataset = json.get('dataset', None)
        self.confidence = json.get('confidence', None)
        self.label = json.get('label', None)
        return self

    def to_dictionary(self):
        obj = {
            'id': self.id,
            'updated_on': self.updated_on,
            'agent_id': self.agent_id,
            'file_name': self.file_name,
            'file_path': self.file_path,
            'tag': self.tag,
            'model_id': self.model_id,
            'camera_id': self.camera_id,
            'dataset': self.dataset,
            'confidence': self.confidence,
            'label': self.label
        }
        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
Example #5
0
from datetime import datetime
from project.server.managers.database import db
from project.server.models.ai_models import Models
from project.server.models.ai_inference import Inference
from project.server.helpers.serialize import get_json_clean_response

ai_agent = db.Table(
    'ai_agent',
    db.Column('id',
              db.Integer(),
              primary_key=True,
              nullable=False,
              autoincrement=True),
    db.Column('camera_id', db.Integer(), db.ForeignKey('sys_camera.id')),
    db.Column('model_id', db.Integer(), db.ForeignKey('ai_models.id')),
    db.Column('environment', db.String(255), nullable=False),
    db.Column('user', db.String(255), nullable=True),
    db.Column('session', db.String(255), nullable=True),
    db.Column('project', db.String(255), nullable=True),
    db.Column('description', db.String(255), nullable=True),
    db.Column('inference', db.String(255), nullable=True))


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)