class TaskMetadata(Document, MetadataMixin): id = fields.StringField(primary_key=True, default=lambda: str(uuid.uuid4())) status = fields.StringField(default=PENDING, choices=TASK_STATUS_CODES, required=True) owner = fields.StringField(required=True) command = fields.StringField(choices=TASK_COMMANDS, required=True) date = fields.LongField(default=lambda: int(time.time())) config = fields.DictField(default=lambda: dict()) history = fields.DictField() meta = { 'allow_inheritance': True, 'db_alias': 'metadata', 'collection': 'tasks' } def to_dict(self): meta = self.to_mongo().to_dict() if '_id' in meta: meta['id'] = meta['_id'] del meta['_id'] del meta['_cls'] return meta def from_dict(self, meta): for name in self._fields: if name in meta: setattr(self, name, meta[name])
class BarChartsData(Document): technologies = fields.DictField( default={ 'Docker': 0, 'AWS': 0, 'Angular': 0, 'React': 0, 'Spring': 0, 'Kubernetes': 0, 'NET': 0, 'Nodejs': 0, 'MySQL': 0 }) company_size = fields.DictField(default={ '<10': 0, '10-50': 0, '50-200': 0, '200-500': 0, '500-1000': 0, '>1000': 0 }) date = fields.DateTimeField(defualt=datetime.utcnow)
class Projects(Document): __project_regex__ = '^[a-zA-Z0-9_]+$' project = fields.StringField( min_length=3, max_length=30, required=True, unique=True, regex = __project_regex__, help_text="project name/slug (valid format: `{}`)".format( __project_regex__ ) ) title = fields.StringField( min_length=5, max_length=30, required=True, unique=True, help_text='(short) title for the project/dataset' ) authors = fields.StringField( required=True, help_text='comma-separated list of authors' ) description = fields.StringField( min_length=5, max_length=1500, required=True, help_text='brief description of the project' ) urls = fields.DictField( required=True, help_text='list of URLs for references' ) other = fields.DictField(help_text='other information') # TODO permissions MapField # is required on POST but should never be returned on GET (write-only) meta = { 'collection': 'projects', 'indexes': [{ 'fields': ['$title', "$description", "$authors"], }, 'project'] }
class Structures(Document): __project_regex__ = '^[a-zA-Z0-9_]+$' project = fields.StringField( min_length=3, max_length=30, required=True, regex=__project_regex__, help_text=f"project name/slug (valid format: `{__project_regex__}`)") identifier = fields.StringField( required=True, help_text="material/composition identifier") name = fields.StringField(required=True, unique_with='cid', help_text="table name") cid = fields.ObjectIdField(required=True, help_text="Contribution ID") lattice = fields.DictField(required=True, help_text="lattice") sites = fields.ListField(fields.DictField(), required=True, help_text="sites") meta = { 'collection': 'structures', 'indexes': [ 'identifier', 'project', 'cid', 'name', { 'fields': ['cid', 'name'], 'unique': True } ] }
class Invoice(PPrintMixin, DynamicDocument): invoice_id = fields.StringField(unique=True, required=True) cust_id = fields.StringField(required=True) invoice_date = fields.DateTimeField() invoicelines = fields.ListField(fields.DictField()) taxes = fields.ListField(fields.DictField()) status = fields.StringField(default="new") url = fields.StringField()
class SODiagnosis(fields.Document): owner = fields.IntField() from_expert = fields.IntField() summary = fields.StringField() second_opinion = fields.StringField() diagnosis = fields.StringField() so_obj = fields.DictField() request_info = fields.DictField() is_closed = fields.BooleanField(default=False) is_closed_by_user = fields.BooleanField(default=False)
class ProfilingRequest(Document, FlaskAdminURLMixin, GetAttributeMixin): method = fields.StringField() path = fields.StringField() referrer = fields.StringField() environ = fields.DictField() status = fields.DictField() pyprofile = fields.StringField() query_count = fields.IntField() duration = fields.DecimalField() query_duration = fields.DecimalField() time = fields.DateTimeField() def __unicode__(self): return '%s %s' % (self.get('method'), self.get('path'))
class ProfilingQuery(Document, FlaskAdminURLMixin, GetAttributeMixin): request = fields.ReferenceField(ProfilingRequest) command_name = fields.StringField() database_name = fields.StringField() operation_id = fields.IntField() connection = fields.EmbeddedDocumentField( ProfilingQueryConnection) # connection_id request_id = fields.StringField() failure = fields.DictField() duration = fields.DecimalField() command = fields.DictField() def __unicode__(self): return '%s' % self.get('command_name', 'Command')
class Task(db.Document): name = fields.StringField() status = fields.StringField() params = fields.DictField(default={}) file = fields.EmbeddedDocumentField(TaskFile) result = fields.DictField(default={}) create_user = fields.ReferenceField(User, required=True, db_field='create_user_id') created_at = fields.DateTimeField(default=datetime.now) STATUS_PENDING = 'pending' STATUS_RUNNING = 'running' STATUS_COMPLETED = 'completed' STATUS_FAILURE = 'failure'
class Model(Document): name = fields.StringField(required=True) group = fields.StringField(required=True) klass = fields.StringField(required=True) algorithm = fields.StringField(required=True) accuracy = fields.DictField(required=True) hyperparameters = fields.DictField(required=True) dataset = fields.DictField(required=True) inputformat = fields.StringField(required=True) default = fields.StringField(required=True) active = fields.StringField(required=True) description = fields.StringField(required=True) user = fields.DictField(required=True) createdate = fields.StringField(required=True) modifieddate = fields.StringField(required=True)
class DeepDoc(Document): f_list = fields.ListField(fields.IntField()) f_map = fields.MapField(fields.IntField()) f_dict = fields.DictField() f_emb = fields.EmbeddedDocumentField(EmbDoc) f_emblist = fields.ListField(fields.EmbeddedDocumentField(EmbDoc))
class User(mongoengine.fields.Document): owner = mongoengine.fields.IntField() # HermesUser.pk username = mongoengine.fields.StringField() # HermesUser.username is_admin = mongoengine.fields.BooleanField(default=False) is_moderator = mongoengine.fields.BooleanField(default=False) is_expert = mongoengine.fields.BooleanField(default=False) other = fields.DictField()
class ArchitectureMetadata(Document, MetadataMixin): id = fields.StringField(primary_key=True, default=lambda: str(uuid.uuid4())) is_public = fields.BooleanField(default=False) owner = fields.StringField(required=True) status = fields.StringField(default=PENDING, choices=ARCHITECTURE_STATUS_CODES, required=True) # NEW IN V0.5.0 title = fields.StringField(required=True) description = fields.StringField() category = fields.StringField(choices=DATASET_CATEGORIES) architecture = fields.DictField(required=True) meta = { 'allow_inheritance': True, 'db_alias': 'metadata', 'collection': 'architectures' } def to_dict(self): meta = self.to_mongo().to_dict() if '_id' in meta: meta['id'] = meta['_id'] del meta['_id'] del meta['_cls'] return meta def from_dict(self, meta): for name in self._fields: if name in meta: setattr(self, name, meta[name])
class EveryDayMeasurements(fields.EmbeddedDocument): # count/minute heart_rate = fields.FloatField() # C body_temperature = fields.FloatField() # https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0 basal_body_temperature = fields.FloatField() # мм. ртутного столба | mm Hg blood_pressure_systolic = fields.FloatField() blood_pressure_diastolic = fields.FloatField() # https://en.wikipedia.org/wiki/Respiratory_rate # число дыхательных движений за одну минуту # number of breaths/minute respiratory_rate = fields.FloatField() body_mass = fields.FloatField() # gwb_anxiety = fields.IntField() gwb_concentration = fields.IntField() gwb_energy = fields.IntField() gwb_stress = fields.IntField() ss_fever = fields.IntField() ss_general_pain = fields.IntField() ss_sensory_problems = fields.IntField() ss_diarrhea = fields.IntField() ss_nausea = fields.IntField() ss_hair_loss = fields.IntField() ss_mouth_sores = fields.IntField() ss_fatigue = fields.IntField() timestamp = fields.DateTimeField() # i_took_today = fields.DictField() journal_entry = fields.StringField()
class DialogMsg(fields.EmbeddedDocument): mail_type = fields.StringField(max_length=1, choices=MAIL_TYPES.items()) text = fields.StringField() timestamp = fields.DateTimeField() """ произвольные прикрепляемые объекты """ objs = fields.DictField()
class Content(Document): project = fields.ReferenceField(Project, required=True) content = fields.DictField(required=True) file_name = fields.StringField(required=True) sheet_name = fields.StringField(required=True) input_headers = fields.ReferenceField(Input_headers, required=True) status = fields.BooleanField(default=False) created_at = fields.DateTimeField(default=datetime.utcnow)
class EventPlugin(EmbeddedDocument): meta = {"strict": False} name = fields.StringField() config = fields.DictField(default={}) def __unicode__(self): return self.name
class History(Document): identity = fields.ObjectIdField() document_id = fields.ObjectIdField() document_type = fields.StringField() action = fields.StringField() path = fields.StringField() data = fields.DictField() created_at = fields.DateTimeField()
class AlarmPlugin(EmbeddedDocument): meta = {"strict": False, "auto_create_index": False} name = fields.StringField() config = fields.DictField(default={}) def __str__(self): return self.name
class SOQueue(fields.Document): """ obj={ 'assigned_by':<MainUser.pk>, #coordinator 'user':<MainUser.pk>,#patient 'assigned_to':<MainUser.pk>, #expert 'date':<>, #date for user 'assigned_date':<>, #date for coordinator 'closed_date':<>, #date for expert 'reopen_date':<> } """ opened = fields.ListField(field=fields.DictField()) in_progress = fields.ListField(field=fields.DictField()) closed = fields.ListField(field=fields.DictField()) reopened = fields.ListField(field=fields.DictField()) processed_ = fields.ListField(field=fields.DictField())
class User(Document): user_id = fields.IntField(required=True) first_name = fields.StringField(max_length=30) last_name = fields.StringField(max_length=30) is_owner = fields.BooleanField(default=False) credit = fields.IntField(default=0) email = fields.StringField(required=True) preference = fields.DictField(default=DEFAULT_PREFERENCE_VALUE)
class BaseDoc(db.Document): inner = db.EmbeddedDocumentField(EmbeddedDoc) inner_list = db.EmbeddedDocumentListField(EmbeddedDoc) req_field = db.StringField(required=True) string = db.StringField() bool = db.BooleanField() integer_field = db.IntField() dict_f = db.DictField()
class PatchingDumbDocument(Document): name = fields.StringField() int_fld = fields.IntField() lst_fld = fields.ListField() dct_fld = fields.DictField() intlst_fld = fields.ListField(fields.IntField()) intdct_fld = fields.MapField(fields.IntField()) emb = fields.EmbeddedDocumentField(DumbEmbedded) emb_lst = fields.EmbeddedDocumentListField(DumbEmbedded)
class Booking(PPrintMixin, DynamicDocument): booking_id = fields.StringField(required=True) passenger_detail = fields.StringField() passenger_mobile = fields.StringField() created_timestamp = fields.DateTimeField(default=datetime.datetime.utcnow) pickup_timestamp = fields.DateTimeField(required=True) pickup_location = fields.StringField(required=True) drop_location = fields.StringField() num_passengers = fields.IntField() product_id = fields.StringField(required=True) cust_id = fields.StringField(required=True) booking_channel = fields.StringField(required=True) status = fields.StringField(default="new") remarks = fields.StringField() assignment = fields.StringField(default=None) cust_meta = fields.DictField(unique=True) notification_prefs = fields.DictField( default=utils.defaultnotificationprefs)
class DataTest(db.DynamicDocument): data = fields.DictField() list_data = fields.ListField() def to_json(self, *args, **kwargs): return { 'id': str(self.id), 'data': self.data, 'list': self.list_data }
class TodoListModel(BaseDocument): meta = {"collection": "todo_list"} no = fields.SequenceField(collection_name="todo_list") title = fields.StringField(required=True) status = fields.DictField(required=True) category = fields.DictField(required=True) due_date = fields.StringField() due_time = fields.StringField() description = fields.StringField() star = fields.BooleanField(default=False) hash_tags = fields.ListField(fields.StringField()) @queryset_manager def withStar(doc_cls, queryset): return queryset.filter(star=True)
class Queue(Document): status = fields.StringField( required=True, default="Pending", help_text=( "The current status of the request. Either Pending or Complete.")) activity = fields.DictField( null=True, default={}, help_text=("The corresponding activity for this Queue"))
class Campaign(Document): name = fields.StringField(max_length=255, unique=True) description = fields.StringField(null=True) kwargs = fields.DictField(required=False, null=True) meta = { 'collection': "campaign" } def __str__(self): return self.name
class Model(db.Document): base = db.ReferenceField(Base) f1 = db.StringField() f2 = db.BooleanField() f3 = db.StringField() embedded = db.EmbeddedDocumentField(ED) listf = db.EmbeddedDocumentListField(ED) dictf = db.DictField()
class ArchivedEvent(document.Document): """ """ meta = { "collection": "noc.events.archive", "strict": False, "auto_create_index": False, "indexes": ["timestamp", "alarms"], } status = "S" timestamp = fields.DateTimeField(required=True) managed_object = nosql.ForeignKeyField(ManagedObject, required=True) event_class = nosql.PlainReferenceField(EventClass, required=True) start_timestamp = fields.DateTimeField(required=True) repeats = fields.IntField(required=True) raw_vars = nosql.RawDictField() resolved_vars = nosql.RawDictField() vars = fields.DictField() log = fields.ListField(nosql.EmbeddedDocumentField(EventLog)) alarms = fields.ListField(nosql.ObjectIdField()) def __str__(self): return "%s" % self.id @property def duration(self): """ Logged event duration in seconds """ return (self.timestamp - self.start_timestamp).total_seconds() def get_template_vars(self): """ Prepare template variables """ vars = self.vars.copy() vars.update({"event": self}) return vars @property def subject(self): ctx = Context(self.get_template_vars()) s = Template(self.event_class.subject_template).render(ctx) if len(s) >= 255: s = s[:125] + " ... " + s[-125:] return s @property def body(self): ctx = Context(self.get_template_vars()) s = Template(self.event_class.body_template).render(ctx) return s