ipython notebook便利と思っていたんですが、
これで、そのままタスク管理も出来たらいいなと思って試しに作ってみました。
かなり簡単に作ったというのもありますが、サクッと出来てしまいます。
前提として、ipython notebookはもちろんですが
pandasもインストールが必要になります。
(説明は省略します・・・)
それでは、早速ですが
ipython notebookの3つのセルに下記を入力していきます。
import pandas
from IPython.display import Javascript
from IPython.display import HTML
title_name = 'Tasks'
file_name = 'tasks.csv'
css_name = '//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css'
js_name = '//cdn.datatables.net/1.10.12/js/jquery.dataTables.min'
def read_task():
if os.path.exists(file_name):
return pandas.DataFrame.from_csv(file_name)
else:
return pandas.DataFrame()
def save_task(data):
pandas.DataFrame(data).to_csv(file_name)
def add_task(name, content):
data = read_task()
df = pandas.DataFrame([{'name':name,'content':content,'status':'new'}], columns = ['name','content','status'])
data = data.append(df, ignore_index=True)
save_task(data)
def show_task():
data = read_task()
js = '''
<link rel='stylesheet' type='text/css' href='%s'>
<script>
require.config({
paths: {
dataTables: '%s'
}
});
require(['dataTables'], function(){
$('.dataframe').DataTable();
});
</script>
'''%(css_name, js_name)
return HTML('<h2>%s</h2>'%(title_name) + data.to_html() + js)
def update_task(id, **kwargs):
data = read_task()
if kwargs.get('name'):
data['name'][id] = kwargs.get('name')
if kwargs.get('content'):
data['content'][id] = kwargs.get('content')
if kwargs.get('status'):
data['status'][id] = kwargs.get('status')
save_task(data)
def delete_task(id):
data = read_task()
data = data.drop(id)
save_task(data)
そして4つ目のセルに下記を入力して、実行(Shift + Enter)してみましょう。
show_task()
まだ、何のタスクもありませんが
もうタスク管理っぽいものが出来ていますね。
5つ目のセルで、タスクを追加してみましょう。
add_task('最初のタスク','githubに、repositoryを準備する')
これを実行(Shift + Enter)した後で、
また4つ目のセルに戻って実行(Shift + Enter)します。
タスクが追加されました。
taskwarriorっぽい雰囲気ですね。https://taskwarrior.org/
これを繰り返していくと、タスクがどんどん追加されます。
ステータスの更新については、下記の感じです。
update_task(0, status='done')
1つ目の引数はIDです。
update_task(1, name='次のタスク【優先】', content='pythonで、コードを書く。')
こうすると名前と内容が更新出来ます。
そして削除は下記の感じです。
delete_task(1)
削除したIDは欠番になります。
(ただし、add_taskするとリセットされます。)
という訳で、PyPIに登録してみました。
pip install tasks-for-notebook
これでインストール出来ます。
使い方は下記の感じです。
from tasks_for_notebook import *
show_task()
ごちゃごちゃしたものが無くなって、すっきりします。
もうちょっと機能追加してみたいと思います。
こちらも宜しくお願いします。
https://pypi.python.org/pypi?%3Aaction=pkg_edit&name=tasks-for-notebook
https://github.com/llby/tasks-for-notebook