(Added) better label prompt for choosing labels.

dev
KKlochko 2 years ago
parent cb5b4fae29
commit 204898d34f

@ -39,6 +39,8 @@
Added *remove all* option for sources. Added *remove all* option for sources.
** 0.8.6 <2023-03-23 Thu> ** 0.8.6 <2023-03-23 Thu>
Added *remove all* option for groups. Added *remove all* option for groups.
** 0.8.6 <2023-03-23 Thu> ** 0.8.7 <2023-03-24 Fri>
Added *update label* option for source. Added *update label* option for source.
** 0.8.8 <2023-03-25 Sat>
Added better label prompt for choosing labels.

@ -47,16 +47,6 @@ def add(
question = "Would you like to change [yellow b]the group label[/]?" question = "Would you like to change [yellow b]the group label[/]?"
group_label = LabelPrompt.ask_uuid(question) group_label = LabelPrompt.ask_uuid(question)
labels = [] labels = LabelPrompt.get_labels()
while True:
is_empty = count_all_labels_except(labels) == 0
if is_empty:
break
is_fzf = Confirm.ask("Would you like to add a source to the group? ",
default=True)
if not is_fzf:
break
option = LabelPrompt.get_label_except_fzf(labels)
labels.append(option)
Group.create_save(group_label, labels) Group.create_save(group_label, labels)

@ -18,10 +18,11 @@
################################################################################ ################################################################################
from rich.console import Console from rich.console import Console
from rich.prompt import Prompt from rich.prompt import Confirm, Prompt, IntPrompt
from pyfzf import FzfPrompt from pyfzf import FzfPrompt
import uuid import uuid
from tui_rsync.models.models import all_labels, all_labels_except from tui_rsync.models.models import all_labels, all_labels_except
from tui_rsync.models.models import count_all_labels_except
console = Console() console = Console()
@ -46,3 +47,24 @@ class LabelPrompt:
def get_label_except_fzf(labels = None) -> str: def get_label_except_fzf(labels = None) -> str:
fzf = FzfPrompt() fzf = FzfPrompt()
return fzf.prompt(all_labels_except(labels).iterator())[0] return fzf.prompt(all_labels_except(labels).iterator())[0]
@staticmethod
def get_labels(labels = None) -> list:
confirm_question = "Would you like to add a source/sources to the group?"
is_fzf = Confirm.ask(confirm_question, default=True)
if not is_fzf:
return []
count_question = "How much would you like to add sources to the group?"
count = IntPrompt.ask(count_question, default=1)
count_max = count_all_labels_except(labels)
count = count_max if count > count_max else count
labels = []
for i in range(count):
option = LabelPrompt.get_label_except_fzf(labels)
labels.append(option)
return labels

Loading…
Cancel
Save