def update(user_id, local=False, rebuild=False): with db_session: u = model.BlogUser.get(user_id=user_id) if not u: abort(404, "bloguser %s not exists" % user_id) repo_url = u.article_repo old_commit = u.latest_commit gitname = u.gitname if rebuild: clear_db(gitname) old_commit = "" msg = "local" err = None if not local: __, owner, __ = gitutil.parse_giturl(repo_url) err, ret = update_local(repo_url, owner) msg = unicode(err) if err else ret if not err: mddir = get_mddir(repo_url) update_db(mddir, gitname, old_commit) logs = gitutil.git_log(mddir) if logs: latest_commit = logs[0][0] with db_session: u = model.BlogUser.get(user_id=user_id) u.latest_commit = latest_commit return err, msg
def test_git_log(): host, owner, repo = gitutil.parse_giturl(REPO_URL) t_en = gitutil.git_log(os.path.join(REPO_EN, repo)) t_cn = gitutil.git_log(os.path.join(REPO_CN, repo)) expect = [(u'e744949159ecea5a9f68a1715e8d1e4fafd87dea', u'guyskk', u'*****@*****.**', u'Sun Sep 27 15:24:39 2015 +0800', u'add md'), (u'1a1bba5d3c2a4958644e4bbfb1a4ebb8abfafd23', u'kk', u'*****@*****.**', u'Sun Sep 27 11:51:26 2015 +0800', u'Initial commit')] assert len(t_en) >= 2 assert t_en[-2:] == expect assert t_cn == t_en
def add_bloguser(user_id, role, article_repo=None): u = model.BlogUser.get(user_id=user_id) if u: raise ValueError("bloguser user_id=%s already exists" % user_id) try: __, gitname, __ = gitutil.parse_giturl(article_repo) except: raise ValueError("invalid article_repo: %s" % article_repo) now = datetime.now() config = dict(user_id=user_id, role=role, article_repo=article_repo, gitname=gitname, date_modify=now) u = model.BlogUser(date_create=now, **config)
def create_or_update_bloguser(user_id, role, article_repo, website): website = website or "" try: __, git_username, __ = gitutil.parse_giturl(article_repo) except: abort(400, "invalid article_repo: %s" % article_repo) user_id = unicode(user_id) config = dict(role=role, article_repo=article_repo, git_username=git_username, website=website, user_system="kkblog", user_id=user_id) with db_session: u = model.BlogUser.get(user_id=user_id) if not u: u = model.BlogUser(date_create=datetime.now(), **config) else: u.set(**config) return _out_user(u)
def get_mddir(repo_url, dest=None): if dest is None: dest = current_app.config["ARTICLE_DEST"] host, owner, repo = gitutil.parse_giturl(repo_url) return os.path.join(dest, owner, repo)
def test_parse_giturl(): for url in URLS.values(): host, owner, repo = gitutil.parse_giturl(url) assert (host, owner, repo) == ("github.com", "guyskk", "kkblog")
def test_modified_files(): host, owner, repo = gitutil.parse_giturl(REPO_URL) t_en = gitutil.modified_files(os.path.join(REPO_EN, repo), "1a1bba5d3") t_cn = gitutil.modified_files(os.path.join(REPO_CN, repo), "1a1bba5d3") assert t_cn == t_en