class ChannelNews(OpentopicModel): """ Represent single `ChannelNews` object. :param pk: channel news id :param news_index: unique news index value :param title: title of the news, it's title that news was published with :param description: description (body) of the news, it's description that news was published with :param extra_message: extra_message of the news, TODO: ? what is that ? :param url: url of the news, depends on publication options might be original url or blog url if news was already published to blog platform (wordpress), also depends on options might be short or long version :param is_published: bool value describing if news is already published (with success) :param is_scheduled: bool value describing if news is scheduled to be publish """ pk = fields.Integer() news_index = fields.String() title = fields.String() description = fields.String() extra_message = fields.String() url = fields.String() is_published = fields.Boolean() is_scheduled = fields.Boolean() parser = parse_channelnews def __str__(self): return self.title
class ArticleL1(Model): id = fields.Integer(required=True) title = fields.String(required=True) doi = fields.String(required=True) url = fields.String(required=True) published_date = Date(required=True) citation = fields.String() confidential_reason = fields.String() embargo_type = fields.String() is_confidential = fields.Boolean() size = fields.Integer() funding = fields.String() tags = fields.Collection(fields.String) version = fields.Integer() is_active = fields.Integer() is_metadata_record = fields.Boolean() metadata_reason = fields.String() status = fields.String() description = fields.String() is_embargoed = fields.Boolean() embargo_date = Date() is_public = fields.Boolean() modified_date = Date() created_date = Date() has_linked_file = fields.Boolean() categories = fields.Collection(Category) license = fields.Embedded(License) defined_type = fields.Integer() published_date = Date() embargo_reason = fields.String() references = fields.Collection(fields.String)
class ArticleFileUploadPart(Model): partNo = fields.Integer() startOffset = fields.Integer() endOffset = fields.Integer() status = fields.String() locked = fields.Boolean()
class Author(Model): id = fields.Integer(required=True) full_name = fields.String(required=True) is_active = fields.Boolean() url_name = fields.String() orcid_id = fields.String()
class Snv(Model): # required fields patient_id = fields.Integer(required=True) assembly = fields.Field( choices=[x.value for x in Assembly.__members__.values()], required=True) chr = fields.Field(choices=["X", "Y", "MT"] + [str(x) for x in range(1, 23)], required=True) start = fields.Integer(required=True) ref_allele = fields.String(required=True) alt_allele = fields.String(required=True) genotype = fields.Field( choices=[x.value for x in Genotype.__members__.values()], required=True) # optional fields user_transcript = fields.String() user_gene = fields.String() intergenic = fields.Boolean(default=False) inheritance = fields.Field( choices=[x.value for x in Inheritance.__members__.values()], default=Inheritance.unknown.value) pathogenicity = fields.Field( choices=[x.value for x in ClinicalSignificance.__members__.values() ].append(None)) contribution = fields.Field( choices=[x.value for x in Penetrance.__members__.values()].append(None)) shared = fields.String()
class Repo(Model): id = fields.Integer() name = fields.String() owner = fields.String() is_private = fields.Boolean() def parse(self, body, headers): return parse_repo(json.loads(body)) def __repr__(self): return 'Repo({}/{})'.format(self.owner, self.name)
class ArticleFile(Model): status = fields.String() is_link_only = fields.Boolean() name = fields.String() viewer_type = fields.String() preview_state = fields.String() download_url = fields.String() supplied_md5 = fields.String() computed_md5 = fields.String() upload_token = fields.String() upload_url = fields.String() id = fields.Integer() size = fields.Integer()
class FileL1(Model): id = fields.Integer(required=True) name = fields.String(required=True) size = fields.Integer() status = fields.String() viewer_type = fields.String() preview_state = fields.String() preview_meta = fields.Field() is_link_only = fields.Boolean() upload_url = fields.String() upload_token = fields.String() supplied_md5 = fields.String() computed_md5 = fields.String()
class Patient(Model): # required fields sex = fields.Field(choices=[ '46XY', '46XX', '45X', '47XX', '47XXY', '47XYY', 'other', 'unknown' ], required=True) reference = fields.String(required=True) project_id = fields.Integer(required=True) # optional fields age = fields.Field(choices=['unknown', 'Prenatal'] + [str(x) for x in range(0, 101)], default="unknown") prenatal = fields.Field(choices=[x for x in range(10, 43)].append(None)) aneuploidy = fields.Boolean(default=False) user_id = fields.Integer() note = fields.String() consent = fields.Field(choices=['No', 'Yes'], default="No")
class CustomField(Model): tag = fields.String() label = fields.String() string_value = fields.String(name='text') date_value = fields.String(name='date') boolean_value = fields.Boolean(name='boolean') party = None opportunity = None case = None @property def _url(self): if not (self.party or self.opportunity or self.case): raise ValidationError('Party, opportunity, or case is required') if bool(self.party) + bool(self.opportunity) + bool(self.case) > 1: raise ValidationError( 'Should only provide one of party, opportunity, case') if self.party: return '/api/party/%s/customfields' % self.party.id elif self.opportunity: return '/api/opportunity/%s/customfields' % self.opportunity.id elif self.case: return '/api/kase/%s/customfields' % self.case.id
class CustomField(Model): name = fields.String(required=True) value = fields.String() is_mandatory = fields.Boolean()
class ArticleConfidentiality(Model): is_confidential = fields.Boolean() reason = fields.String()