class Search(Document): site_code = fields.IntField(required=True) search_word = fields.StringField(required=True) related_word = fields.ListField(fields=fields.ListField()) total_sentence_count = fields.IntField(required=True) positive = fields.FloatField(required=True, default=0.0) negative = fields.FloatField(required=True, default=0.0)
class CharacterSheet(mongoengine.Document): name = fields.StringField() description = fields.StringField() hit_points = fields.IntField() level = fields.IntField() experience = fields.LongField() strength = fields.FloatField() dexterity = fields.FloatField() constitution = fields.FloatField() inteligence = fields.FloatField() wisdom = fields.FloatField() charisma = fields.FloatField() armor_class = fields.FloatField() fortitude = fields.FloatField() reflex = fields.FloatField() will = fields.FloatField() race = fields.StringField() klass = fields.StringField() skills = fields.ListField(fields.StringField()) items = fields.ListField(fields.StringField()) owner = fields.StringField() # race = fields.ReferenceField('Race') # klass = fields.ReferenceField('Klass') # skills = fields.ListField(fields.ReferenceField('Skill')) # items = fields.ListField(fields.ReferenceField('Item')) # owner = fields.ReferenceField('User') def restore(self, memento): """ Restores the Originator's state from a memento object. """ self.hit_points = memento.get_hit_points() self.update()
class Analysis(Document): meta = { "db_alias": "stream_db" } tweet_id = fields.IntField() text = fields.StringField() clean_text = fields.ListField() user_name = fields.StringField() user_id = fields.IntField() user_screen_name = fields.StringField() user_location = fields.StringField() user_created_at = fields.DateTimeField() user_description = fields.StringField() user_followers_count = fields.IntField() user_friends_count = fields.IntField() user_statuses_count = fields.IntField() user_favourites_count = fields.IntField() create_date = fields.DateTimeField() create_date_timestamp_ms = fields.IntField() source = fields.StringField() media_type = fields.DynamicField() is_quote_status = fields.BooleanField() retweet_count = fields.IntField() favorite_count = fields.IntField() user_mentions = fields.ListField() hashtags = fields.ListField()
class Professional(User): specialties = fields.ListField(fields.ReferenceField(Specialty, required=True), required=True) insurances = fields.ListField(fields.ReferenceField(Insurance, required=True), required=True) rating = fields.IntField(min_value=0, max_value=5) address = fields.EmbeddedDocumentField(Address, required=True) def to_dict(self): result = super(Professional, self).to_dict() result['address'] = self.address.to_dict() result['rating'] = self.rating result['specialties'] = [] for specialty in self.specialties: result['specialties'].append(specialty.to_dict()) result['insurances'] = [] for insurance in self.insurances: result['insurances'].append(insurance.to_dict()) return result def get_role(self): return 'professional' @classmethod def get_all(cls): result = [] for professional in cls.objects: result.append(professional.to_dict()) return result
class Unidades_Privadas(Document): PROPIEDAD_ID = fields.LazyReferenceField('Propiedades_Horizontales', passthrough=False, dbref=False) IDENTIFICADOR = fields.StringField(required=True) GRUPO = fields.StringField(required=True) MATRICULA_INMOBILIARIA = fields.StringField(required=True) AREA_PRIVADA = fields.FloatField() AREA_COMUN = fields.FloatField() AREA_CONSTRUIDA = fields.FloatField() ESTADO_UNIDAD = fields.StringField(required=True) HABITACIONES = fields.IntField() BAÑOS = fields.IntField() CANTIDAD_PARQUEADEROS = fields.IntField() MAXIMO_AUTOS = fields.IntField() MAXIMO_MOTOS = fields.IntField() COEFICIENTE_COPROPIEDAD = fields.FloatField() ESTADO_CARTERA = fields.StringField() RESIDENTES = fields.ListField(fields.EmbeddedDocumentField(ResidenteField)) PARQUEADEROS = fields.ListField(fields.StringField()) VEHICULOS_PERMANENTES = fields.ListField( fields.EmbeddedDocumentField(VehiculoPermanenteField)) VEHICULOS_TEMPORALES = fields.ListField( fields.EmbeddedDocumentField(VehiculoTemporalField)) PROPIETARIO = fields.EmbeddedDocumentField(PropietarioField) ESTADO_CUENTA = fields.EmbeddedDocumentField(EstadoCuentaField) HABILITADO = fields.BooleanField()
class Tables(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") columns = fields.ListField(fields.StringField(), required=True, help_text="column names") data = fields.ListField(fields.ListField(fields.StringField()), required=True, help_text="table rows") config = fields.DictField(help_text="graph config") meta = { 'collection': 'tables', 'indexes': [ 'identifier', 'project', 'cid', 'name', { 'fields': ['cid', 'name'], 'unique': True } ] }
class Tweet(Document): """ Tweet database model, holding some basic information which we really need for applying a data mining algorithm on a topic's positivity. It can be built from a raw tweet (from Twitter's API), using the make_tweet() helper, or the from_raw_tweet() classmethod. """ topic = fields.ReferenceField(Topic, required=True) tweet_id = fields.IntField() status = fields.StringField() hashtags = fields.ListField(fields.StringField()) user = fields.StringField() location = fields.ListField(fields.FloatField()) polarity = fields.FloatField() def clean(self): if len(self.location) > 0 and len(self.location) != 2: msg = 'Location should be either empty or (x, y) position' raise ValidationError(msg) @classmethod def from_raw_tweet(self, data): return make_tweet(data) def __str__(self): return '<@%s> - "%s"' % (self.user, self.status) __repr__ = __str__
class Role(Document, MongoMixin): meta = { 'indexes': [], 'allow_inheritance': False, 'db_alias': 'iu-demo', 'force_insert': True, } name = f.StringField(primary_key=True) description = f.StringField() parents = f.ListField(f.StringField()) permissions = f.ListField(f.EmbeddedDocumentField('Permission')) def get_permissions(self): plist = list(self.permissions) parents = Role.objects.filter(name__in=self.parents) for r in parents: permissions = r.get_permissions() for p in permissions: if p not in plist: plist.append(p) return plist def to_json_dict(self, fields=None): ret = { 'name': self.name, 'description': self.description, 'parents': [str(p) for p in self.parents], 'permissions': [p.to_json_dict() for p in self.permissions], 'permissions_all': [p.to_json_dict() for p in self.get_permissions()] } if fields is not None: ret = {k: v for k, v in ret.items() if k in fields} return ret
class Activity(Document): url_number = fields.IntField() name = fields.StringField(verbose_name=u'活动名称') detail = fields.StringField(verbose_name=u'活动详情') creator = fields.GenericReferenceField() # 发起社团 start_time = fields.DateTimeField() finish_time = fields.DateTimeField() place = fields.StringField(verbose_name=u'活动地点') max_student = fields.IntField() # 人数上限 pay = fields.IntField(verbose_name=u'人均花费') who_likes = fields.ListField( fields.ReferenceField(Student, reverse_delete_rule=PULL)) # 喜欢活动的人 who_entered = fields.ListField( fields.ReferenceField(Student, reverse_delete_rule=PULL)) # 参加这个活动的人 clicks = fields.IntField() # 点击数 is_active = fields.BooleanField() def description(self): return self.creator.corporation.name + "发起了" + self.name def is_started(self): # 判断是否已经开始 if self.finish_time < datetime.datetime.now(): return True else: return False def get_reply(self): from reply.models import Reply return Reply.objects(target=self)
class Usuario(Document): usuario = fields.StringField(required=True, max_length=30) email = fields.EmailField(required=True, max_length=150) nombre = fields.StringField(max_length=50) password = fields.StringField(required=True, min_length=8) imagen = fields.URLField(required=False) descripcion = fields.StringField(max_length=500) listaSeguidores = fields.ListField(fields.ReferenceField('Usuario')) listaSeguidos = fields.ListField(fields.ReferenceField('Usuario')) listaPublicaciones = fields.ListField(fields.ReferenceField('Publicacion')) listaComentariosPublicaciones = fields.ListField( fields.ReferenceField('Publicacion')) listaGraffitisPublicaciones = fields.ListField( fields.ReferenceField('Publicacion')) def delete(self, *args, **kwargs): for publicacion in self.listaComentariosPublicaciones: comentarios = publicacion.listaComentarios for comentario in comentarios: if comentario.autor == self: publicacion.__class__.objects.update( pull__listaComentarios=comentario) for publicacion in self.listaGraffitisPublicaciones: graffitis = publicacion.listaGraffitis for graffiti in graffitis: if graffiti.autor == self: publicacion.__class__.objects.update( pull__listaGraffitis=graffiti) super().delete()
class BasicStructure(EmbeddedDocument): main_tag = fields.EmbeddedDocumentListField(ATag) color = fields.EmbeddedDocumentListField(ColorModel) people = fields.EmbeddedDocumentField(PeopleTag, default=PeopleTag()) location = fields.ListField() emotion_tag = fields.StringField(default="") deduction = fields.ListField()
class ChargeStation(Document): meta = { "indexes": [ 'network', 'locationId', ] } id = fields.IntField(required=True, primary_key=True) network = fields.ReferenceField(Network) locationId = fields.IntField(required=True) name = fields.StringField(required=True, max_length=200) #0 = Unknown #1 = Free #2 = Fee cost = fields.IntField() cost_description = fields.StringField(max_length=1000) address = fields.StringField(max_length=300) available = fields.IntField(required=True) hours = fields.StringField(max_length=400) geoLocation = fields.PointField(auto_index=True) score = fields.FloatField(min_value=0, max_value=10.0, required=True) images = fields.ListField(fields.URLField()) chargePoints = fields.ListField(fields.ReferenceField(ChargePoint)) created_at = fields.DateTimeField() modified_at = fields.DateTimeField(default=datetime.datetime.utcnow())
class LogicQuestion(Document): text = fields.StringField(required=True) imgs = fields.ListField(fields.StringField()) alternatives = fields.ListField(fields.StringField(), required=True) answer = fields.IntField(required=True) level = fields.IntField(required=True) time = fields.IntField(required=True)
class Race(BaseDocument): meta = {'collection': 'mop_races'} name = fields.StringField(required=True) description = fields.StringField(required=True) restrictions = fields.ListField(fields.ReferenceField('Skill'), required=False) exclusive_skills = fields.ListField(fields.ReferenceField('Skill'), required=False)
class Player(Document): name = fields.StringField(required=True, null=False) photo_url = fields.StringField(required=True, null=True) positions = fields.ListField(fields.StringField(required=True, null=True)) age = fields.StringField(required=True) birth_date = fields.StringField(required=True) height = fields.IntField(required=True) weight = fields.IntField(required=True) overall_rating = fields.IntField(required=True) potential = fields.IntField(required=True) value = fields.StringField(required=True) wage = fields.StringField(required=True) preferred_foot = fields.StringField(required=True) international_reputation = fields.IntField(required=True) weak_foot = fields.IntField(required=True) skill_moves = fields.IntField(required=True) work_rate = fields.StringField(required=True) body_type = fields.StringField(required=True) real_face = fields.StringField(required=True) release_clause = fields.StringField(default='0') player_hashtags = fields.ListField( fields.StringField(required=True, null=True)) social = fields.EmbeddedDocumentField(PlayerSocial) skills = fields.EmbeddedDocumentField(PlayerSkills) player_traits = fields.ListField(fields.StringField(null=True), null=True)
class EmployeeMessages(Document): email_to = fields.ListField(fields.EmailField()) name_to = fields.ListField(fields.StringField()) email_from = fields.EmailField() name_from = fields.StringField() message = fields.StringField() file = fields.StringField()
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 MessageDocument(Document): text = fields.StringField(required=False) images = fields.ListField( fields.ImageField(collection_name='message_images'), required=False) document = fields.FileField(collection_name='message_documents', required=False) session = fields.ReferenceField(document_type=SessionDocument, required=True) room = fields.ReferenceField(document_type=ChatRoomDocument, required=True) seen_by = fields.ListField( fields.ReferenceField(document_type=SessionDocument), required=False) created_at = fields.DateTimeField(required=False) meta = {'collection': 'messages', 'ordering': ['-created_at']} @classmethod def set_timings(cls, sender, document, **kwargs): """ Set Created and expiration at on Save :param sender: :param document: :param kwargs: :return: """ document.created_at = datetime.utcnow()
class CalendarAcl(EmbeddedDocument): """A calendar ACL""" rules = fields.ListField(fields.EmbeddedDocumentField("CalendarAclRule"), required=True) read_list = fields.ListField(MultipleReferencesField(document_types=['VosaeUser', 'VosaeGroup']), required=True) write_list = fields.ListField(MultipleReferencesField(document_types=['VosaeUser', 'VosaeGroup'])) negate_list = fields.ListField(MultipleReferencesField(document_types=['VosaeUser', 'VosaeGroup'])) def genere_rw_list(self): """ Generate a R/W list based on the rules. """ self.read_list = [] self.write_list = [] self.negate_list = [] for rule in self.rules: if rule.role is 'NONE': self.negate_list.append(rule.principal) continue if rule.role in CalendarAclRule.READER_ROLES: self.read_list.append(rule.principal) if rule.role in CalendarAclRule.WRITER_ROLES: self.write_list.append(rule.principal) def get_owner(self): from core.models import VosaeUser for rule in self.rules: if rule.role == 'OWNER' and isinstance(rule.principal, VosaeUser): return rule.principal raise ValueError('Calendar has no user owner')
class InvoicingSettings(EmbeddedDocument): """A wrapper to Invoicing's module settings.""" TAXES_APPLICATION = TAXES_APPLICATION PAYMENT_TYPES = PAYMENT_TYPES PAYMENT_CONDITIONS = PAYMENT_CONDITIONS supported_currencies = fields.ListField(fields.ReferenceField("Currency")) default_currency = fields.ReferenceField("Currency", required=True) fy_start_month = fields.IntField(required=True, default=0, min_value=0, max_value=11) inv_taxes_application = fields.StringField(required=True, choices=TAXES_APPLICATION, default="EXCLUSIVE") quotation_validity = fields.IntField(required=True, default=30) payment_conditions = fields.StringField(required=True, choices=PAYMENT_CONDITIONS, default="CASH") custom_payment_conditions = fields.StringField() accepted_payment_types = fields.ListField( fields.StringField(choices=PAYMENT_TYPES), required=True, default=lambda: ["CHECK", "CASH", "CREDIT_CARD", "TRANSFER"]) late_fee_rate = fields.DecimalField() down_payment_percent = fields.DecimalField(required=True, default=lambda: Decimal("0")) automatic_reminders = fields.BooleanField(required=True, default=False) automatic_reminders_text = fields.StringField(max_length=1024) automatic_reminders_send_copy = fields.BooleanField(required=True, default=True) numbering = fields.EmbeddedDocumentField( "InvoicingNumberingSettings", required=True, default=lambda: InvoicingNumberingSettings())
class Goods(Document): source = fields.StringField(max_length=50) goods_id = fields.StringField(max_length=64) goods_url = fields.StringField(max_length=1024, unique=True) title = fields.StringField(max_length=1024) goods_type = fields.StringField(max_length=50) country = fields.StringField(max_length=100) link = fields.StringField(max_length=1024) mobile_link = fields.StringField(max_length=1024) image_link = fields.StringField(max_length=1024) images = fields.ListField(fields.StringField(max_length=1024)) availability = fields.StringField(max_length=100) availability_date = fields.StringField(max_length=100) price = fields.StringField(max_length=100) sale_price = fields.FloatField() sale_price_effective_date = fields.StringField(max_length=100) brand = fields.StringField(max_length=100) material = fields.StringField(max_length=100) pattern = fields.StringField(max_length=100) shipping = fields.StringField(max_length=100) shipping_weight = fields.StringField(max_length=100) shipping_label = fields.StringField(max_length=100) multipack = fields.StringField(max_length=100) sku = fields.ListField(fields.EmbeddedDocumentField(Sku)) specs = fields.ListField(fields.EmbeddedDocumentField(Specs)) description = fields.StringField(max_length=1024) offer = fields.DateTimeField(Offer) price_history = fields.ListField( fields.EmbeddedDocumentField(PriceHistory)) pub_date = fields.DateTimeField(default=datetime.datetime.now)
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 Project(Document): name = fields.StringField(required=True) client = fields.ReferenceField(User, required=True) input_files = fields.ListField(required=True) data_files = fields.ListField(required=False) out_put_template = fields.ListField(required=False) status = fields.BooleanField(default=False) created_at = fields.DateTimeField(default=datetime.utcnow())
class Trainer(Document): user_id = fields.ReferenceField(User) student_ids = fields.ListField(fields.ReferenceField(Student)) workout_ids = fields.ListField(fields.ReferenceField(Workout)) def add_student(self, student_id): self.student_ids.append(student_id) self.save()
class Tag(Document): _id = fields.ObjectIdField() name = fields.StringField() description = fields.StringField() types = fields.StringField() difficulty = fields.IntField() book = fields.ReferenceField(Book) topic = fields.ListField(fields.ListField(fields.ReferenceField(Chapter)))
class DialogPreferences(fields.Document): owner = fields.IntField() # HermesUser.pk dialog_with_users = fields.ListField( fields.IntField(), # HermesUser.pk default=[]) dialogs = fields.ListField( fields.StringField(), # Dialog.pk default=[])
class Quest(Document): name = fields.StringField(unique = True, requied = True, allow_null = False) description = fields.StringField() quest_types = fields.ListField(fields.StringField()) start = fields.GeoPointField() rating = fields.FloatField() locations = fields.ListField() #тип не определён tags = fields.ListField(fields.StringField())
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 Workout(Document): name = fields.StringField() days = fields.ListField(fields.ListField(fields.EmbeddedDocumentField(Exercise))) def get_name_obj(self): return { "name": self.name, "id": str(self.id) }
class MusicPage(MusicWebsiteEntity): CONF_UPDATE_INTERVAL = 24 * 3600 _id = fields.IntField(primary_key=True) title = fields.StringField() artists = fields.ListField(fields.IntField()) n_artist = fields.IntField() genres = fields.ListField(fields.IntField()) n_genre = fields.IntField() meta = dict( collection="site_music_music", db_alias=Config.MongoDB.database, ) @property def music_id(self): return self._id def build_url(self): return url_builder.url_music_detail(self._id) def parse_response(self, url, request, response, html=None, **kwargs): if html is None: html = response.text soup = BeautifulSoup(html, "html.parser") div_detail = soup.find("div", id="detail") title = div_detail.find("div", class_="title").find("span").text artists = [ int(a["href"].split("/")[-1]) for a in div_detail.find("div", class_="artists").find_all("a") ] genres = [ int(a["href"].split("/")[-1]) for a in div_detail.find("div", class_="genres").find_all("a") ] entity = MusicPage(title=title, artists=artists, genres=genres) children = list() for artist_id in artists: children.append(ArtistPage(_id=artist_id)) for genre_id in genres: children.append(GenrePage(_id=genre_id)) status = Status.S50_Finished.id pres = ParseResult( entity=entity, children=children, data={}, status=status, ) return pres