Beispiel #1
0
def genitem(file, is_post=0, is_page=0):
    data = rd(file).split('---\n')
    meta = MP(lyml(data[1]))
    if isinstance(meta.date, str): meta.date = str2date(meta.date)
    content = ''.join(data[2:])
    preview = content[0:min(len(content), config.index.preview)]
    if '<!-- more -->' in content:
        preview = content.split('<!-- more -->', 1)[0]
    name = file.stem
    x = MP(filename=name,
           assets=file.parent / file.stem,
           addr=name + '/',
           link=rt + name + '/',
           title=name,
           date=datetime.fromtimestamp(int(os.stat(file).st_mtime)),
           author=config.author,
           tags=[],
           categories=[],
           top=0,
           content=content,
           preview=preview,
           meta=meta)
    x.update(t_setting.defaut_front)
    x.update(meta)
    if is_post:
        if config.post_addr == 'pinyin': x.addr = 'posts/%s/' % toPinyin(name)
        elif config.post_addr == 'origin': x.addr = 'posts/%s/' % name

        if x.permalink: x.addr = 'posts/%s/' % x.permalink
        x.link = rt + x.addr

        if not x.layout: x.layout = 'post'
    if is_page and not x.layout: x.layout = 'page'
    return x
Beispiel #2
0
def apiEditPost(data):
    data['meta'] = del_none(lyml(data['meta']))
    if 'date' not in data['meta']:
        data['meta']['date'] = datetime.now().replace(microsecond=0)
    elif isinstance(data['meta']['date'], str):
        data['meta']['date'] = str2date(data['meta']['date'])
    data['meta'].update({
        'title': data['title'],
        'top': data['top'],
        'tags': data['tags'],
        'categories': data['categories']
    })

    file = Path('source/_posts/%s.md' % data['filename'])
    file.open('w', encoding='utf-8').write('---\n' + dyml(data['meta']) +
                                           '\n---\n' + data['content'])
    x = genitem(file, is_post=1)
    if 'pos' in data:
        post = posts[data['pos']]
        if post['filename'] != data['filename']: rmPost(post)
        posts[data['pos']] = x
    else:
        posts.append(x)
    postsUpd()
    mp[rt + x.addr] = x
    return {
        'pos': x.pos,
        'status': 'success',
        'redirect': data.get('pos') != x.pos
    }
Beispiel #3
0
def apiEditPost(data):
    data = MP(data)
    data.meta = MP(lyml(data.meta))
    if not data.meta.date:
        data.meta.date = datetime.now().replace(microsecond=0)
    elif isinstance(data.meta.date, str):
        data.meta.date = str2date(data.meta.date)
    data.meta.update(title=data.title,
                     top=data.top,
                     tags=data.tags,
                     categories=data.categories)
    file = Path('source/_posts/%s.md' % data.filename)
    file.open('w', encoding='utf-8').write('---\n' + dyml(dict(data.meta)) +
                                           '\n---\n' + data.content)
    x = genitem(file, is_post=1)
    if data.has('pos'):
        post = posts[data.pos]
        if post.filename != data.filename: rmPost(post)
        posts[data.pos] = x
    else:
        posts.append(x)
    postsUpd()
    mp[x.addr] = x
    return {'pos': x.pos, 'status': 'success', 'redirect': data.pos != x.pos}
Beispiel #4
0
chkDependences()

from jinja2 import Environment, FileSystemLoader, Template
from funcs import lyml, dyml, cp, del_none, str2date, rd, toPinyin, MP
from encrypt import encrypt


def op(path, data):
    if DEBUG: print(path)
    path = Dest / path
    if not path.suffix == '.html': path = path / 'index.html'
    path.parent.mkdir(parents=1, exist_ok=1)
    path.open('w', encoding='utf-8').write(data)


config = MP(lyml(rd('config.yml')))
tSrc = Path('theme/%s/' % config.theme)
dest = config.dest
Dest = Path(dest)
DEBUG = config.debug
rt = config.site.rt = urlparse(config.site.url).path
t_config = MP(lyml(rd(tSrc / 'config.yml')))
t_setting = MP(lyml(rd(tSrc / 'setting.yml')))

posts, pages = [], []
tags, categories = MP(), MP()
index, tags_index, categories_index = [], [], [],
urls = []
env, tpls = False, MP()
last_build_time = datetime.now().replace(microsecond=0)
Beispiel #5
0
chkDependences()

from jinja2 import Environment, FileSystemLoader, Template
from funcs import lyml, dyml, cp, del_none, str2date, rd, toPinyin, MP
from encrypt import encrypt


def op(path, data):
    if DEBUG: print(path)
    path = Dest / path
    if not path.suffix == '.html': path = path / 'index.html'
    path.parent.mkdir(parents=1, exist_ok=1)
    path.open('w', encoding='utf-8').write(data)


config = MP(lyml(rd('config.yml')))
dest = config.dest
Dest = Path(dest)
DEBUG = config.debug
rt = config.site.rt = urlparse(config.site.url).path
t_config = MP(lyml(rd('theme/%s/config.yml' % config.theme)))
t_setting = MP(lyml(rd('theme/%s/setting.yml' % config.theme)))

posts, pages = [], []
tags, categories = MP(), MP()
index, tags_index, categories_index = [], [], [],
urls = []
env, tpls = False, MP()
last_build_time = datetime.now().replace(microsecond=0)