class WebViewFeature(EmbeddedDocument): # view compare extracting feature update_time = StringField() # 更新时间,格式化字符串 view_hash = StringField() # image_list hash value image_list = ListField(EmbeddedDocumentField(Image))
class Dad(AbstractHuman): name = StringField()
class User(Human): name = StringField()
class EmbedData(EmbeddedDocument): data = StringField() meta = {"allow_inheritance": True}
class Animal(Document): name = StringField() meta = {"allow_inheritance": True}
class PhoneMessageId(DynamicDocument): phone = StringField(max_length=11, unique=True, sparse=True) msg_id = StringField()
class A(Document): a = StringField() meta = {"allow_inheritance": True, "indexes": ["a"]}
class Bike(Document): model = StringField() daily = IntField() image = StringField() year = StringField()
class GarageEntry(EmbeddedDocument): max_spaces = IntField(required=True, min_value=0) name = StringField(required=True, choices=_GARAGES) percent_full = FloatField(required=True, min_value=0.0, max_value=100.0) spaces_filled = IntField(required=True, min_value=0) spaces_left = IntField(required=True, min_value=0)
class Work(Document): batch_size = IntField() work_name = StringField() details = StringField() user = ReferenceField(User, reverse_delete_rule=CASCADE) create_time = DateTimeField() finished_time = DateTimeField() script_id = StringField() dataset_id = StringField() data_num = IntField() @property def tasks(self) -> list('Task'): tasks = Task.objects(work=self) return tasks @property def tasks_progress(self): progresses = {} for task in self.tasks: progresses[str(task.id)] = task.progress return progresses def new_task(self): task = Task() task.status = 0 task.work = self task.save() return task def get_executing(self) -> list('Task'): tasks = Task.objects(Q(work=self) & Q(status__lt=2)) return tasks def start(self): self.create_time = datetime.now() self.save() def done(self): self.finished_time = datetime.now() self.save() def get_dict(self): return { "uuid": str(self.id), "user": self.user.username, "work_name": self.work_name, "batch_size": self.batch_size, "details": self.details, "create_time": (self.create_time.isoformat() + 'Z') if self.create_time is not None else "", "finished_time": (self.finished_time.isoformat() + 'Z') if self.finished_time is not None else "", "progress": self.tasks_progress, "data_num": self.data_num }
class Account(BaseModel): name = StringField(max_length=5000, null=False) tel = IntField(null=False) password = StringField(max_length=5000, null=False) head_img_key = StringField(max_length=5000, null=False) meta = {'collection': 'account'}
def field_type(**kwargs): return DictField(StringField, StringField(), **kwargs)
class Location(Document, OParlDocument): type = 'https://schema.oparl.org/1.0/Location' description = StringField(fulltext=True) geojson = DictField() streetAddress = StringField() room = StringField() postalCode = StringField() subLocality = StringField() locality = StringField() body = ListField(ReferenceField('Body', dbref=False, deref_location=False), default=[]) person = ListField(ReferenceField('Person', dbref=False, deref_location=True), default=[]) organization = ListField(ReferenceField('Organization', dbref=False, deref_location=True), default=[]) meeting = ListField(ReferenceField('Meeting', dbref=False, deref_location=True), default=[]) paper = ListField(ReferenceField('Paper', dbref=False, deref_location=True), default=[]) license = StringField() keyword = ListField(StringField(fulltext=True), default=[]) created = DateTimeField(datetime_format='datetime') modified = DateTimeField(datetime_format='datetime') web = StringField() deleted = BooleanField() # Politik bei Uns Felder originalId = StringField(vendor_attribute=True) mirrorId = StringField(vendor_attribute=True) autogenerated = BooleanField(vendor_attribute=True) locationType = StringField( vendor_attribute=True) # could be street, address, point-of-interest # Felder zur Verarbeitung _object_db_name = 'location' _attribute = 'location' def __init__(self, *args, **kwargs): super(Document, self).__init__(*args, **kwargs) def __repr__(self): return '<Location %r>' % self.streetAddress
class Employee(Document): employee_id = StringField(required=True, verbose_name='员工id', unique=True) employee_name = StringField(required=True, verbose_name='员工姓名') email = StringField(required=True, verbose_name='邮箱') dept_name = StringField(required=True, verbose_name='部门信息') status = BooleanField(required=True, verbose_name='在职状态', default=True) meta = { 'collection': 'employee_info', 'verbose_name': '员工信息表', 'indexes': [ 'employee_id', 'email', 'employee_name', ] } def to_dict(self): return { 'id': self.employee_id, 'accountid': self.employee_id, 'name': self.employee_name, 'email': self.email, 'dept_name': self.dept_name, } @classmethod def get_users(cls, ids: str = '', emails: str = '', status=None) -> list: """ 根据员工id查询 params ids: 用户id列表 params status: 在值状态, default all """ result = [] id_list = list(filter(None, [x.strip() for x in ids.split(',')])) email_list = list(filter(None, [x.strip() for x in emails.split(',')])) if not id_list and not emails: return result if id_list: queryset = cls.objects.filter(employee_id__in=id_list) else: queryset = cls.objects.filter(email__in=email_list) if status is not None: queryset = queryset.filter(status=status) for item in queryset.limit(10): result.append(item.to_dict()) return result @classmethod def search_user(cls, keyword): result = [] if not keyword: return result name_filter = Q(employee_name__contains=keyword) email_filter = Q(email__contains=keyword) queryset = cls.objects.filter(name_filter | email_filter).limit(10) for item in queryset: result.append(item.to_dict()) return {'users': result} @classmethod def staff_status(cls, id): try: is_staff = bool(cls.objects.get(employee_id=str(id), status=True)) except DoesNotExist as e: is_staff = False except Exception as e: is_staff = False return {'is_staff': is_staff} @classmethod def _query(cls, method, params): method_map = { 'search-by-accountids': cls.get_users, 'is-staff': cls.staff_status, 'search-user': cls.search_user } func = method_map.get(method) if not func: raise Exception(f'unmatched query method: {method}') return func(**params)
class UserEmail(EmbeddedDocument): email = StringField() primary_email = BooleanField() verified = BooleanField()
class K8sCluster(DynamicEmbeddedDocument): api_url = StringField(required=True) token = StringField(required=True) namespace = StringField(default="default") gateway = ListField() creator = ReferenceField(User)
class UserProfile(DynamicEmbeddedDocument): address = StringField() age = IntField(min_value=1) career = StringField() career_type = StringField() gender = IntField() # 0:women 1:man notes = StringField() # a short activity or mood phone = StringField(max_length=20) qq = StringField() real_name = StringField(max_length=80) self_introduction = StringField() skype = StringField() wechat = StringField() weibo = StringField() avatar_url = URLField() # high priority than avatar_url in User
class NetworkConfigTemplate(HDocumentBase): """ Network config for generate K8s yml""" name = StringField(required=True, unique=True) protocol = StringField() port = IntField(max_value=65535)
class Person(Document): name = StringField() age = IntField() meta = {"allow_inheritance": True}
class HackathonStat(HDocumentBase): type = StringField() # class HackathonStat count = IntField(min_value=0) hackathon = ReferenceField(Hackathon)
class B(Document): b = StringField() meta = {"allow_inheritance": True, "indexes": ["b"]}
class TeamWork(EmbeddedDocument): id = UUIDField(required=True) description = StringField() type = IntField(required=True) # see TeamShowType uri = StringField() create_time = DateTimeField(default=get_now())
class DataDoc(Document): name = StringField() embed = EmbeddedDocumentField(EmbedData) meta = {"allow_inheritance": True}
class TeamScore(EmbeddedDocument): type = IntField(default=0) score = IntField(required=True, min_value=0) reason = StringField() score_date = DateTimeField(default=get_now()) judge = ReferenceField(User)
class Animal(FinalDocument): name = StringField()
class DockerContainer(DynamicEmbeddedDocument): name = StringField(required=True, unique=True) image = StringField() container_id = StringField() host_server = ReferenceField(DockerHostServer) port_bindings = EmbeddedDocumentListField(PortBinding, default=[])
class Home(Document): dad = ReferenceField( AbstractHuman) # Referencing the abstract class address = StringField()
class AzureEndPoint(DynamicEmbeddedDocument): name = StringField() protocol = StringField() public_port = IntField() private_port = IntField() url = StringField()
class City(Document): continent = StringField() meta = {"abstract": True, "allow_inheritance": False}
class DomTree(EmbeddedDocument): # 保存网页dom树 update_time = StringField() # 更新时间,格式化字符串 dom_nodes = ListField(EmbeddedDocumentField(DomNode)) tree_hash = StringField()