edit task content; list content

This commit is contained in:
Arnas Udovicius 2018-02-15 01:34:54 +02:00
parent 2b48db5b62
commit fe8dcce2b8
4 changed files with 104 additions and 39 deletions

1
.gitignore vendored
View file

@ -101,3 +101,4 @@ ENV/
.mypy_cache/ .mypy_cache/
ztm.db ztm.db
tags

View file

@ -55,3 +55,12 @@ class Model:
results = cursor.execute(query, (aid,)) results = cursor.execute(query, (aid,))
return results.fetchone() return results.fetchone()
def save_content(self, aid, content):
cursor = self.conn.cursor()
cursor.execute('UPDATE task SET content=? WHERE aid=?', (content, aid))
self.conn.commit()
query = '''
UPDA
'''

8
tags
View file

@ -3,14 +3,15 @@ a /home/arnas/Skleps/ztm/ztm.py /^ a = Main()$/;" v language:Python
Abcex /home/arnas/Skleps/ztm/model.py /^from abcex import Abcex$/;" i language:Python Abcex /home/arnas/Skleps/ztm/model.py /^from abcex import Abcex$/;" i language:Python
about /home/arnas/Skleps/ztm/ztm.py /^ def about(self):$/;" f language:Python about /home/arnas/Skleps/ztm/ztm.py /^ def about(self):$/;" f language:Python
add /home/arnas/Skleps/ztm/ztm.py /^ def add(self):$/;" f language:Python add /home/arnas/Skleps/ztm/ztm.py /^ def add(self):$/;" f language:Python
add_tag /home/arnas/Skleps/ztm/ztm.py /^ def add_tag(self, task_id):$/;" f language:Python
bcolors /home/arnas/Skleps/ztm/bcolors.py /^class bcolors:$/;" c language:Python bcolors /home/arnas/Skleps/ztm/bcolors.py /^class bcolors:$/;" c language:Python
bcolors /home/arnas/Skleps/ztm/ztm.py /^from bcolors import bcolors$/;" i language:Python bcolors /home/arnas/Skleps/ztm/ztm.py /^from bcolors import bcolors$/;" i language:Python
BOLD /home/arnas/Skleps/ztm/bcolors.py /^ BOLD = '\\033[1m'$/;" v language:Python class:bcolors BOLD /home/arnas/Skleps/ztm/bcolors.py /^ BOLD = '\\033[1m'$/;" v language:Python class:bcolors
bye /home/arnas/Skleps/ztm/ztm.py /^ def bye(self):$/;" f language:Python
create_task_draft /home/arnas/Skleps/ztm/model.py /^ def create_task_draft(self, description):$/;" m language:Python class:Model create_task_draft /home/arnas/Skleps/ztm/model.py /^ def create_task_draft(self, description):$/;" m language:Python class:Model
edit_task /home/arnas/Skleps/ztm/ztm.py /^ def edit_task(self, aid):$/;" f language:Python
ENDC /home/arnas/Skleps/ztm/bcolors.py /^ ENDC = '\\033[0m'$/;" v language:Python class:bcolors ENDC /home/arnas/Skleps/ztm/bcolors.py /^ ENDC = '\\033[0m'$/;" v language:Python class:bcolors
FAIL /home/arnas/Skleps/ztm/bcolors.py /^ FAIL = '\\033[91m'$/;" v language:Python class:bcolors FAIL /home/arnas/Skleps/ztm/bcolors.py /^ FAIL = '\\033[91m'$/;" v language:Python class:bcolors
fzfCall /home/arnas/Skleps/ztm/ztm.py /^ def fzfCall(self, elements):$/;" f language:Python FzfPrompt /home/arnas/Skleps/ztm/ztm.py /^from pyfzf.pyfzf import FzfPrompt$/;" i language:Python
get_all_tasks /home/arnas/Skleps/ztm/model.py /^ def get_all_tasks(self):$/;" m language:Python class:Model get_all_tasks /home/arnas/Skleps/ztm/model.py /^ def get_all_tasks(self):$/;" m language:Python class:Model
get_task /home/arnas/Skleps/ztm/model.py /^ def get_task(self, aid):$/;" m language:Python class:Model get_task /home/arnas/Skleps/ztm/model.py /^ def get_task(self, aid):$/;" m language:Python class:Model
get_tasks_by_tag /home/arnas/Skleps/ztm/model.py /^ def get_tasks_by_tag(self, tag_name):$/;" m language:Python class:Model get_tasks_by_tag /home/arnas/Skleps/ztm/model.py /^ def get_tasks_by_tag(self, tag_name):$/;" m language:Python class:Model
@ -24,11 +25,14 @@ Model /home/arnas/Skleps/ztm/model.py /^class Model:$/;" c language:Python
Model /home/arnas/Skleps/ztm/ztm.py /^from model import Model$/;" i language:Python Model /home/arnas/Skleps/ztm/ztm.py /^from model import Model$/;" i language:Python
OKBLUE /home/arnas/Skleps/ztm/bcolors.py /^ OKBLUE = '\\033[94m'$/;" v language:Python class:bcolors OKBLUE /home/arnas/Skleps/ztm/bcolors.py /^ OKBLUE = '\\033[94m'$/;" v language:Python class:bcolors
OKGREEN /home/arnas/Skleps/ztm/bcolors.py /^ OKGREEN = '\\033[92m'$/;" v language:Python class:bcolors OKGREEN /home/arnas/Skleps/ztm/bcolors.py /^ OKGREEN = '\\033[92m'$/;" v language:Python class:bcolors
re /home/arnas/Skleps/ztm/ztm.py /^import re$/;" i language:Python
run /home/arnas/Skleps/ztm/ztm.py /^ def run(self):$/;" m language:Python class:Main run /home/arnas/Skleps/ztm/ztm.py /^ def run(self):$/;" m language:Python class:Main
save_content /home/arnas/Skleps/ztm/model.py /^ def save_content(self, aid, content):$/;" m language:Python class:Model
search /home/arnas/Skleps/ztm/ztm.py /^ def search(self):$/;" f language:Python search /home/arnas/Skleps/ztm/ztm.py /^ def search(self):$/;" f language:Python
sqlite3 /home/arnas/Skleps/ztm/model.py /^import sqlite3$/;" i language:Python sqlite3 /home/arnas/Skleps/ztm/model.py /^import sqlite3$/;" i language:Python
subprocess /home/arnas/Skleps/ztm/ztm.py /^import subprocess$/;" i language:Python subprocess /home/arnas/Skleps/ztm/ztm.py /^import subprocess$/;" i language:Python
sys /home/arnas/Skleps/ztm/ztm.py /^import sys$/;" i language:Python sys /home/arnas/Skleps/ztm/ztm.py /^import sys$/;" i language:Python
tempfile /home/arnas/Skleps/ztm/ztm.py /^import tempfile$/;" i language:Python
UNDERLINE /home/arnas/Skleps/ztm/bcolors.py /^ UNDERLINE = '\\033[4m'$/;" v language:Python class:bcolors UNDERLINE /home/arnas/Skleps/ztm/bcolors.py /^ UNDERLINE = '\\033[4m'$/;" v language:Python class:bcolors
WARNING /home/arnas/Skleps/ztm/bcolors.py /^ WARNING = '\\033[93m'$/;" v language:Python class:bcolors WARNING /home/arnas/Skleps/ztm/bcolors.py /^ WARNING = '\\033[93m'$/;" v language:Python class:bcolors
__init__ /home/arnas/Skleps/ztm/model.py /^ def __init__(self):$/;" m language:Python class:Model __init__ /home/arnas/Skleps/ztm/model.py /^ def __init__(self):$/;" m language:Python class:Model

125
ztm.py
View file

@ -1,5 +1,9 @@
import re
import sys import sys
import subprocess import subprocess
import tempfile
from pyfzf.pyfzf import FzfPrompt
from model import Model from model import Model
from bcolors import bcolors from bcolors import bcolors
@ -8,28 +12,32 @@ from bcolors import bcolors
class Main: class Main:
def __init__(self): def __init__(self):
self.model = Model() self.model = Model()
self.fzf = FzfPrompt()
def run(self): def run(self):
print(''' print(bcolors.HEADER + '''
_oo (o)__(o) \/ GEEEEEEEL .. :
>-(_ \(__ __) (OO) ,##############Wf.,;;L#K;;. ,W, .Et
/ _/ ( ) ,'.--.) ........jW##Wt t#E t##, ,W#t
/ / )( / /|_|_\\ tW##Kt t#E L###, j###t
/ ( ( )| \_.--. tW##E; t#E .E#j##, G#fE#t
( `-. )/ '. \) \\ tW##E; t#E ;WW; ##,:K#i E#t
`--.._) ( `-.(_.' .fW##D, t#E j#E. ##f#W, E#t
.f###D, t#E .D#L ###K: E#t
.f####Gfffffffffff; t#E :K#t ##D. E#t
.fLLLLLLLLLLLLLLLLLi fE ... #G ..
: j
Task manager from Zordsdavini (2018) Task manager from Zordsdavini (2018)
''') ''' + bcolors.ENDC)
self.menu() self.menu()
def menu(self): def menu(self):
menu = input('What you want to do? (?+/tcq) ') menu = input(bcolors.OKGREEN + 'What you want to do? (?+/tcq) ' + bcolors.ENDC)
if menu == 'q': if menu == 'q':
print('bye o/') self.bye()
sys.exit(0)
elif menu == '?': elif menu == '?':
self.about() self.about()
@ -41,7 +49,7 @@ Task manager from Zordsdavini (2018)
self.add() self.add()
def about(self): def about(self):
print(''' print(bcolors.WARNING + '''
Short instruction Short instruction
----------------- -----------------
? - help (this dialog) ? - help (this dialog)
@ -50,7 +58,7 @@ Short instruction
t - tag manager t - tag manager
c - configuration c - configuration
q - exit q - exit
''') ''' + bcolors.ENDC)
self.menu() self.menu()
def search(self): def search(self):
@ -61,9 +69,14 @@ q - exit
tasksData = self.model.get_all_tasks() tasksData = self.model.get_all_tasks()
for t in self.model.get_all_tasks(): for t in self.model.get_all_tasks():
tasks.append('%s: %s' % (t[1], t[2])) tasks.append('%s: %s' % (t['aid'], t['description']))
selected = self.fzfCall(tasks) selected = self.fzf.prompt(tasks)
if selected:
m = re.search(r'^(.+):', selected[0])
aid = m.group(1)
if aid:
self.edit_task(aid)
def add(self): def add(self):
print('\n' + bcolors.HEADER + 'Adding task\n' + bcolors.ENDC) print('\n' + bcolors.HEADER + 'Adding task\n' + bcolors.ENDC)
@ -71,32 +84,34 @@ q - exit
aid = self.model.create_task_draft(description) aid = self.model.create_task_draft(description)
self.manage_task(aid) self.manage_task(aid)
def add_tag(self, task_id):
question = input('Do you want to add tag? ([y]/n) ')
if question == 'y' or question == '':
self.add_tag(task_id)
pass
def manage_task(self, aid): def manage_task(self, aid):
task = self.model.get_task(aid) task = self.model.get_task(aid)
print('\n' + bcolors.HEADER + 'Managing: [' + task['aid'] + '] ' + task['description'] + '\n' + bcolors.ENDC) print('\n' + bcolors.HEADER + 'Managing: [' + task['aid'] + '] ' + task['description'] + bcolors.ENDC)
print('''
#%s
Description: %s
Tags: [%s]
Long Term: [%s]
Created: %s
''' % (task['aid'], task['description'], '', ' ', task['created_at']))
print()
self.manage_task_menu(aid) self.manage_task_menu(aid)
def manage_task_menu(self, aid): def manage_task_menu(self, aid):
menu = input('What you want to do? (?e*+-v&q) ') menu = input(bcolors.OKGREEN + 'What you want to do? (?e*+-v&q) ' + bcolors.ENDC)
if menu == 'q': if menu == 'q':
print('bye o/') self.bye()
sys.exit(0)
elif menu == '?': elif menu == '?':
self.manage_task_about(aid) self.manage_task_about(aid)
elif menu == 'e':
self.edit_task(aid)
def manage_task_about(self, aid): def manage_task_about(self, aid):
print(''' print(bcolors.WARNING + '''
Short instruction Short instruction
----------------- -----------------
? - help (this dialog) ? - help (this dialog)
@ -107,16 +122,52 @@ e - edit content
v - mark done v - mark done
& - add child task & - add child task
q - exit q - exit
''') ''' + bcolors.ENDC)
self.manage_task_menu(aid) self.manage_task_menu(aid)
def fzfCall(self, elements): def edit_task(self, aid):
try: task = self.model.get_task(aid)
p = subprocess.Popen(['echo', '\n'.join(elements)], stdout=subprocess.PIPE)
p2 = subprocess.check_output(('fzf'), stdin=p.stdout) content = '''%s
return p2 Tags: [%s]
except: Long Term: [%s]
return None Created: %s
''' % (task['aid'], '', ' ', task['created_at'])
content += '\n# ' + task['description']
if task['content']:
content += task['content']
with tempfile.NamedTemporaryFile(suffix='.md', mode='r+') as temp:
f = open(temp.name, 'r+')
f.write(content)
f.close()
subprocess.call(['vim', temp.name])
f = open(temp.name, 'r')
new_content = f.read()
f.close()
temp.close()
found = False
content = ''
for row in new_content.splitlines():
if found:
content += '\n' + row
continue
if row == '# ' + task['description']:
found = True
self.model.save_content(aid, content)
print(bcolors.OKBLUE + '[content has been saved]/n' + bcolors.ENDC)
self.manage_task(aid)
def bye(self):
print(bcolors.FAIL + 'bye o/' + bcolors.ENDC)
sys.exit(0)
if __name__ == '__main__': if __name__ == '__main__':