Exemple #1
0
class SimilaritiesModel(db.Model):
    __tablename__ = 'similarities'
    __table_args__ = (db.PrimaryKeyConstraint('id_1', 'id_2'), )

    id_1 = db.Column(db.VARCHAR(255), primary_key=True)
    id_2 = db.Column(db.VARCHAR(255), primary_key=True)
    jaccard = db.Column(db.FLOAT)
    dice = db.Column(db.FLOAT)
    cosine = db.Column(db.FLOAT)
    wmd = db.Column(db.FLOAT)
    duplicated = db.Column(db.BOOLEAN)

    def json(self):
        return {
            'id_1': self.parse_id(self.id_1),
            'id_2': self.parse_id(self.id_2),
            'jaccard': self.jaccard,
            'dice': self.dice,
            'consine': self.cosine,
            'wmd': self.wmd,
            'duplicated': self.duplicated
        }

    @staticmethod
    def filter(min_cosine, max_cosine, duplicated, user):
        # the user has already given his feedback on these pairs of trials
        existing_pairs = [
            x.json() for x in db.session.query(FeedbackModel).filter(
                FeedbackModel.creator == user).all()
        ]

        all_pairs = [
            x.json() for x in db.session.query(SimilaritiesModel).filter(
                SimilaritiesModel.cosine >= min_cosine).
            filter(SimilaritiesModel.cosine <= max_cosine).filter(
                SimilaritiesModel.duplicated == duplicated).limit(100).all()
        ]

        new_pairs = []
        for p in all_pairs:
            is_valid = True
            for ep in existing_pairs:
                if p['id_1'] == ep['id_1'] and p['id_2'] == ep['id_2']:
                    is_valid = False
                    break
            if is_valid:
                new_pairs.append(p)

        return new_pairs

    def parse_id(self, id_val):
        if 'CTRI' in id_val:
            return id_val.replace('-', '/')
        elif 'Outside-EU-EEA' in id_val:
            return id_val.replace('Outside-EU-EEA', 'Outside-EU/EEA')
        else:
            return id_val
Exemple #2
0
MovieJSON = Dict[str, Union[int, str, List[str]]]
"""
Create an association table for the many-to-many relation 
between movies and actors
"""
movies_actors = db.Table(
    "movies_actors",
    db.Column("movie_id",
              db.Integer,
              db.ForeignKey("movies.id"),
              nullable=False),
    db.Column("actor_id",
              db.Integer,
              db.ForeignKey("actors.id"),
              nullable=False),
    db.PrimaryKeyConstraint("movie_id", "actor_id"),
)


class MovieModel(db.Model, ModelMixin):
    """SQLAlchemy model for movies"""

    __tablename__ = "movies"

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(50), nullable=False)
    release_date = db.Column(db.Date, nullable=False)
    actors = db.relationship(
        ActorModel,
        secondary="movies_actors",
        lazy=True,
Exemple #3
0
from db import db
from models.member import MemberModel
from models.model_mixin import ModelMixin

projects_members = db.Table(
    "projects_members",
    db.Column("project_id",
              db.Integer,
              db.ForeignKey("projects.id"),
              nullable=False),
    db.Column("member_id",
              db.Integer,
              db.ForeignKey("members.id"),
              nullable=False),
    db.PrimaryKeyConstraint("project_id", "member_id"),
)


class ProjectModel(db.Model, ModelMixin):
    __tablename__ = "projects"

    id = db.Column(db.Integer, primary_key=True)
    start_date = db.Column(db.Date, nullable=False)
    end_date = db.Column(db.Date)
    title = db.Column(db.String(100), unique=True, nullable=False)
    description = db.Column(db.String(500), nullable=False)
    goals = db.Column(db.String(500), nullable=False)
    status = db.Column(db.String(50), nullable=False)
    admin_id = db.Column(db.Integer,
                         db.ForeignKey("members.id"),
Exemple #4
0
from models.member import MemberModel
from models.model_mixin import ModelMixin

meetings_members = db.Table(
    "meetings_members",
    db.Column("meeting_id",
              db.Integer,
              db.ForeignKey("meetings.id"),
              nullable=False),
    db.Column("member_id",
              db.Integer,
              db.ForeignKey("members.id"),
              nullable=False),
    db.Column("will_attend", db.Boolean),
    db.Column("attended", db.Boolean),
    db.PrimaryKeyConstraint("meeting_id", "member_id"),
)


class MeetingModel(db.Model, ModelMixin):
    __tablename__ = "meetings"

    id = db.Column(db.Integer, primary_key=True)
    datetime = db.Column(db.DateTime, nullable=False)
    type = db.Column(db.String(20), nullable=False)
    location = db.Column(db.String(100), nullable=False)
    description = db.Column(db.String(500), nullable=False)
    creator_id = db.Column(db.Integer,
                           db.ForeignKey("members.id"),
                           nullable=False)
    creator = db.relationship("MemberModel")
Exemple #5
0
from db import db
from models.model_mixin import ModelMixin
from models.permission import PermissionModel

roles_permissions = db.Table(
    "roles_permissions",
    db.Column("role_id", db.Integer, db.ForeignKey("roles.id"),
              nullable=False),
    db.Column(
        "permission_id",
        db.Integer,
        db.ForeignKey("permissions.id"),
        nullable=False,
    ),
    db.PrimaryKeyConstraint("role_id", "permission_id"),
)


class RoleModel(db.Model, ModelMixin):
    __tablename__ = "roles"

    id = db.Column(db.Integer, primary_key=True)
    role_name = db.Column(db.String(20), unique=True, nullable=False)
    permissions = db.relationship(
        "PermissionModel",
        secondary="roles_permissions",
        lazy="dynamic",
        backref=db.backref("roles", lazy="dynamic"),
    )