class Punishments(Document): meta = {'collection': 'punishments'} loser = ObjectIdField() video = URLField() image = URLField() iframe = URLField() description = StringField()
class UserInfo(EmbeddedDocument): nickname = StringField() avatar = URLField() location = StringField() gender = StringField() birth = DateTimeField() blog = URLField() site = URLField() intro = StringField() pf_intro = StringField() verified = BooleanField() vip = BooleanField() level_score = IntField() # 经验值 level = IntField() # 等级 email = EmailField() qq = StringField() msn = StringField() register_date = DateTimeField() n_follows = IntField() n_fans = IntField() n_msgs = IntField() is_person = BooleanField() edu = ListField(EmbeddedDocumentField(EduInfo)) work = ListField(EmbeddedDocumentField(WorkInfo)) tags = ListField(StringField())
class School(Document): code = IntField(required=True, primary_key=True) name = StringField(required=True) street = StringField(required=True) suburb = StringField(required=True) postcode = IntField(required=True) phone = StringField(required=True) email = EmailField(required=True) website = URLField(required=True) logo = URLField(required=False) fax = StringField(required=True) enrolments = IntField(required=True) level = StringField(required=True) opportunity_classes = BooleanField(requred=True) selective = StringField(required=True) gender = StringField(required=True) location = PointField(required=True) preschool = BooleanField(required=True) late_opening = BooleanField(required=True) intensive_english_centre = BooleanField(required=True) healthy_canteen = BooleanField(required=True) indigenous_pct = FloatField(required=True) lbote_pct = FloatField(required=True) icsea = IntField(required=True) support_classes = ListField(required=False) attendance_rate = FloatField(required=False) selective_entry_score = IntField(required=False) opportunity_classes_entry_score = IntField(required=False) train_station_id = StringField(required=False) train_station = StringField(required=False) train_distance = IntField(required=False) train_duration = IntField(required=False) meta = {'collection': 'schools'} def __init__(self, code, name, street, suburb, postcode, phone, email, website, fax, enrolments, level, opportunity_classes, selective, gender, location, preschool, late_opening, intensive_english_centre, healthy_canteen, indigenous_pct, lbote_pct, icsea, *args, **kwargs): super().__init__(*args, **kwargs) self.code = code self.name = name self.street = street self.suburb = suburb self.postcode = postcode self.phone = phone self.email = email self.website = website self.fax = fax self.enrolments = enrolments self.level = level self.opportunity_classes = opportunity_classes self.selective = selective self.gender = gender self.location = location self.preschool = preschool self.late_opening = late_opening self.intensive_english_centre = intensive_english_centre self.healthy_canteen = healthy_canteen self.indigenous_pct = indigenous_pct self.lbote_pct = lbote_pct self.icsea = icsea
class Article(Document): id = StringField() title = StringField() desc = StringField() link = URLField() imgUrl = URLField() time = DateTimeField()
class RubySecAdvisory(JsonifyMixin, ValidatedDocument): """ A RubySec Advisory """ meta = {'collection': 'rubysec'} source = URLField() title = StringField() description = StringField() url = URLField() cve = StringField() cvss_2 = StringField() osvdb = LongField() date = DateTimeField() gem = StringField() framework = StringField() patched_versions = ListField(StringField()) def get_hash_entry(self): entry = Hash() entry.group = 'ruby' entry.submitter = 'plugin.rubysec' entry.append_cves( ['CVE-%s' % (cve) for cve in self.cve.strip().split(',')]) return entry def save(self): # add/update a hash entry ValidatedDocument.save(self)
class Organization(DynamicEmbeddedDocument): id = UUIDField(required=True) name = StringField(required=True) description = StringField() homepage = URLField() logo = URLField() organization_type = IntField() # see OrganizationType : ORGANIZER = 1, PARTNER = 2
def validate_link(self): # not required field if not self.link: self.link = None return u = URLField() try: u.validate(self.link) except ValidationError: return "連結格式錯誤,需為有效網址"
class ProductInfo(Document): product_id = IntField() name = StringField() thumbnail = URLField() picture = URLField() description = StringField() supplier = StringField() meta = { 'indexes': ['product_id', 'supplier'], }
class Image(Document): room_id = StringField(required=True) event_id = StringField(required=True, unique_with='room_id') sender = StringField(required=True) timestamp = DateTimeField(required=True) image_url = URLField(required=True) thumbnail_url = URLField() small_thumbnail_url = URLField()
class NewsItem(Document): title = StringField(required=True) subtitle = StringField(required=True) refrence = StringField(max_length=100) content = StringField() publication_date = DateTimeField() news_code = IntField() category = StringField() tags = ListField(StringField(max_length=20)) pictures = ListField(URLField(max_length=20)) link = URLField()
class FilmModel(Document): """ 电影【模型】 """ title = StringField() # 电影标题 type = StringField() # 电影类型 play_num = StringField() # 播放量 like_num = StringField() # 喜欢数 img_cover = URLField() # 封面地址 play_address = URLField() # 播放地址 download_address = URLField() # 下载地址
class Product(Document): item_source = StringField(required=True, choices=["Maga", "Ecom", "Socl"]) img_url = URLField(required=True) product_url = URLField(required=True) tags_list = ListField(StringField) product_name = StringField() product_description = StringField() trending_score = IntField(required=True, default=0) product_ratings = DecimalField(required=True, default=0) product_num_ratings = IntField() product_num_reviews = IntField()
class Project(DocumentValidation): name = StringField(required=True) summary = StringField() coin_or_token = StringField(required=True) website = URLField(required=True) twitter = URLField(required=True) wikipedia = URLField() meta = { "collection": "project", "ordering": ["name"], }
class SearchResult(EmbeddedDocument): meta = {"collection": "results", "allow_inheritance": False} id = EmbeddedDocumentField(MemeId, db_field="_id", required=True, primary_key=True) name = StringField(required=True) title = StringField(required=True) caption = StringField(required=True) score = IntField(required=True) url = URLField(required=True) image = URLField(required=True) bm25 = FloatField(required=True, min_value=0.0)
class News(Document): _id = StringField(max_length=32, primary_key=True, required=True) url = URLField(required=True) image_url = URLField(required=False) publication_date = DateTimeField(required=True) title = StringField(max_length=256, required=True) description = StringField(required=True) language = StringField(max_length=5, required=True) is_public = BooleanField(required=True, default=True) meta = { 'collection': 'news', 'indexes': ['url', 'image_url', 'title', 'is_public'] }
class Khabar(Document): _id = ObjectIdField() title = StringField() link = URLField() description = StringField() img = URLField() date = DateTimeField() pubdate = DateTimeField() source = URLField() country = StringField() domain = URLField() category = StringField() lang = StringField() meta = {'collection': 'production', 'allow_inheritance': False}
class User(Document): """ Represents users. """ email = EmailField(unique=True, required=True) password = StringField(required=True) display_name = StringField(required=True, min_length=1, max_length=50) bio = StringField(max_length=160) avatar_url = URLField(required=True, default=__default_avatar_image_path__) created = DateTimeField(required=True, default=datetime.now) def serialize(self): """ Serialize user to JSON. """ # we don't want to expose the user's email or password return __delete_none__({ 'id': str(self.id), 'display_name': self.display_name, 'bio': self.bio, 'avatar_url': self.avatar_url, 'created': self.created })
class User(Document): # Values copied from the Google Account or input by code. I recommend NOT editing the values in these fields # because you can't edit them in their origins. Instead, I created copies of the fields that I want to give # the user the ability to edit. # First four fields are the user's first name, last name, email and Google ID # that are copied from Google in the User.py routes file. gfname = StringField() glname = StringField() # Mongoengine has several field types like email field that enable you to varify that what the user put in is actually # that type of data like EmailField() below. email = EmailField() # unique is a parameter that is possible on all fields. it is false by default. If you want to make sure that each # vlaue in a field is unique that you need to set this to True. In this case gid is the users googleID and no two # users can have the same gid. gid = StringField(unique=True) # The role value is enterred by the code in the user.py routes based on if the user's email as an 's_' at the beginning. # The roles are "teacher" or "Student" role = StringField() # In the users.py file there is a python list of email addresses of people designated to be "admins" of this app. # so that user has some special privleges. admin = BooleanField() # The following values are all set in the users.py file. these fields can all be edited by the user in the edit profile function. pronouns = StringField() fname = StringField() lname = StringField() # URLField() holds a URL or a link to a webpage image = URLField() # DateField() holds just a date. There is also a DateTimeField() birthdate = DateField() # This is how you set the default sorting. You can also sort records after you retreive them in the route. meta = {'ordering': ['+lname', '+fname']}
class Post(Document): external_id = IntField() title = StringField() url = URLField() created = DateTimeField() meta = {'collection': 'posts'}
class EntityLink(Document): name = StringField(required=True) mid = StringField() wikipedia_url = URLField(unique=True) wikipedia_id = StringField() bing_id = StringField() wikipedia_language = StringField()
class PressRelease(Document): _id = StringField(max_length=32, primary_key=True, required=True) journal = ReferenceField(Journal, reverse_delete_rule=CASCADE) issue = ReferenceField(Issue, reverse_delete_rule=CASCADE) article = ReferenceField(Article, reverse_delete_rule=CASCADE) title = StringField(max_length=512, required=True) language = StringField(max_length=5, required=True) content = StringField(required=True) doi = StringField(max_length=256) url = URLField(required=True) publication_date = DateTimeField(required=True) created = DateTimeField() updated = DateTimeField() meta = { 'collection': 'pressrelease', 'indexes': [ 'journal', 'issue', 'article', ] } def __unicode__(self): return self.title or 'PressRelease: %s' % self._id
class User(Document): username = StringField(unique=True) email = EmailField(unique=True) password = StringField() # add encryption. created = DateTimeField() verified = BooleanField() avatar = URLField()
class Posting(Document): meta = {'collection': 'postings'} data_id = StringField(required=True, unique=True, max_length=20) url = URLField(required=True) latitude = FloatField() longitude = FloatField()
class Song(Document): artist = ReferenceField(Artist) name = StringField(required=True, unique=True, max_length=200) duration = StringField(required=True) size = StringField(required=False, default='0 Mb') download_url = URLField(required=True) audio_file = FileField(required=False) created_at = DateTimeField(default=datetime.now()) meta = {'queryset_class': CustomQuerySet} def to_json(self, *args, **kwargs): media = kwargs.pop('media', '') data = self.to_mongo() if media: song_name = '-'.join(re.split("[, \-!?:]+", self.name)) file_name = os.path.join(AUDIO, '{}-{}.{}'.format(song_name, DATE, 'mp3')) with open(file_name, 'wb') as song_file: song_file.write(self.audio_file.read()) data['audio_file'] = file_name else: data.pop('audio_file') data['artist'] = self.artist.name data['created_at'] = data['created_at'].strftime(TIME_FORMAT) data.pop('_id') return json_util.dumps(data, *args, **kwargs)
class UserInfo(EmbeddedDocument): nickname = StringField() location = StringField() sex = BooleanField() birth = StringField() blog = URLField() site = URLField() intro = StringField() email = EmailField() qq = StringField() msn = StringField() edu = ListField(EmbeddedDocumentField(EduInfo)) work = ListField(EmbeddedDocumentField(WorkInfo)) tags = ListField(StringField())
class LastfmAccount(ServiceAccount): session_key = StringField() url = URLField() name = StringField() gender = StringField(max_length=1) country = StringField(max_length=2) lang = StringField(max_length=10) realname = StringField() subscriber = BooleanField() playcount = IntField() playlists = IntField() image = ListField() service_name = 'Last.fm' def get_username(self): return self.name def get_picture(self): for img in self['image']: if img['size'] == 'medium': return img['#text'] def get_url(self): return self.url
class Recording(Document): name = StringField(required=True, unique=True) tracks = ListField(ReferenceField(Track)) artists = ListField(ReferenceField(Artist)) version = StringField() description = StringField() play_time = StringField() lyrics = StringField() language = StringField() youtube_link = URLField() web_page = URLField() genres = ListField(ReferenceField(Genre)) associations = ListField(ReferenceField(Association)) def __str__(self): return self.name
class LastfmAccount(ServiceAccount): session_key = StringField() url = URLField() name = StringField() gender = StringField(max_length=1) country = StringField(max_length=2) lang = StringField(max_length=10) realname = StringField() subscriber = BooleanField() playcount = IntField() playlists = IntField() image = ListField() service_name = 'Last.fm' def get_username(self): return self.name def get_picture(self): for img in self['image']: if img['size'] == 'medium': tmpimg = img['#text'] if tmpimg == '': tmpimg = 'http://cdn.last.fm/flatness/responsive/2/noimage/default_user_60_g1.png' return tmpimg def get_url(self): return self.url
class Article(ExtendedDocument): # primary fields title = StringField() url = URLField(unique=True) timestamp = DateTimeField() # additional fields overall_status = StringField() recruiting_status = StringField() sex = ListField(StringField(), default=["male", "female"]) target_disease = StringField() intervention = StringField() sponsor = StringField() summary = StringField() location = StringField() location_data = ReferenceField(Location) institution = StringField() contact = EmbeddedDocumentField(Identity) location_data = ObjectIdField() # optional fields sample_size = IntField() abandoned = BooleanField() abandoned_reason = StringField() # default sort timestamp descending meta = { "ordering": ["-timestamp"], "strict": False, } def __str__(self): return self.url # PATCH: match smart_update by url instead of id # https://mongoengine-mate.readthedocs.io/_modules/mongoengine_mate/document.html#ExtendedDocument.smart_update @classmethod def _smart_update(cls, obj, upsert=False): """ Update one document, locate the document by url, then only update the field defined with the ExtendedDocument instance. None field is ignored. :type obj: ExtendedDocument :rtype: int :return: 0 or 1, number of document been updated """ if isinstance(obj, cls): dct = obj.to_dict(include_none=False) url_field_name = cls.url.name if url_field_name in dct: dct.pop(url_field_name) return cls.objects(__raw__={ "url": obj.url }).update_one(upsert=upsert, **dct) else: # pragma: no cover raise TypeError
class Hotel(Document): id = IntField() name = StringField(max_length=200) test = BooleanField(default=True) target_area = StringField(required=False, max_length=1, choices=AREAS) selection = StringField(required=False, choices=OPTIONS) district = StringField(required=False) postal_code = StringField(required=False) address = MultiLineStringField(required=False) web = URLField(required=False) stars = StringField(choices=STARS) management = StringField(choices=MANAGEMENT, default=N_I) brand_name = StringField(default=N_I) typology = StringField(choices=TYPOLOGY, default=N_I) segment_style = StringField(choices=SEGMENT, default=N_I) m2_built = IntField(required=False) m2_built_per_hab = DecimalField(required=False) pax_beds = IntField(required=False) rooms = IntField(required=False) std = IntField(required=False) dis = IntField(required=False) sin = IntField(required=False) exe = IntField(required=False) js = IntField(required=False) sui = IntField(required=False) psui = IntField(required=False) ap = IntField(required=False) num_salas = IntField(required=False) m2_salas = IntField(required=False) salas_pax = IntField(required=False) business_center = StringField(required=False, choices=OPTIONS) restaurante = IntField(required=False) bar = IntField(required=False) fitness = StringField(required=False, choices=OPTIONS) belleza = StringField(required=False, choices=OPTIONS) sauna_turco = StringField(required=False, choices=OPTIONS) pool_interior = StringField(required=False, choices=OPTIONS) pool_exterior = StringField(required=False, choices=OPTIONS) terraza_azotea = StringField(required=False, choices=OPTIONS) parking = StringField(required=False, choices=OPTIONS) sellos_calidad_sostenibilidad = StringField(required=False) additional_services = StringField(required=False) points_bk = DecimalField(required=False) ta_rank = IntField(required=False) total_rank = IntField(required=False) points_ta = DecimalField(required=False) q_reviews = IntField(required=False) price_booking = IntField(required=False) price_min_ta = IntField(required=False) price_max_ta = IntField(required=False) price_bar_per_2 = IntField(required=False) price_band = IntField(required=False) notas = MultiLineStringField(required=False) created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) description = models.TextField(default="") def __unicode__(self): # 0 param method return self.name