class Photo(db.Document): ''' Stores basic meta-data for file uploaded to server. Photos are served using file_name field.''' file_name = db.StringField(required=True) file_type = db.StringField() created_at = db.DateTimeField(default=datetime.datetime.now, required=True) url = db.StringField() def __unicode__(self): return self.file_name def save(self, *args, **kwargs): if self.file_name: self.url = '/static/uploads' + self.file_name self.file_type = re.search(r'.*\.(.+)$', self.file_name, re.I).groups()[0] return super(Photo, self).save(*args, **kwargs) meta = { 'indexes': [{ 'fields': ['$file_name', '$file_type'], 'weights': { 'file_name': 10, 'file_type': 2 } }] }
class Post(db.Document): ''' Post document; see fields below. ''' title = db.StringField(max_length=120, required=True) slug = db.StringField() created_at = db.DateTimeField(default=datetime.datetime.now, required=True) author = db.ReferenceField(User_) published = db.BooleanField(default=False) tags = db.ListField(db.StringField(max_length=30)) index_background = db.ReferenceField(Photo) category = db.ReferenceField(Category) content = db.StringField(required=True) mark_delete = db.BooleanField(default=False) def save(self, *args, **kwargs): self.slug = re.sub('[^\w]+', '-', self.title.lower()) return super(Post, self).save(*args, **kwargs) meta = { 'indexes': [{ 'fields': ['$title', '$content'], 'weights': { 'title': 10, 'content': 2 } }] }
class User_(db.Document): email = db.StringField(required=True) password = db.StringField(max_length=40) first_name = db.StringField(max_length=40) last_name = db.StringField(max_length=40) def __unicode__(self): return self.first_name + ' ' + self.last_name
class Post(db.Document): title = db.StringField(max_length=150,required=True) date_posted = db.DateTimeField(default = datetime.utcnow()) content = db.StringField() image_file = db.StringField(max_length=50,required=True,default='post.jpg') author = db.ReferenceField(User,required=True) def __repr__(self): return f"Post('{self.title}','{self.date_posted}','{self.content}')"
class User_(db.Document): ''' Basic user model document. Represented by combo of first and last name.''' email = db.StringField(required=True) password = db.StringField(max_length=40) first_name = db.StringField(max_length=40) last_name = db.StringField(max_length=40) def __unicode__(self): return self.first_name + ' ' + self.last_name
class Category(db.Document): ''' Category document referenced by Post. ''' name = db.StringField(max_length=30) def __unicode__(self): return self.name
class Post(db.Document): created_at = db.DateTimeField(default=datetime.datetime.now, required=True) title = db.StringField(max_length=255, required=True) slug = db.StringField(max_length=255, required=True) body = db.StringField(required=True) comments = db.ListField(db.EmbeddedDocumentField('Comment')) def get_absolute_url(self): return url_for('post', kwargs={"slug": self.slug}) def __unicode__(self): return self.title meta = { 'allow_inheritance': True, 'indexes': ['-created_at', 'slug'], 'ordering': ['-created_at'] }
class User(db.Document, UserMixin): # query_class = UserModel email = db.StringField(max_length=30,required=True, primary_key=True) username = db.StringField(max_length=20,required=True) image_file = db.StringField(max_length=50,required=True,default='avata.jpg') password = db.StringField(max_length=100,required=True) def get_reset_token(self, expires_sec = 1800): s = Serializer(current_app.config['SECRET_KEY'], expires_sec) return s.dumps({'user_id': self.id}).decode('utf-8') @staticmethod def verify_reset_token(token): s = Serializer(current_app.config['SECRET_KEY']) try: user_id = s.loads(token)['user_id'] except: return None return User.objects.get(email=user_id) def __repr__(self): return f"User('{self.username}','{self.password}','{self.image_file}')"
class Image(Post): image_url = db.StringField(required=True, max_length=255)
class Video(Post): embed_code = db.StringField(required=True)
class BlogPost(Post): body = db.StringField(required=True)
class User(UserMixin, db.Document): meta = {"collection": "users"} username = db.StringField(required=True, max_length=32) email = db.StringField(required=True) password = db.StringField(required=True, max_length=255) profile_pic = db.StringField(default="default.png")
class Comment(db.Document): meta = {"collection": "comments"} author = db.ReferenceField(User) post = db.ReferenceField(Post) content = db.StringField(required=True, max_length=255) date = db.DateTimeField(required=True, default=datetime.utcnow)
class Comment(db.Document): post = db.ReferenceField(Post,required=True) author = db.ReferenceField(User,required=True) content = db.StringField(max_length=150,required=True) date_posted = db.DateTimeField(default = datetime.utcnow())
class Quote(Post): body = db.StringField(required=True) author = db.StringField(verbose_name="Autor", required=True, max_length=255)
class Comment(db.EmbeddedDocument): created_at = db.DateTimeField(default=datetime.datetime.now, required=True) body = db.StringField(verbose_name="Comentario", required=True) author = db.StringField(verbose_name="Nome", max_length=255, required=True)
class Comment(db.EmbeddedDocument): create_time = db.DateTimeField(default=datetime.datetime.now, required=True) body = db.StringField(verbose_name='Comnent', required=True) author = db.StringField(verbose_name='Name', max_length=255)