PythonからREDMINEのWIKIにアクセスする方法の検討


背景

REDMINE-WIKIについて、プログラミングで操作する方法を調べている。
(話の経緯は下記参照)

今回はpythonからREDMINEのWIKIにアクセスする方法を検討した。

前提

 ライブラリはpython-redmineを使う。    https://python-redmine.com/resources/wiki_page.html
 すでにREDMINEには接続済みの状態とする。 (詳細のコードは省略する)

Wikiへのアクセスコード

 以下はpython-redmineを使ったクラスメソドである。

from redminelib import Redmine

class RedmineWork:

    def read_project(self):
        projects = self.api.project.all( limit=100)
        wikipages =[]
        for pjt in projects:
            wikis = self.read_wikis(pjt.id) 
            for wiki in wikis:
                wikipage = self.get_wiki_byname(wiki.title,pjt.id)
                wikipages.append(wikipage)

        return wikipages

    def read_wikis(self,id):
        pages = self.api.wiki_page.filter(project_id=id)
        return pages

    def get_wiki_byname(self,name,id):
        page = self.api.wiki_page.get(name,project_id=id)
        return page

    def wikieditor(self):
        wikipages = self.read_project()
        pdb.set_trace()

Wikiコンテンツへのアクセス方法

  1. プロジェクトを全部引っこ抜く read_project
  2. wikiを全部引っこ抜く  read_wikis ---> この時点では中身は取れていない!!!
  3. wikiの記事を取りに行く get_wiki_byname ---> ここでやっと取りに行ける

つまづいていた点

以下のメソドの違いでつまづいていた。。。(こんな名付けでは、誤解するのも当然である)
 .filter --->  これはリソースセット(wiki_pages)で取りに行くもの(wiki-idしか入っていない)
 .get --->  page-idを指定して、初めて中身(wiki_contents)を取りに行くことができる

そもそも、WIKIのER図を理解していなかった。
https://www.flickr.com/photos/kiwamu/3851572819/

これを突破口として、以下のメソドを実装する。

  1. コンテンツ丸ごとを取得するAPI
  2. グラフィック上に、wikiツリーを表示(ドラッグ&ドロップで、階層構造の付け替えが出来る)
  3. Wikiの親子関係を修正後に、Redmineデータベースに反映する
  4. wikiインポート、エクスポートを作る
  5. 機械学習でクラスタリングして、自動整理を行う → 最終的にここまで出来れば上等である