From 8c684893903b1b44223725bc562a53220d4893d6 Mon Sep 17 00:00:00 2001 From: Arnas Udovicius Date: Fri, 16 Feb 2018 07:31:30 +0200 Subject: [PATCH] split with task.py; done --- model.py | 6 +++ task.py | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ ztm.py | 151 +++++---------------------------------------------- 3 files changed, 179 insertions(+), 139 deletions(-) create mode 100644 task.py diff --git a/model.py b/model.py index 226035e..ae38c51 100644 --- a/model.py +++ b/model.py @@ -67,3 +67,9 @@ class Model: cursor.execute('UPDATE task SET long_term=NOT long_term WHERE aid=?', (aid)) self.conn.commit() + + def toggle_done(self, aid): + cursor = self.conn.cursor() + cursor.execute('UPDATE task SET done=NOT done, finished_at=DATETIME(\'now\') WHERE aid=?', (aid)) + + self.conn.commit() diff --git a/task.py b/task.py new file mode 100644 index 0000000..44bf6cd --- /dev/null +++ b/task.py @@ -0,0 +1,161 @@ +import re +import sys +import subprocess +import tempfile + +from pyfzf.pyfzf import FzfPrompt + +from model import Model +from bcolors import bcolors + + +class Task: + def __init__(self): + self.model = Model() + self.fzf = FzfPrompt() + + def search(self): + tasks = [] + tasksData = self.model.get_all_tasks() + if not tasksData: + self.add() + tasksData = self.model.get_all_tasks() + + for t in self.model.get_all_tasks(): + tasks.append('%s: %s' % (t['aid'], t['description'])) + + selected = self.fzf.prompt(tasks) + if selected: + m = re.search(r'^(.+):', selected[0]) + aid = m.group(1) + if aid: + self.edit_task(aid) + else: + print(bcolors.FAIL + 'Task was not selected...\n' + bcolors.ENDC) + + def add(self): + print('\n' + bcolors.HEADER + 'Adding task\n' + bcolors.ENDC) + description = input('Description: ') + aid = self.model.create_task_draft(description) + self.manage_task(aid) + + def manage_task(self, aid): + task = self.model.get_task(aid) + print('\n' + bcolors.HEADER + 'Managing: [' + task['aid'] + '] ' + task['description'] + bcolors.ENDC) + + long_term = ' ' + if task['long_term'] and task['long_term'] != 'FALSE': + long_term = 'x' + + print(''' +%s +Description: %s +Tags: [%s] +Long Term: [%s] +Created: %s + ''' % (task['aid'], task['description'], '', long_term, task['created_at'])) + + if task['done'] and task['done'] != 'FALSE': + print(bcolors.OKGREEN + 'Finished: ' + task['finished_at'] + '\n' + bcolors.ENDC) + + self.manage_task_menu(aid) + + def manage_task_menu(self, aid): + menu = input(bcolors.OKGREEN + 'What you want to do? (?e*+-v&> - go to child +< - back +q - exit + ''' + bcolors.ENDC) + self.manage_task_menu(aid) + + def edit_task(self, aid): + task = self.model.get_task(aid) + + long_term = ' ' + if task['long_term'] and task['long_term'] != 'FALSE': + long_term = 'x' + + content = '''%s +Tags: [%s] +Long Term: [%s] +Created: %s ''' % (task['aid'], '', long_term, task['created_at']) + + if task['done'] and task['done'] != 'FALSE': + content += '\nFinished: ' + task['finished_at'] + + content += '\n\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 + '\n[content has been saved]' + bcolors.ENDC) + self.manage_task(aid) + + def toggle_long_term(self, aid): + self.model.toggle_long_term(aid) + self.manage_task(aid) + + def toggle_done(self, aid): + self.model.toggle_done(aid) + self.manage_task(aid) + + def bye(self): + print(bcolors.FAIL + 'bye o/' + bcolors.ENDC) + sys.exit(0) diff --git a/ztm.py b/ztm.py index b7a654e..1315066 100644 --- a/ztm.py +++ b/ztm.py @@ -1,17 +1,16 @@ -import re import sys -import subprocess -import tempfile from pyfzf.pyfzf import FzfPrompt from model import Model +from task import Task from bcolors import bcolors class Main: def __init__(self): self.model = Model() + self.task = Task() self.fzf = FzfPrompt() def run(self): @@ -36,17 +35,19 @@ Task manager from Zordsdavini (2018) def menu(self): menu = input(bcolors.OKGREEN + 'What you want to do? (?+/tcq) ' + bcolors.ENDC) - if menu == 'q': - self.bye() - - elif menu == '?': + if menu == '?': self.about() - elif menu == '/': - self.search() - elif menu == '+': - self.add() + self.task.add() + self.menu() + + elif menu == '/': + self.task.search() + self.menu() + + elif menu == 'q': + self.bye() else: print(bcolors.FAIL + 'This is not implemented...\n' + bcolors.ENDC) @@ -65,134 +66,6 @@ q - exit ''' + bcolors.ENDC) self.menu() - def search(self): - tasks = [] - tasksData = self.model.get_all_tasks() - if not tasksData: - self.add() - tasksData = self.model.get_all_tasks() - - for t in self.model.get_all_tasks(): - tasks.append('%s: %s' % (t['aid'], t['description'])) - - 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): - print('\n' + bcolors.HEADER + 'Adding task\n' + bcolors.ENDC) - description = input('Description: ') - aid = self.model.create_task_draft(description) - self.manage_task(aid) - - def manage_task(self, aid): - task = self.model.get_task(aid) - print('\n' + bcolors.HEADER + 'Managing: [' + task['aid'] + '] ' + task['description'] + bcolors.ENDC) - - long_term = ' ' - if task['long_term'] and task['long_term'] != 'FALSE': - long_term = 'x' - - print(''' - #%s - Description: %s - Tags: [%s] - Long Term: [%s] - Created: %s - ''' % (task['aid'], task['description'], '', long_term, task['created_at'])) - - self.manage_task_menu(aid) - - def manage_task_menu(self, aid): - menu = input(bcolors.OKGREEN + 'What you want to do? (?e*+-v&> - go to child -< - back -q - exit - ''' + bcolors.ENDC) - self.manage_task_menu(aid) - - def edit_task(self, aid): - task = self.model.get_task(aid) - - long_term = ' ' - if task['long_term'] and task['long_term'] != 'FALSE': - long_term = 'x' - - content = '''%s -Tags: [%s] -Long Term: [%s] -Created: %s - ''' % (task['aid'], '', long_term, 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 + '\n[content has been saved]' + bcolors.ENDC) - self.manage_task(aid) - - def toggle_long_term(self, aid): - self.model.toggle_long_term(aid) - self.manage_task(aid) - def bye(self): print(bcolors.FAIL + 'bye o/' + bcolors.ENDC) sys.exit(0)