Exemple #1
0
class Draft(db.Document):
    title = db.StringField(max_length=255, default='new blog', required=True)
    slug = db.StringField(max_length=255, required=True, unique=True)
    # fix_slug = db.StringField(max_length=255, required=False)
    abstract = db.StringField()
    raw = db.StringField(required=True)
    pub_time = db.DateTimeField()
    update_time = db.DateTimeField()
    content_html = db.StringField(required=True)
    author = db.ReferenceField(User)
    category = db.StringField(max_length=64, default='default')
    tags = db.ListField(db.StringField(max_length=30))
    is_draft = db.BooleanField(default=True)
    post_type = db.StringField(max_length=64, default='post')
    weight = db.IntField(default=10)

    def save(self, *args, **kwargs):
        now = datetime.datetime.utcnow()
        if not self.pub_time:
            self.pub_time = now
        self.update_time = now
        self.content_html = markdown2.markdown(
            self.raw, extras=['code-friendly', 'fenced-code-blocks', 'tables'])
        self.content_html = get_clean_html_content(self.content_html)
        return super(Draft, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.title

    meta = {
        'allow_inheritance': True,
        'indexes': ['slug'],
        'ordering': ['-update_time']
    }
Exemple #2
0
class Widget(db.Document):
    title = db.StringField(default='widget')
    md_content = db.StringField()
    html_content = db.StringField()
    allow_post_types = db.ListField(db.StringField())
    priority = db.IntField(default=1000000)
    update_time = db.DateTimeField()

    def save(self, *args, **kwargs):
        if self.md_content:
            self.html_content = markdown2.markdown(
                self.md_content,
                extras=['code-friendly', 'fenced-code-blocks', 'tables'])

        self.html_content = get_clean_html_content(self.html_content)

        if not self.update_time:
            self.update_time = datetime.datetime.utcnow()

        return super(Widget, self).save(*args, **kwargs)

    def __unicode__(self):
        return self.title

    meta = {
        # 'allow_inheritance': True,
        'ordering': ['priority']
    }
Exemple #3
0
class Post(db.Document):
    title = db.StringField(max_length=255, default='new blog', required=True)
    slug = db.StringField(max_length=255, required=True, unique=True)
    fix_slug = db.StringField(max_length=255, required=False)
    abstract = db.StringField()
    raw = db.StringField(required=True)
    pub_time = db.DateTimeField()
    update_time = db.DateTimeField()
    content_html = db.StringField(required=True)
    author = db.ReferenceField(User)
    category = db.StringField(max_length=64)
    tags = db.ListField(db.StringField(max_length=30))
    is_draft = db.BooleanField(default=False)
    post_type = db.StringField(max_length=64, default='post')

    def get_absolute_url(self):
        # return url_for('main.post_detail', slug=self.slug)

        router = {
            'post':
            url_for('main.post_detail', slug=self.slug, _external=True),
            'page':
            url_for('main.page_detail', slug=self.slug, _external=True),
            'wechat':
            url_for('main.wechat_detail', slug=self.slug, _external=True),
        }

        return router[self.post_type]

    def save(self, allow_set_time=False, *args, **kwargs):
        if not allow_set_time:
            now = datetime.datetime.now()
            if not self.pub_time:
                self.pub_time = now
            self.update_time = now
        # self.content_html = self.raw
        self.content_html = markdown2.markdown(
            self.raw, extras=['code-friendly', 'fenced-code-blocks',
                              'tables']).encode('utf-8')
        return super(Post, self).save(*args, **kwargs)

    def set_post_date(self, pub_time, update_time):
        self.pub_time = pub_time
        self.update_time = update_time
        return self.save(allow_set_time=True)

    def __unicode__(self):
        return self.title

    meta = {
        'allow_inheritance': True,
        'indexes': ['slug'],
        'ordering': ['-pub_time']
    }