Exemple #1
0
    def test_unpublish(self):
        _entry = self.add_draft()

        entry = Entry.update_status(_entry['id'], 'publish')
        entry = Entry.update_status(_entry['id'], 'draft')

        self.assertTrue(entry)
        self.assertEqual(entry['status'], 'draft')
Exemple #2
0
def show_entries():
    page = 1
    perpage = 5

    entries = Entry.get_page(page)
    total = Entry.get_length()

    return render_template('index.html', **locals())
Exemple #3
0
	def test_unpublish(self):
		_entry = self.add_draft()

		entry = Entry.update_status(_entry['id'], 'publish')
		entry = Entry.update_status(_entry['id'], 'draft')

		self.assertTrue(entry)
		self.assertEqual(entry['status'], 'draft')
Exemple #4
0
	def test_update_draft(self):
		_entry = self.add_draft()

		title = '秦皇岛'.decode('utf-8')
		content = '站在能分割世界的桥\
                   还是看不清 在那些时刻\
                   遮蔽我们 黑暗的心 究竟是什么\
                   住在我心里孤独的\
                   孤独的海怪 痛苦之王\
                   开始厌倦 深海的光 停滞的海浪\
                   站在能看到灯火的桥\
                   还是看不清 在那些夜晚\
                   照亮我们 黑暗的心 究竟是什么\
                   于是他默默追逐着\
                   横渡海峡 年轻的人\
                   看着他们 为了彼岸\
                   骄傲地 骄傲的 灭亡'.decode('utf-8')

		date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

		entry = Entry.update(title, content, _entry['id'])

		self.assertTrue(entry)
		self.assertEqual(entry['title'], title)
		self.assertEqual(entry['content'], content)
		self.assertEqual(entry['status'], 'draft')
Exemple #5
0
def build_posts():
    lookup = TemplateLookup(directories=['./fe/template'])
    template = Template(filename='./fe/template/entry.html', lookup=lookup)

    entries = Entry.get_all_published()

    for _entry in entries:
        post_title = _entry['title']
        post_content = markdown(_entry['content'])
        post_slug = _entry['slug']
        date = _entry['date']
        status = _entry['status']

        entry = dict(title=post_title,
                     content=post_content,
                     date=date,
                     id=_entry['slug'],
                     status=status)

        html_content = template.render(entry=entry)

        os.mkdir(os.path.join('./ghpages/posts', post_slug))

        dist = os.path.join('./ghpages/posts', post_slug + '/index.html')

        with codecs.open(dist, 'w', 'utf-8-sig') as f:
            f.write(html_content)
Exemple #6
0
def update_entry(id):
    title = request.form['title']
    content = request.form['content']

    _entry = Entry.update(title, content, id)

    name = _entry['slug']
    create_time = _entry['create_time']
    status = _entry['status']

    if status == 'draft':
        # delete old file
        os.remove(os.path.join('./summer/_draft/', name + '.md'))

        # create new file
        filepath = os.path.join('./summer/_draft/', name + '.md')
    else:
        # delete old file
        os.remove(os.path.join('./summer/post/', name + '.md'))

        # create new file
        filepath = os.path.join('./summer/post/', name + '.md')

    newfile = open(unicode(filepath, 'utf8'), 'w')

    newfile.write('title: \"' + title.encode('utf8') + '\"\n')
    newfile.write('date: ' + create_time + '\n')
    newfile.write('---' + '\n\n')
    newfile.write(content.encode('utf8'))
    newfile.write('\n')
    newfile.close()

    return jsonify(r=True)
Exemple #7
0
def save(id):
    title = request.form['title']
    content = request.form['content']

    _entry = Entry.save_entry(title, content, id)

    name = _entry['slug']
    date = _entry['date']
    status = _entry['status']

    if status == 'draft':
        filename = os.path.join('./summer/_draft/', name + '.md')
    else:
        filename = os.path.join('./summer/post/', name + '.md')

    open(filename, 'w').close()

    newfile = open(filename, 'w')

    meta = yaml.safe_dump({
        'title': title.encode('utf8'),
        'date': date,
        'tags': [''],
        'categories': ['']
    }, default_flow_style=False).replace('- ', '  - ')

    newfile.write(meta + '\n')
    newfile.write('---' + '\n\n')
    newfile.write(content.encode('utf8'))
    newfile.write('\n')
    newfile.close()

    return jsonify(r=True, id=id, status=status)
Exemple #8
0
def build_feed():
    feed = AtomFeed(SITE_NAME,
                    feed_url=DOMAIN + 'rss.xml',
                    url=DOMAIN,
                    subtitle=SUBTITLE,
                    author=AUTHOR,
                    updated=datetime.datetime.now())

    entries = Entry.get_all_published()

    for _entry in entries:
        time = datetime.datetime.strptime(_entry['date'], '%Y-%m-%d %H:%M:%S')

        feed.add(unicode(_entry['title']),
                 unicode(markdown(_entry['content'])),
                 content_type='html',
                 author=AUTHOR,
                 published=time,
                 updated=time,
                 id=DOMAIN + _entry['slug'] + '/',
                 url=DOMAIN + 'posts/' +  _entry['slug'] + '/'
                 )

    with codecs.open('./ghpages/rss.xml', 'w', 'utf-8-sig') as f:
        f.write(feed.to_string())
Exemple #9
0
    def add_draft(self):
        title = '十万嬉皮'.decode('utf-8')
        slug = slugify(title)
        content = '大梦一场 的董二千先生\
                   推开窗户 举起望远镜\
                   眼底映出 一阵浓烟\
                   前已无通路 后不见归途\
                   敌视现实 虚构远方\
                   东张西望 一无所长\
                   四体不勤 五谷不分\
                   文不能测字 武不能防身\
                   喜欢养狗 不爱洗头\
                   不事劳作 一无所获\
                   厌恶争执 不善言说\
                   终于沦为 沉默的帮凶\
                   借酒消愁 不太能喝\
                   蛊惑他人 麻醉内心\
                   浇上汽油 舒展眉头\
                   纵火的青年 迫近的时间\
                   大梦一场 的董二千先生\
                   推开窗户 举起望远镜\
                   眼底映出 一阵浓烟\
                   前已无通路 后不见归途'.decode('utf-8')

        date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

        return Entry.save_draft(title, content, date, slug)
Exemple #10
0
def build_feed():
    feed = AtomFeed(current_app.config['SITE_NAME'],
                    feed_url=current_app.config['DOMAIN'] + 'rss.xml',
                    url=current_app.config['DOMAIN'],
                    subtitle=current_app.config['SUBTITLE'],
                    author=current_app.config['AUTHOR'],
                    updated=datetime.datetime.now())

    entries = Entry.get_all_published()

    for _entry in entries:
        time = datetime.datetime.strptime(_entry['date'], '%Y-%m-%d %H:%M:%S')

        feed.add(unicode(_entry['title']),
                 unicode(markdown(_entry['content'])),
                 content_type='html',
                 author=current_app.config['AUTHOR'],
                 published=time,
                 updated=time,
                 id=current_app.config['DOMAIN'] + _entry['slug'] + '/',
                 url=current_app.config['DOMAIN'] + 'posts/' + _entry['slug'] +
                 '/')

    with codecs.open(BASE_DIR + '/rss.xml', 'w', 'utf-8-sig') as f:
        f.write(feed.to_string())
Exemple #11
0
def build_pages():
    lookup = TemplateLookup(directories=['./fe/template'])
    template = Template(filename='./fe/template/index.html', lookup=lookup)

    all_entries = Entry.get_all_published(True)
    length = len(all_entries)

    for page in range(1, int(math.ceil(length / float(5))) + 1):
        start = (page - 1) * 5
        end = start + 5

        entries = all_entries[start:end]

        html_content = template.render(entries=entries,
                                       total=length,
                                       page=page,
                                       perpage=5)

        page_path = os.path.join('./ghpages/page', str(page))

        try:
            os.mkdir(page_path)
        except OSError:
            pass

        dist = os.path.join(page_path, 'index.html')

        with codecs.open(dist, 'w', 'utf-8-sig') as f:
            f.write(html_content)
Exemple #12
0
	def add_draft(self):
		title = '十万嬉皮'.decode('utf-8')
		slug = slugify(title)
		content = '大梦一场 的董二千先生\
                   推开窗户 举起望远镜\
                   眼底映出 一阵浓烟\
                   前已无通路 后不见归途\
                   敌视现实 虚构远方\
                   东张西望 一无所长\
                   四体不勤 五谷不分\
                   文不能测字 武不能防身\
                   喜欢养狗 不爱洗头\
                   不事劳作 一无所获\
                   厌恶争执 不善言说\
                   终于沦为 沉默的帮凶\
                   借酒消愁 不太能喝\
                   蛊惑他人 麻醉内心\
                   浇上汽油 舒展眉头\
                   纵火的青年 迫近的时间\
                   大梦一场 的董二千先生\
                   推开窗户 举起望远镜\
                   眼底映出 一阵浓烟\
                   前已无通路 后不见归途'.decode('utf-8')

		date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

		return Entry.save_draft(title, content, date, slug)
Exemple #13
0
def build_posts():
    lookup = TemplateLookup(directories=['./fe/template'])
    template = Template(
        filename='./fe/template/entry.html', lookup=lookup)

    entries = Entry.get_all_published()

    for _entry in entries:
        post_title = _entry['title']
        post_content = markdown(_entry['content'])
        post_slug = _entry['slug']
        date = _entry['date']
        status = _entry['status']

        entry = dict(
            title=post_title,
            content=post_content,
            date=date,
            id=_entry['slug'],
            status=status
        )

        html_content = template.render(entry=entry)

        os.mkdir(os.path.join('./ghpages/posts', post_slug))

        dist = os.path.join('./ghpages/posts', post_slug + '/index.html')

        with codecs.open(dist, 'w', 'utf-8-sig') as f:
            f.write(html_content)
Exemple #14
0
def build_pages():
    lookup = TemplateLookup(directories=['./fe/template'])
    template = Template(
        filename='./fe/template/index.html', lookup=lookup)

    all_entries = Entry.get_all_published(True)
    length = len(all_entries)

    for page in range(1, int(math.ceil(length / float(5))) + 1):
        start = (page - 1) * 5
        end = start + 5

        entries = all_entries[start:end]

        html_content = template.render(
            entries=entries, total=length, page=page, perpage=5)

        page_path = os.path.join('./ghpages/page', str(page))

        try:
            os.mkdir(page_path)
        except OSError:
            pass

        dist = os.path.join(page_path, 'index.html')

        with codecs.open(dist, 'w', 'utf-8-sig') as f:
            f.write(html_content)
Exemple #15
0
def new():
    title = request.form['title']
    slug = slugify(title)
    content = request.form['content']
    date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

    entry = Entry.save_draft(title, content, date, slug)

    filepath = os.path.join('./summer/_draft/', slug + '.md')
    newfile = open(filepath, 'w')

    meta = yaml.safe_dump({
        'title': title,
        'date': date,
        'tags': [''],
        'categories': ['']
    }, default_flow_style=False).replace('- ', '  - ')

    newfile.write(meta + '\n')
    newfile.write('---' + '\n\n')
    newfile.write(content.encode('utf8'))
    newfile.write('\n')
    newfile.close()

    id = entry['id']

    return jsonify(r=True, id=id, status='draft')
Exemple #16
0
def build_feed():
    feed = AtomFeed(current_app.config['SITE_NAME'],
                    feed_url=current_app.config['DOMAIN'] + 'rss.xml',
                    url=current_app.config['DOMAIN'],
                    subtitle=current_app.config['SUBTITLE'],
                    author=current_app.config['AUTHOR'],
                    updated=datetime.datetime.now())

    entries = Entry.get_all_published()

    for _entry in entries:
        time = datetime.datetime.strptime(_entry['date'], '%Y-%m-%d %H:%M:%S')

        feed.add(unicode(_entry['title']),
                 unicode(markdown(_entry['content'])),
                 content_type='html',
                 author=current_app.config['AUTHOR'],
                 published=time,
                 updated=time,
                 id=current_app.config['DOMAIN'] + _entry['slug'] + '/',
                 url=current_app.config['DOMAIN'] + 'posts/' + _entry['slug'] + '/'
                 )

    with codecs.open(BASE_DIR + '/rss.xml', 'w', 'utf-8-sig') as f:
        f.write(feed.to_string())
Exemple #17
0
def edit_entry(id):
    _entry = Entry.get(id)

    post_title = _entry['title']
    post_content = _entry['content']
    slug = _entry['slug']
    status = _entry['status']

    return render_template('edit.html', **locals())
Exemple #18
0
def build_index():
    lookup = TemplateLookup(directories=['./fe/template'])
    template = Template(
        filename='./fe/template/index.html', lookup=lookup)

    page = 1
    perpage = 5
    entries = Entry.get_published_page(page)

    total = len(Entry.get_all_published())

    html_content = template.render(
        entries=entries, total=total, page=page, perpage=perpage)

    dist = os.path.join('./ghpages/', 'index.html')

    with codecs.open(dist, 'w', 'utf-8-sig') as f:
        f.write(html_content)
Exemple #19
0
def build_index():
    lookup = TemplateLookup(directories=['./fe/template'])
    template = Template(filename='./fe/template/index.html', lookup=lookup)

    page = 1
    perpage = 5
    entries = Entry.get_published_page(page)

    total = len(Entry.get_all_published())

    html_content = template.render(entries=entries,
                                   total=total,
                                   page=page,
                                   perpage=perpage)

    dist = os.path.join('./ghpages/', 'index.html')

    with codecs.open(dist, 'w', 'utf-8-sig') as f:
        f.write(html_content)
Exemple #20
0
def delete_entry(id):
    _entry = Entry.delete(id)

    name = _entry['slug']
    status = _entry['status']

    if status == 'draft':
        os.remove(os.path.join('./summer/_draft/', name + '.md'))
    else:
        os.remove(os.path.join('./summer/post/', name + '.md'))

    return jsonify(r=True)
Exemple #21
0
def publish_draft(id):
    status = request.form['status']

    entry = Entry.update_status(id, status)

    slug = entry['slug']

    draft_file = os.path.join('./summer/_draft/', slug + '.md')
    post_file = os.path.join('./summer/post/', slug + '.md')

    if status == 'publish':
        os.rename(draft_file, post_file)
    elif status == 'draft':
        os.rename(post_file, draft_file)

    return jsonify(r=True)
Exemple #22
0
    def test_update_draft(self):
        _entry = self.add_draft()

        title = '秦皇岛'.decode('utf-8')
        content = '站在能分割世界的桥\
                   还是看不清 在那些时刻\
                   遮蔽我们 黑暗的心 究竟是什么\
                   住在我心里孤独的\
                   孤独的海怪 痛苦之王\
                   开始厌倦 深海的光 停滞的海浪\
                   站在能看到灯火的桥\
                   还是看不清 在那些夜晚\
                   照亮我们 黑暗的心 究竟是什么\
                   于是他默默追逐着\
                   横渡海峡 年轻的人\
                   看着他们 为了彼岸\
                   骄傲地 骄傲的 灭亡'.decode('utf-8')

        entry = Entry.update(title, content, _entry['id'])

        self.assertTrue(entry)
        self.assertEqual(entry['title'], title)
        self.assertEqual(entry['content'], content)
        self.assertEqual(entry['status'], 'draft')
Exemple #23
0
def build_feed():
    feed = AtomFeed(SITE_NAME,
                    feed_url=DOMAIN + 'rss.xml',
                    url=DOMAIN,
                    subtitle=SUBTITLE,
                    author=AUTHOR,
                    updated=datetime.datetime.now())

    entries = Entry.get_all_published()

    for _entry in entries:
        time = datetime.datetime.strptime(_entry['date'], '%Y-%m-%d %H:%M:%S')

        feed.add(unicode(_entry['title']),
                 unicode(markdown(_entry['content'])),
                 content_type='html',
                 author=AUTHOR,
                 published=time,
                 updated=time,
                 id=DOMAIN + _entry['slug'] + '/',
                 url=DOMAIN + 'posts/' + _entry['slug'] + '/')

    with codecs.open('./ghpages/rss.xml', 'w', 'utf-8-sig') as f:
        f.write(feed.to_string())
Exemple #24
0
def pagination(page):
    perpage = 5
    entries = Entry.get_page(page)
    total = Entry.get_length()

    return render_template('index.html', **locals())
Exemple #25
0
def show_entry(id):
    entry = Entry.get(id)
    entry['content'] = markdown(entry['content'])

    return render_template('entry.html', **locals())