adoption flow
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
class Cat:
|
||||
def __init__(self, name):
|
||||
def __init__(self, name, traits):
|
||||
self.name = name
|
||||
self.traits = traits
|
||||
|
||||
def to_dict(self):
|
||||
return {"name": self.name}
|
||||
return {"name": self.name, "traits": self.traits}
|
||||
|
||||
@staticmethod
|
||||
def from_dict(data):
|
||||
return Cat(data["name"])
|
||||
return Cat(data["name"], data["traits"])
|
||||
|
||||
|
||||
class Save:
|
||||
|
||||
@@ -7,6 +7,6 @@ def validate_cat_name(name):
|
||||
if len(name) < 4 or len(name) > 24:
|
||||
return "Your cat's name must be 4-24 characters long."
|
||||
if not all(c in ALLOWED for c in name):
|
||||
return "Letters and numbers only."
|
||||
return "Your cat's name can only have letters and numbers."
|
||||
if not any(c in string.ascii_letters for c in name):
|
||||
return "Your cat's name needs at least 1 letter."
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from untitled import generation, ui
|
||||
from untitled import generation, ui, rules, model
|
||||
|
||||
|
||||
def adoption():
|
||||
print("Welcome to the shelter!")
|
||||
name = None
|
||||
while not name:
|
||||
|
||||
while True:
|
||||
choice = "Reroll"
|
||||
while choice == "Reroll":
|
||||
choices = generation.generate_cat_choices()
|
||||
@@ -12,4 +12,16 @@ def adoption():
|
||||
"Please choose a cat to adopt:",
|
||||
[ui.Choice(cat[0], cat[1]) for cat in choices] + ["Reroll"],
|
||||
)
|
||||
name = ui.text("Please choose a name for your cat:")
|
||||
|
||||
while True:
|
||||
name = ui.text("Please choose a name for your cat:")
|
||||
error = rules.validate_cat_name(name)
|
||||
if not error:
|
||||
break
|
||||
print(error)
|
||||
if ui.confirm(
|
||||
f"Do you want to adopt {name}, {generation.generate_trait_sentence(choice).lower()}?"
|
||||
):
|
||||
break
|
||||
|
||||
return model.Cat(name, choice)
|
||||
|
||||
@@ -42,3 +42,7 @@ def select(title, options):
|
||||
|
||||
def text(title):
|
||||
return questionary.text(title).ask()
|
||||
|
||||
|
||||
def confirm(title):
|
||||
return questionary.confirm(title).ask()
|
||||
|
||||
Reference in New Issue
Block a user