Beispiel #1
0
class Task(Document):
    schema_version = StringField(validate=validate.Length(max=10), default='1')
    test = ReferenceField('Test')
    test_suite = StringField(
        validate=validate.Length(max=100))  # embedded document from Test
    testcases = ListField(StringField())
    schedule_date = DateTimeField(default=datetime.datetime.utcnow)
    run_date = DateTimeField()
    status = StringField(validate=validate.Length(max=50), default='waiting')
    comment = StringField(validate=validate.Length(max=1000))
    kickedoff = IntField(validate=validate.Range(min=0), default=0)
    endpoint_list = ListField(UUIDField())
    parallelization = BooleanField(default=False)
    endpoint_run = ReferenceField('Endpoint')
    priority = IntField(validate=validate.Range(min=QUEUE_PRIORITY_MIN,
                                                max=QUEUE_PRIORITY_MAX),
                        default=QUEUE_PRIORITY_DEFAULT)
    variables = DictField()
    tester = ReferenceField('User')
    upload_dir = StringField(validate=validate.Length(max=100))
    test_results = ListField(ReferenceField('TestResult'))
    organization = ReferenceField(
        'Organization')  # embedded document from Test
    team = ReferenceField('Team')  # embedded document from Test

    class Meta:
        collection_name = 'tasks'
Beispiel #2
0
class Predicted(Document):
    predicted = fields.StringField(required=True)  # dataset name
    department = fields.StringField(required=True)  # assign the dataset to department
    team = fields.StringField(required=True)  # assign the dateset to team
    createDate = fields.DateTimeField(validate=validate.Range(min=pd.Timestamp(1990, 1, 1)), required=True)
    updateDate = fields.DateTimeField(validate=validate.Range(min=pd.Timestamp(1990, 1, 1)), required=True)
    class Meta():
        collection = db.predicted
Beispiel #3
0
 class MySchema(Schema):
     dict = fields.DictField(attribute='in_mongo_dict', allow_none=True)
     kdict = fields.DictField(keys=fields.StringField(
         validate=validate.Length(0, 1)))
     vdict = fields.DictField(values=fields.IntField(
         validate=validate.Range(max=5)))
     kvdict = fields.DictField(
         keys=fields.StringField(validate=validate.Length(0, 1)),
         values=fields.IntField(validate=validate.Range(max=5)))
     dtdict = fields.DictField(values=fields.DateTimeField)
Beispiel #4
0
class Account(Document):
    #
    username = fields.StringField(required=True)
    password = fields.StringField(required=True)
    createDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1990, 1, 1)), required=True)
    updateDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1990, 1, 1)), required=True)

    class Meta():
        collection = db.account
Beispiel #5
0
class User(Document):
    #
    name = fields.StringField(required=True)
    department = fields.StringField(required=True)
    team = fields.StringField(required=True)
    createDate = fields.DateTimeField(
        validate=validate.Range(min=pd.Timestamp(1990, 1, 1)), required=True)
    updateDate = fields.DateTimeField(
        validate=validate.Range(min=pd.Timestamp(1990, 1, 1)), required=True)
    accountRef = fields.StringField(required=True)

    class Meta():
        collection = db.user
Beispiel #6
0
class MLmodel(Document):
    #
    description = fields.StringField(required=True)  # to remember the functionality of the pkl file
    filename = fields.StringField(required=True)  # plk file name
    path = fields.StringField(required=True)  # path of the plk file
    version = fields.StringField(required=True)  # plk file version
    department = fields.StringField(required=True) # assign the model to department
    team = fields.StringField(required=True) # assign the model to team
    features = fields.StringField(required=True) # features have to be assigned
    name = fields.StringField(required=True)  # model name
    isDeployed = fields.BooleanField(required=True,default=False)
    createDate = fields.DateTimeField(validate=validate.Range(min=pd.Timestamp(1990,1,1)),required=True)
    updateDate = fields.DateTimeField(validate=validate.Range(min=pd.Timestamp(1990,1,1)),required=True)
    class Meta():
        collection = db.mlmodel
Beispiel #7
0
class FormField(EmbeddedDocument):  # pylint: disable=abstract-method
    """
    A field in a form to fill out.

    Taken from fenetre/db.py.
    """

    # This should be a substring of the nearest label text to the control we're filling in.
    # Optional _not automatically set_
    expected_label_segment = fields.StrField(required=False, default=None)

    # Index on page (includes headings)
    index_on_page = fields.IntField(required=True,
                                    validate=validate.Range(min=0))

    # Value to fill in.
    # The grammar for this field is in fieldexpr.py in lockbox.
    target_value = fields.StrField(required=True)

    # Type of field
    kind = fields.StrField(required=True,
                           validate=validate.OneOf(
                               [x.value for x in FormFieldType]))

    # Is this field critical? as in; if we don't fill it in do we still submit the form?
    critical = fields.BoolField(default=True)
Beispiel #8
0
class Rate(Document):
    from_user = fields.ReferenceField('User', required=True)
    to_user = fields.ReferenceField('User', required=True)
    rate = fields.IntField(required=True,
                           validate=validate.Range(min=1, max=5))
    description = fields.StrField()
    date = fields.DateTimeField()
class ClinicalSample(Document):
    clinicalSampleCode = fields.StringField(required=True)
    sampleCounter = fields.IntegerField(required=True)
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    workflowTag = fields.StrField(required=False)
    quality = fields.StrField(required=False)
    description = fields.StrField()
    processingPerson = fields.StrField()
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "clinicalSample"
Beispiel #10
0
class User(Document):
    username = fields.StrField(required=True, unique=True)
    email = fields.EmailField(required=True, unique=True)
    firstname = fields.StrField()
    lastname = fields.StrField()
    # birthday = fields.DateTimeField()
    birthday = fields.DateTimeField(validate=validate.Range(min=datetime.datetime(1900, 1, 1)))
    password = fields.StrField(required=True)  # Don't store it in clear in real life !
    date_created = fields.DateTimeField(default=datetime.datetime.now())
    date_modified = fields.DateTimeField(default=datetime.datetime.now())
    # authored_docs = fields.ListField(fields.ReferenceField("Paper"))

    def update(self, *args, **kwargs):
        if not self.date_created:
            self.date_created = datetime.datetime.now()
        self.date_modified = datetime.datetime.now()
        return super(User, self).update(*args, **kwargs)

    class Meta:
        # collection = db.users
        collection_name = 'users'

    def get_thread_karma(self):
        """
        fetch the number of votes this user has had on his/her threads

        1.) Get id's of all threads by this user

        2.) See how many of those threads also were upvoted but not by
        the person him/her self.
        """
        # thread_ids = [t.id for t in self.threads]
        # select = thread_upvotes.select(db.and_(
        #         thread_upvotes.c.thread_id.in_(thread_ids),
        #         thread_upvotes.c.user_id != self.id
        #     )
        # )
        # rs = db.engine.execute(select)
        # return rs.rowcount
        # TODO

        return Thread.find({"user_id":self.id}).count()

    def get_comment_karma(self):
        """
        fetch the number of votes this user has had on his/her comments

        """
        # TODO

        return Comment.find({'user_id': self.id}).count()

    def threads(self):
        app.logger.debug(Thread.find({"user_id":self.id})[:])
        return list(Thread.find({"user_id":self.id}))

    def comments(self):
        app.logger.debug(list(Comment.find({"user_id":self.id})))
        return list(Comment.find({"user_id":self.id}))
class IntermediateSample(Document):
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    clinicalSamples = fields.ListField(fields.ObjectIdField, required=False)
    parentSamples = fields.ListField(fields.ObjectIdField, required=False)
    protocolName = fields.StrField(required=True)
    workflowTag = fields.StrField(required=False)
    sopFileName = fields.StrField(required=False)
    description = fields.StrField()
    processingPerson = fields.StrField()
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "intermediateSample"
Beispiel #12
0
class User(Document):
    email = fields.EmailField(required=True, unique=True)
    birthday = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    friends = fields.ListField(fields.ReferenceField("User"))

    class Meta:
        collection = db.user
class Artefact(Document):
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=False)
    # SOP
    sopFileName = fields.StrField(required=False)
    encodedFileId = fields.ObjectIdField(required=False)
    artefactClass = fields.StrField(required=False)
    description = fields.StrField(required=False)
    owner = fields.StrField(required=False)
    revision = fields.StrField(required=False)
    processingPerson = fields.StrField()
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "Artefacts"
Beispiel #14
0
class InviteGroup(Document):
    code = fields.StrField(unique=True,
                           required=True,
                           validate=validate.Length(equal=INVITE_CODE_LENGTH))
    limit = fields.IntField(required=True, validate=validate.Range(min=1))
    available_uses = fields.IntField(required=True,
                                     validate=validate.Range(min=0))

    # expiration_date = fields.DateTimeField()
    async def create_new_code(self, limit, code=None):
        from models.utils import create_new_invite_code

        self.code = code if code is not None else await create_new_invite_code(
        )
        self.limit = limit
        self.available_uses = limit
        await self.commit()
        return self
Beispiel #15
0
 class MyDoc(Document):
     dk = fields.IntField(marshmallow_data_key='dkdk')
     at = fields.IntField(marshmallow_attribute='atat')
     re = fields.IntField(marshmallow_required=True)
     an = fields.IntField(marshmallow_allow_none=True)
     lo = fields.IntField(marshmallow_load_only=True)
     do = fields.IntField(marshmallow_dump_only=True)
     va = fields.IntField(marshmallow_validate=validate.Range(min=0))
     em = fields.IntField(
         marshmallow_error_messages={'invalid': 'Wrong'})
class MSReadySample(Document):
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    clinicalSamples = fields.ListField(fields.ObjectIdField, required=False)
    intermediateSampleId = fields.ObjectIdField(required=True)
    msReadySampleName = fields.StrField(required=False)
    workflowTag = fields.StrField(required=False)
    quality = fields.StrField(required=False)
    peptideNo = fields.FloatField(required=False)
    description = fields.StrField(required=False)
    concentration = fields.StrField(required=False)
    processingPerson = fields.StrField(required=False)
    currentLocation = fields.StrField(required=False)
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "msReadySample"
class SWATHAnalysis(Document):
    swathId = fields.IntegerField(required=False)
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    clinicalSamples = fields.ListField(fields.ObjectIdField, required=False)
    msRunIds = fields.ListField(fields.ObjectIdField, required=False)
    protocolId = fields.StrField(required=True)
    protocolName = fields.StrField(required=False)
    sopFileName = fields.StrField(required=False)
    proteinMatrixFileName = fields.StrField(required=False)
    description = fields.StrField(required=False)
    workflowTag = fields.StrField(required=False)
    spectralLibraryId = fields.ObjectIdField(required=True)
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "SWATHAnalysis"
class SpectralLibrary(Document):
    libId = fields.IntegerField(required=False)
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    clinicalSamples = fields.ListField(fields.ObjectIdField, required=False)
    msRunIds = fields.ListField(fields.ObjectIdField, required=False)
    protocolId = fields.StrField(required=True)
    protocolName = fields.StrField(required=False)
    sopFileName = fields.StrField(required=False)
    specLibFilename = fields.StrField(required=False)
    description = fields.StrField(required=False)
    proteinDatabaseOrganism = fields.StrField(required=True)
    proteinDatabaseVersion = fields.StrField(required=True)
    workflowTag = fields.StrField(required=False)
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "SpectralLibrary"
class MSRun(Document):
    runId = fields.IntegerField(required=False)
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    clinicalSamples = fields.ListField(fields.ObjectIdField, required=False)
    msReadySampleId = fields.ObjectIdField(required=True)
    msReadySampleName = fields.StrField(required=False)
    protocolId = fields.StrField(required=True)
    protocolName = fields.StrField(required=False)
    sopFileName = fields.StrField(required=False)
    description = fields.StrField(required=False)
    instrumentId = fields.StrField(required=True)
    instrumentMethod = fields.StrField(required=False)
    runCode = fields.StrField(required=False)
    status = fields.StrField(required=False)
    processingPerson = fields.StrField(required=False)
    workflowTag = fields.StrField(required=False)
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "MSRun"
Beispiel #20
0
 class MySchema(BaseSchema):
     with_max = fields.IntField(validate=validate.Range(max=99))
Beispiel #21
0
class TaskQueue(Document):
    '''
    Per endpoint per priority queue
    '''
    schema_version = StringField(validate=validate.Length(max=10), default='1')
    priority = IntField(validate=validate.Range(min=QUEUE_PRIORITY_MIN,
                                                max=QUEUE_PRIORITY_MAX),
                        default=QUEUE_PRIORITY_DEFAULT)
    tasks = ListField(ReferenceField('Task'), default=[])
    endpoint = ReferenceField('Endpoint')
    running_task = ReferenceField('Task', allow_none=True, default=missing)
    rw_lock = BooleanField(default=False)
    organization = ReferenceField('Organization')
    team = ReferenceField('Team')
    to_delete = BooleanField(default=False)

    class Meta:
        collection_name = 'task_queues'

    async def acquire_lock(self):
        for i in range(LOCK_TIMEOUT):
            if await self.collection.find_one_and_update(
                {
                    '_id': self.pk,
                    'rw_lock': False
                }, {'$set': {
                    'rw_lock': True
                }}):
                return True
            await asyncio.sleep(0.1)
        else:
            return False

    async def release_lock(self):
        await self.collection.find_one_and_update({'_id': self.pk},
                                                  {'$set': {
                                                      'rw_lock': False
                                                  }})

    async def pop(self):
        if not await self.acquire_lock():
            return None
        await self.reload()
        if len(self.tasks) == 0:
            await self.release_lock()
            return None
        task = self.tasks.pop(0)
        task = await task.fetch()
        self.running_task = task
        await self.commit()
        await self.release_lock()
        return task

    async def push(self, task):
        if not await self.acquire_lock():
            raise RuntimeError('failed to acquire queue lock')
        self.tasks.append(task)
        await self.commit()
        await self.release_lock()

    async def flush(self, cancelled=False):
        if not await self.acquire_lock():
            raise RuntimeError('failed to acquire queue lock')
        if cancelled:
            for task in self.tasks:
                task.status = 'cancelled'
                await task.commit()
        self.tasks = []
        await self.commit()
        await self.release_lock()
        return True
class Industry(EmbeddedDocument):
    industry = fields.ReferenceField('Tag', required=True)
    experience = fields.IntField(required=True,
                                 validate=validate.Range(min=0, max=100))
Beispiel #23
0
class Punishment(umongo.EmbeddedDocument):
    type = fields.IntegerField(required=True, allow_none=True)
    mute_for = fields.IntegerField()
    captcha_type = fields.IntegerField(validate=validate.Range(0, 2))
Beispiel #24
0
 class MySchema(EmbeddedSchema):
     with_max = fields.IntField(validate=validate.Range(max=99))
class Game(BaseDocument):
    """
    This is how we are going to store the game
    """
    STATUS_CREATED = 'created'
    STATUS_IN_PROGRESS = 'in_progress'
    STATUS_TIE = 'tie'
    STATUS_FINISHED = 'finished'

    STATUS = [
        STATUS_CREATED,
        STATUS_IN_PROGRESS,
        STATUS_TIE,
        STATUS_FINISHED,
    ]

    players = fields.ListField(
        fields.ReferenceField("User"),
    )

    multiplayer = fields.BoolField(
        default=False,
    )

    board = fields.ListField(
        fields.ListField(
            fields.StrField()
        )
    )

    status = fields.StrField(
        validate=validate.OneOf(STATUS),
        default=STATUS_CREATED
    )

    created_at = fields.DateTimeField(
        default=datetime.datetime.now(),
    )

    winner = fields.ReferenceField("User")

    size = fields.IntegerField(
        validate=[validate.Range(3, 10)],
        default=3,
    )

    def pre_insert(self):
        """
        Fill the board and do multiplayer validations
        """
        if not self.players:
            raise ValidationError(
                "There should be at least one player",
            )
        if len(self.players) > 2:
            raise ValidationError(
                "Maximum two players"
            )
        if len(self.players) == 2:
            self.multiplayer = True
        else:
            self.multiplayer = False

        self.board = [["" for i in range(self.size)] for y in range(self.size)]
        pass

    class Meta:
        """
        ODM Metadata
        """
        collection = db.games
Beispiel #26
0
 class MySchema(EmbeddedSchema):
     a = fields.IntField()
     b = fields.IntField(attribute='in_mongo_b')
     c = fields.IntField(allow_none=True,
                         validate=validate.Range(min=1, max=5))
Beispiel #27
0
class UserTempl(Document):
    email = fields.EmailField(required=True, unique=True)
    birthday = fields.DateTimeField(validate=validate.Range(
        min=datetime(1900, 1, 1)))
    friend = fields.ReferenceField("UserTempl")