class PaginationObj(JsonObject): count = IntegerProperty() total = IntegerProperty() size = IntegerProperty() next = StringProperty() previous = StringProperty() sort = StringProperty() order = StringProperty(choices=['asc', 'desc'])
class ShardMeta(JsonObject, LooslyEqualJsonObject): id = IntegerProperty() dbname = StringProperty() host = StringProperty() port = IntegerProperty() def get_server_option_string(self): return SHARD_OPTION_TEMPLATE.format(**self)
class FileTypeSummary(AzulJsonObject): format = StringProperty() fileSource = ListProperty() # List could have string(s) and/or None count = IntegerProperty() totalSize = FloatProperty() matrixCellCount = FloatProperty() isIntermediate = BooleanProperty() contentDescription = ListProperty( ) # List could have string(s) and/or None @classmethod def for_bucket(cls, bucket: JSON) -> 'FileTypeSummary': self = cls() self.count = bucket['doc_count'] self.totalSize = bucket['size_by_type']['value'] self.matrixCellCount = bucket['matrix_cell_count_by_type']['value'] self.format = bucket['key'] return self @classmethod def for_aggregate(cls, aggregate_file: JSON) -> 'FileTypeSummary': self = cls() self.count = aggregate_file['count'] self.fileSource = aggregate_file['file_source'] self.totalSize = aggregate_file['size'] self.matrixCellCount = aggregate_file['matrix_cell_count'] self.format = aggregate_file['file_format'] self.isIntermediate = aggregate_file['is_intermediate'] self.contentDescription = aggregate_file['content_description'] assert isinstance(self.format, str), type(str) assert self.format return self
class ImportSummary(JsonObject): """ Import processes are contained in an Object of type Import Summary that is represented in this object. Typically an import summary offers the following information: total objects, objects deleted, objects ignored, objects updated objects created """ total = IntegerProperty(required=True) created = IntegerProperty(required=True) updated = IntegerProperty(required=True) deleted = IntegerProperty(required=True) ignored = IntegerProperty(required=True)
class OrganCellCountSummary(JsonObject): organType = ListProperty( ) # List could have strings and/or None (eg. ['Brain', 'Skin', None]) countOfDocsWithOrganType = IntegerProperty() totalCellCountByOrgan = FloatProperty() @classmethod def for_bucket(cls, bucket: JSON) -> 'OrganCellCountSummary': self = cls() self.organType = [bucket['key']] self.countOfDocsWithOrganType = bucket['doc_count'] self.totalCellCountByOrgan = bucket['cell_count']['value'] return self
class FileTypeSummary(JsonObject): fileType = StringProperty() count = IntegerProperty() totalSize = IntegerProperty() @classmethod def for_bucket(cls, bucket: JSON) -> 'FileTypeSummary': self = cls() self.count = bucket['doc_count'] self.totalSize = int( bucket['size_by_type'] ['value']) # Casting to integer since ES returns a double self.fileType = bucket['key'] return self @classmethod def for_aggregate(cls, aggregate_file: JSON) -> 'FileTypeSummary': self = cls() self.count = aggregate_file['count'] self.totalSize = aggregate_file['size'] self.fileType = aggregate_file['file_format'] assert isinstance(self.fileType, str) assert len(self.fileType) return self
class SummaryRepresentation(JsonObject): projectCount = IntegerProperty() specimenCount = IntegerProperty() speciesCount = IntegerProperty() fileCount = IntegerProperty() totalFileSize = FloatProperty() donorCount = IntegerProperty() labCount = IntegerProperty() totalCellCount = FloatProperty() organTypes = ListProperty(StringProperty(required=False)) fileTypeSummaries = ListProperty(FileTypeSummary) cellCountSummaries = ListProperty(OrganCellCountSummary)
class ProcessInfo(JsonObject): host = StringProperty() # not in the API name = StringProperty() group = StringProperty() start = IntegerProperty() stop = IntegerProperty() now = IntegerProperty() state = IntegerProperty() statename = StringProperty() spawnerr = StringProperty() exitstatus = IntegerProperty() stdout_logfile = StringProperty() stderr_logfile = StringProperty() pid = IntegerProperty()
class SchedulerModuleInfo(JsonObject): # Set to True to enable setting the start date of any schedule instances # based on the visit scheduler info details below enabled = BooleanProperty(default=False) # The app that contains the visit scheduler form being referenced app_id = StringProperty() # The unique_id of the visit scheduler form in the above app form_unique_id = StringProperty() # The visit number from which to pull the start date for any schedule # instances; this should be the 0-based index in the FormSchedule.visits list visit_number = IntegerProperty() # VISIT_WINDOW_START - the start date used will be the first date in the window # VISIT_WINDOW_END - the start date used will be the last date in the window # VISIT_WINDOW_DUE_DATE - the start date used will be the due date of the visit window_position = StringProperty(choices=[ VISIT_WINDOW_START, VISIT_WINDOW_END, VISIT_WINDOW_DUE_DATE ])
class FacetObj(JsonObject): terms = ListProperty(AbstractTermObj) total = IntegerProperty() _type = StringProperty(name='type')
class AbstractTermObj(JsonObject): count = IntegerProperty()