manage tags

This commit is contained in:
Arnas Udovicius 2018-02-16 11:16:29 +02:00
parent 8c68489390
commit 9e18882c5e
3 changed files with 146 additions and 10 deletions

View file

@ -20,9 +20,7 @@ class Model:
return self.conn.execute(query, tag_name) return self.conn.execute(query, tag_name)
def get_all_tasks(self): def get_all_tasks(self):
query = ''' query = 'SELECT t.* FROM task t'
SELECT t.* FROM task t
'''
return self.conn.execute(query) return self.conn.execute(query)
@ -59,17 +57,47 @@ class Model:
def save_content(self, aid, content): def save_content(self, aid, content):
cursor = self.conn.cursor() cursor = self.conn.cursor()
cursor.execute('UPDATE task SET content=? WHERE aid=?', (content, aid)) cursor.execute('UPDATE task SET content=? WHERE aid=?', (content, aid))
self.conn.commit() self.conn.commit()
def toggle_long_term(self, aid): def toggle_long_term(self, aid):
cursor = self.conn.cursor() cursor = self.conn.cursor()
cursor.execute('UPDATE task SET long_term=NOT long_term WHERE aid=?', (aid)) cursor.execute('UPDATE task SET long_term=NOT long_term WHERE aid=?', (aid))
self.conn.commit() self.conn.commit()
def toggle_done(self, aid): def toggle_done(self, aid):
cursor = self.conn.cursor() cursor = self.conn.cursor()
cursor.execute('UPDATE task SET done=NOT done, finished_at=DATETIME(\'now\') WHERE aid=?', (aid)) cursor.execute('UPDATE task SET done=NOT done, finished_at=DATETIME(\'now\') WHERE aid=?', (aid))
self.conn.commit()
def create_tag(self, name):
query = 'INSERT INTO tag (name) VALUES (?)'
cursor = self.conn.cursor()
cursor.execute(query, (name,))
self.conn.commit()
return cursor.lastrowid
def get_all_tags(self):
query = 'SELECT t.* FROM tag t'
return self.conn.execute(query)
def get_tag(self, tid):
query = 'SELECT t.* FROM tag t WHERE t.id = ?'
cursor = self.conn.cursor()
results = cursor.execute(query, (tid,))
return results.fetchone()
def get_tag_by_name(self, name):
query = 'SELECT t.* FROM tag t WHERE t.name = ?'
cursor = self.conn.cursor()
results = cursor.execute(query, (name,))
return results.fetchone()
def remove_tag_by_name(self, name):
query = 'DELETE FROM tag WHERE name = ?'
cursor = self.conn.cursor()
cursor.execute(query, (name,))
self.conn.commit() self.conn.commit()

View file

@ -21,7 +21,7 @@ class Task:
self.add() self.add()
tasksData = self.model.get_all_tasks() tasksData = self.model.get_all_tasks()
for t in self.model.get_all_tasks(): for t in tasksData:
tasks.append('%s: %s' % (t['aid'], t['description'])) tasks.append('%s: %s' % (t['aid'], t['description']))
selected = self.fzf.prompt(tasks) selected = self.fzf.prompt(tasks)
@ -37,11 +37,12 @@ class Task:
print('\n' + bcolors.HEADER + 'Adding task\n' + bcolors.ENDC) print('\n' + bcolors.HEADER + 'Adding task\n' + bcolors.ENDC)
description = input('Description: ') description = input('Description: ')
aid = self.model.create_task_draft(description) aid = self.model.create_task_draft(description)
print(bcolors.OKBLUE + '\n[task has been created]' + bcolors.ENDC)
self.manage_task(aid) self.manage_task(aid)
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'] + bcolors.ENDC) print('\n' + bcolors.HEADER + 'Managing task: [' + task['aid'] + '] ' + task['description'] + bcolors.ENDC)
long_term = ' ' long_term = ' '
if task['long_term'] and task['long_term'] != 'FALSE': if task['long_term'] and task['long_term'] != 'FALSE':
@ -61,7 +62,7 @@ Created: %s
self.manage_task_menu(aid) self.manage_task_menu(aid)
def manage_task_menu(self, aid): def manage_task_menu(self, aid):
menu = input(bcolors.OKGREEN + 'What you want to do? (?e*+-v&><q) ' + bcolors.ENDC) menu = input(bcolors.OKBLUE + '~task: ' + bcolors.OKGREEN + 'What you want to do? (?e*+-v&><q) ' + bcolors.ENDC)
if menu == 'q': if menu == 'q':
self.bye() self.bye()
@ -150,10 +151,12 @@ Created: %s ''' % (task['aid'], '', long_term, task['created_at'])
def toggle_long_term(self, aid): def toggle_long_term(self, aid):
self.model.toggle_long_term(aid) self.model.toggle_long_term(aid)
print(bcolors.OKBLUE + '\n[task has been updated]' + bcolors.ENDC)
self.manage_task(aid) self.manage_task(aid)
def toggle_done(self, aid): def toggle_done(self, aid):
self.model.toggle_done(aid) self.model.toggle_done(aid)
print(bcolors.OKBLUE + '\n[task has been updated]' + bcolors.ENDC)
self.manage_task(aid) self.manage_task(aid)
def bye(self): def bye(self):

107
ztm.py
View file

@ -33,7 +33,7 @@ Task manager from Zordsdavini (2018)
self.menu() self.menu()
def menu(self): def menu(self):
menu = input(bcolors.OKGREEN + 'What you want to do? (?+/tcq) ' + bcolors.ENDC) menu = input(bcolors.OKBLUE + '~: ' + bcolors.OKGREEN + 'What you want to do? (?+/tcq) ' + bcolors.ENDC)
if menu == '?': if menu == '?':
self.about() self.about()
@ -46,6 +46,10 @@ Task manager from Zordsdavini (2018)
self.task.search() self.task.search()
self.menu() self.menu()
elif menu == 't':
self.manage_tag()
self.menu()
elif menu == 'q': elif menu == 'q':
self.bye() self.bye()
@ -70,6 +74,107 @@ q - exit
print(bcolors.FAIL + 'bye o/' + bcolors.ENDC) print(bcolors.FAIL + 'bye o/' + bcolors.ENDC)
sys.exit(0) sys.exit(0)
def manage_tag(self, tid=None):
if tid:
tag = self.model.get_tag(tid)
print(bcolors.HEADER + '\nManaging tag: ' + tag['name'] + '\n' + bcolors.ENDC)
else:
print(bcolors.HEADER + '\nManaging tags\n' + bcolors.ENDC)
tagsData = self.model.get_all_tags()
if not tagsData:
self.add_tag()
tagsData = self.model.get_all_tags()
tags = bcolors.WARNING
for t in tagsData:
tags += t['name'] + ' '
print(tags + '\n' + bcolors.ENDC)
self.manage_tag_menu(tid)
def manage_tag_menu(self, tid=None):
menu = input(bcolors.OKBLUE + '~tag: ' + bcolors.OKGREEN + 'What you want to do? (?/+-<q) ' + bcolors.ENDC)
if menu == 'q':
self.bye()
elif menu == '/':
self.search_tag(tid)
self.manage_tag_menu(tid)
elif menu == '?':
self.manage_tag_about(tid)
elif menu == '+':
self.add_tag()
elif menu == '-':
self.remove_tag(tid)
elif menu == '<':
return
else:
print(bcolors.FAIL + 'This is not implemented...\n' + bcolors.ENDC)
self.manage_tag_menu(tid)
def manage_tag_about(self, tid=None):
print(bcolors.WARNING + '''
Short instruction
-----------------
? - help (this dialog)
/ - search tag
+ - add tag
- - remove tag
< - back
q - exit
''' + bcolors.ENDC)
self.manage_tag(tid)
def add_tag(self):
print('\n' + bcolors.HEADER + 'Adding tag\n' + bcolors.ENDC)
name = input('Name: ')
tid = self.model.create_tag(name)
print(bcolors.OKBLUE + '\n[tag has been created]' + bcolors.ENDC)
self.manage_tag(tid)
def search_tag(self, tid=None):
tagsData = self.model.get_all_tags()
if not tagsData:
self.add_tag()
tagsData = self.model.get_all_tags()
tags = []
for t in tagsData:
tags.append(t['name'])
selected = self.fzf.prompt(tags)
if selected:
tag = self.model.get_tag_by_name(selected[0])
self.manage_tag(tag['id'])
else:
print(bcolors.FAIL + 'Tag was not selected...\n' + bcolors.ENDC)
def remove_tag(self, tid=None):
tagsData = self.model.get_all_tags()
if not tagsData:
print(bcolors.FAIL + 'Where is no tags...\n' + bcolors.ENDC)
self.manage_tag_menu()
tags = []
for t in tagsData:
tags.append(t['name'])
selected = self.fzf.prompt(tags)
if selected:
self.model.remove_tag_by_name(selected[0])
print(bcolors.OKBLUE + '\n[tag has been deleted]' + bcolors.ENDC)
self.manage_tag()
else:
print(bcolors.FAIL + 'Tag was not selected...\n' + bcolors.ENDC)
if __name__ == '__main__': if __name__ == '__main__':
a = Main() a = Main()