task with Screen printing

This commit is contained in:
Arnas Udovicius 2019-01-07 09:28:05 +02:00
parent 1e64c780f5
commit acf97f5ff8
2 changed files with 46 additions and 46 deletions

1
tag.py
View file

@ -9,6 +9,7 @@ class Tag:
self.model = Model() self.model = Model()
self.fzf = FzfPrompt() self.fzf = FzfPrompt()
self.screen = Screen() self.screen = Screen()
self.header = '' self.header = ''
self.info = None self.info = None

91
task.py
View file

@ -1,19 +1,23 @@
import re import re
import sqlite3 import sqlite3
import subprocess import subprocess
import sys
import tempfile import tempfile
from pyfzf.pyfzf import FzfPrompt from pyfzf.pyfzf import FzfPrompt
from model import Model from model import Model
from bcolors import bcolors from bcolors import bcolors
from screen import Screen
class Task: class Task:
def __init__(self): def __init__(self):
self.model = Model() self.model = Model()
self.fzf = FzfPrompt() self.fzf = FzfPrompt()
self.screen = Screen()
self.header = ''
self.info = ''
def search(self): def search(self):
tasks = [] tasks = []
@ -32,18 +36,18 @@ class Task:
if aid: if aid:
self.edit_task(aid) self.edit_task(aid)
else: else:
print(bcolors.FAIL + 'Task was not selected...' + bcolors.ENDC) self.screen.add_fail('Task was not selected...')
def add(self): def add(self):
print(bcolors.HEADER + 'Adding task' + bcolors.ENDC) self.screen.print_init('Adding task')
description = input('Description: ') description = input('Description: ')
aid = self.model.create_task_draft(description) aid = self.model.create_task_draft(description)
print(bcolors.OKBLUE + '[task has been created]' + bcolors.ENDC) self.screen.add_message('task has been created')
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(bcolors.HEADER + 'Managing task: [' + task['aid'] + '] ' + task['description'] + bcolors.ENDC) self.header = 'Managing task: [' + task['aid'] + '] ' + task['description']
long_term = ' ' long_term = ' '
if task['long_term'] and task['long_term'] != 'FALSE': if task['long_term'] and task['long_term'] != 'FALSE':
@ -53,28 +57,46 @@ class Task:
if task['tags']: if task['tags']:
tags = ' '.join([t['name'] for t in task['tags']]) tags = ' '.join([t['name'] for t in task['tags']])
print('''%s self.info = '''%s
Description: %s Description: %s
Tags: [%s] Tags: [%s]
Long Term: [%s] Long Term: [%s]
Created: %s ''' % (task['aid'], task['description'], tags, long_term, task['created_at'])) Created: %s ''' % (task['aid'], task['description'], tags, long_term, task['created_at'])
if task['done'] and task['done'] != 'FALSE': if task['done'] and task['done'] != 'FALSE':
print(bcolors.OKGREEN + 'Finished: ' + task['finished_at'] + bcolors.ENDC) self.info += bcolors.ENDC + bcolors.OKGREEN + '\nFinished: ' + task['finished_at']
if task['active'] and task['active'] != 'FALSE': if task['active'] and task['active'] != 'FALSE':
print(bcolors.WARNING + 'ACTIVE' + bcolors.ENDC) self.info += bcolors.ENDC + bcolors.WARNING + '\nACTIVE'
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.OKBLUE + '~task: ' + bcolors.OKGREEN + 'What you want to do? (?e*+-!v&><q) ' + bcolors.ENDC) about = '''
Short instruction
-----------------
? - help (this dialog)
e - edit content
* - toggle long term
+ - add tag
- - remove tag
! - toggle active
v - toggle done
x - delete task
& - add child task
> - go to child
< - back
q - exit
'''
self.screen.change_path('~task', '?e*+-!v&><q', about, self.header, self.info)
menu = self.screen.print()
if menu == 'q': if menu == 'q':
self.bye() self.screen.bye()
elif menu == '?': elif menu == '?':
self.manage_task_about(aid) self.screen.activate_about()
self.manage_task_menu(aid)
elif menu == 'e': elif menu == 'e':
self.edit_task(aid) self.edit_task(aid)
@ -98,28 +120,9 @@ Created: %s ''' % (task['aid'], task['description'], tags, long_term, task['
return return
else: else:
print(bcolors.FAIL + 'This is not implemented...' + bcolors.ENDC) self.screen.add_fail('This is not implemented...')
self.manage_task_menu(aid) self.manage_task_menu(aid)
def manage_task_about(self, aid):
print(bcolors.WARNING + '''
Short instruction
-----------------
? - help (this dialog)
e - edit content
* - toggle long term
+ - add tag
- - remove tag
! - toggle active
v - toggle done
x - delete task
& - add child task
> - go to child
< - back
q - exit
''' + bcolors.ENDC)
self.manage_task_menu(aid)
def edit_task(self, aid): def edit_task(self, aid):
task = self.model.get_task(aid) task = self.model.get_task(aid)
@ -170,29 +173,29 @@ Created: %s ''' % (task['aid'], tags, long_term, task['created_at'])
found = True found = True
self.model.save_content(aid, content) self.model.save_content(aid, content)
print(bcolors.OKBLUE + '[content has been saved]' + bcolors.ENDC) self.screen.add_message('content has been saved')
self.manage_task(aid) self.manage_task(aid)
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 + '[task has been updated]' + bcolors.ENDC) self.screen.add_message('task has been updated')
self.manage_task(aid) self.manage_task(aid)
def toggle_active(self, aid): def toggle_active(self, aid):
self.model.toggle_active(aid) self.model.toggle_active(aid)
print(bcolors.OKBLUE + '[task has been activated]' + bcolors.ENDC) self.screen.add_message('task has been activated')
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 + '[task has been updated]' + bcolors.ENDC) self.screen.add_message('task has been updated')
self.manage_task(aid) self.manage_task(aid)
def add_tags(self, aid): def add_tags(self, aid):
task = self.model.get_task(aid) task = self.model.get_task(aid)
unlinked_tags = self.model.get_tags_not_in_task(task['id']) unlinked_tags = self.model.get_tags_not_in_task(task['id'])
if type(unlinked_tags) is sqlite3.Cursor and unlinked_tags.rowcount == 0: if type(unlinked_tags) is sqlite3.Cursor and unlinked_tags.rowcount == 0:
print(bcolors.FAIL + 'Where is no more unlinked tags left...' + bcolors.ENDC) self.screen.add_fail('Where is no more unlinked tags left...')
self.manage_task(aid) self.manage_task(aid)
tags = [t['name'] for t in unlinked_tags] tags = [t['name'] for t in unlinked_tags]
@ -200,15 +203,15 @@ Created: %s ''' % (task['aid'], tags, long_term, task['created_at'])
selected = self.fzf.prompt(tags, '--multi --cycle') selected = self.fzf.prompt(tags, '--multi --cycle')
if selected: if selected:
self.model.link_tags_to_task(task['id'], selected) self.model.link_tags_to_task(task['id'], selected)
print(bcolors.OKBLUE + '[tags have been linked]' + bcolors.ENDC) self.screen.add_message('tags have been linked')
self.manage_task(aid) self.manage_task(aid)
else: else:
print(bcolors.FAIL + 'Tag was not selected...' + bcolors.ENDC) self.screen.add_fail('Tag was not selected...')
def remove_tags(self, aid): def remove_tags(self, aid):
task = self.model.get_task(aid) task = self.model.get_task(aid)
if not task['tags']: if not task['tags']:
print(bcolors.FAIL + 'Where is no tags linked...' + bcolors.ENDC) self.screen.add_fail('Where is no tags linked...')
self.manage_task(aid) self.manage_task(aid)
tags = [t['name'] for t in task['tags']] tags = [t['name'] for t in task['tags']]
@ -216,11 +219,7 @@ Created: %s ''' % (task['aid'], tags, long_term, task['created_at'])
selected = self.fzf.prompt(tags, '--multi --cycle') selected = self.fzf.prompt(tags, '--multi --cycle')
if selected: if selected:
self.model.unlink_tags_from_task(task['id'], selected) self.model.unlink_tags_from_task(task['id'], selected)
print(bcolors.OKBLUE + '[tags have been unlinked]' + bcolors.ENDC) self.screen.add_message('tags have been unlinked')
self.manage_task(aid) self.manage_task(aid)
else: else:
print(bcolors.FAIL + 'Tag was not selected...' + bcolors.ENDC) self.screen.add_fail('Tag was not selected...')
def bye(self):
print(bcolors.FAIL + 'bye o/' + bcolors.ENDC)
sys.exit(0)