def it_returns_the_total_number_of_covenfolk_matching_classification():
     cn = Covenfolken()
     cn.add_covenfolk("weber", "magi", "writer", "consumables", 10)
     cn.add_covenfolk("yawgma", "magi", "hammerer", "buildings", 5)
     cn.add_covenfolk("dog", "horse", "stables", "buildings", 2)
     assert cn.total_count_of("magi") == 2
     assert cn.total_count_of("horse") == 1
     assert isinstance(cn.total_count_of("magi"), int)
 def it_lists_covenfolk_names(capsys):
     cn = Covenfolken()
     cn.add_covenfolk("weber", "magi")
     cn.add_covenfolk("yawgma", "magi")
     cn.list()
     captured = capsys.readouterr()
     assert captured.out == "['weber', 'yawgma']\n"
 def it_displays_covenfolk(capsys):
     cn = Covenfolken()
     cn.add_covenfolk("weber", "magi")
     cn.add_covenfolk("a", "magi", "writer", "consumables", 5)
     cn.display_covenfolk()
     captured = capsys.readouterr()
     assert captured.out == """weber: magi
 def it_calculates_the_savings_of_all_its_covenfolk():
     cn = Covenfolken()
     folk = demo_folk()
     cn.add_covenfolk(folk)
     cn.add_covenfolk("James", "crafter", "woodworker", "buildings", 3,
                      "common")
     cn.add_covenfolk("Arc", "crafter", "welder", "weapons and armor", 5,
                      "rare")
     savings = cn.calculate_all_savings()
     assert savings["buildings"]["woodworker"] == 3
     assert savings["weapons and armor"]["welder"] == 6
 def it_removes_covenfolk():
     cn = Covenfolken()
     folk = demo_folk()
     cn.add_covenfolk(folk)
     assert folk in cn.covenfolk.values()
     cn.remove_covenfolk(folk.name)
     assert folk not in cn.covenfolk.values()
Esempio n. 6
0
def process_new_covenant():
    # Create covenant core
    covenant = session["current_covenant"]

    covenant.name = request.form["covenant_name"]
    covenant.season = request.form["covenant_season"]

    income_sources = {}
    for income_source, income_value in zip(
            request.form.getlist('covenant_income_sources_names'),
            request.form.getlist('covenant_income_sources_values'),
        ):
        income_sources[income_source] = float(income_value)

    covenant.income_sources = income_sources
    #covenant.tithes = request.form["covenant_tithes"]
    covenant_tithes = {}
    for tithe_source, tithe_value in zip(
            request.form.getlist('tithe_sources_names'),
            request.form.getlist('tithe_sources_values'),
        ):
        covenant_tithes[tithe_source] = float(tithe_value)

    covenant.treasury = float(request.form["covenant_treasury"])
    covenant.inflation_enabled = request.form["covenant_inflation_enabled"]
    covenant.inflation = float(request.form["covenant_initial_inflation"])
    covenant.current_year = int(request.form["current_year"])
    covenant.tithes = covenant_tithes

    # Covenfolk content
    if not hasattr(covenant, "covenfolken"):
        covenant.covenfolk = Covenfolken()

    # Armory content
    if not hasattr(covenant, "armory"):
        covenant.armory = Armory()

    # Laboratory content
    if not hasattr(covenant, "laboratories"):
        covenant.laboratories = Laboratories()

    session['current_covenant'] = covenant
    return redirect("create_covenant_landing")
Esempio n. 7
0
    def __init__(
        self,
        name="Vernus",
        season="spring",
        income_sources={"source": 100},
        tithes={},
        treasury=50.0,
        laboratories=Laboratories(),
        covenfolken=Covenfolken(),
        armory=Armory(),
        inflation_enabled=True,
        inflation=0,
        current_year=1220,
    ):
        self.name = name

        if season.lower() in ["spring", "summer", "winter", "autumn"]:
            self.season = season.lower()
        else:
            raise ValueError(f"""
Season {season} is not an accepted covenant season!
Please select between spring, summer, autumn, and winter.
""")
        for k, v in income_sources.items():
            if not isinstance(k, str):
                raise TypeError("Income source names need to be strings!")
            if not isinstance(v * 1.0, float):
                raise TypeError("Income source values need to be numbers!")

        self.income_sources = income_sources
        self.tithes = tithes
        self.treasury = treasury
        self.covenfolken = covenfolken
        self.laboratories = laboratories
        self.armory = armory
        self.treasury = treasury
        self.inflation_enabled = inflation_enabled
        self.inflation = inflation
        self.expenses = float(
            "inf")  # Prevents inflation from taking effect the first year
        self.current_year = int(current_year)
Esempio n. 8
0
def modify_covenfolken():
    if request.method == "GET":
        return render_template("modify_covenfolken.html", saving_categories=SAVING_CATEGORIES)

    if request.method == "POST":
        print("C1")
        covenant = session["current_covenant"]

        covenfolken = Covenfolken()

        #form = request.form
        #json = request.json
        #values = request.values
        #data = request.data
        #args = request.args
        print("C2")
        getlist = request.form.getlist("crafter_name")
        covenfolk_input = request.form.getlist("covenfolk_input")
        non_crafters = ["magi", "companion", "grog", "noble", "dependant", "laborer", "servant", "teamster", "animal"]
        print("C3")
        for nc in non_crafters:
            current = f"{nc}_name"
            these_covenfolk = request.form.getlist(current)
            for covenfolk in these_covenfolk:
                if nc == "animal":
                    covenfolken.add_covenfolk(covenfolk, "horse")
                else:
                    covenfolken.add_covenfolk(covenfolk, nc)

        print("C4")
        count = 0
        crafter_names = request.form.getlist("crafter_name")
        crafter_professions = request.form.getlist("crafter_profession")
        crafter_saving_categories = request.form.getlist("crafter_saving_category")
        crafter_skills = request.form.getlist("crafter_skill")
        crafter_rarities = request.form.getlist("crafter_rarity")

        while count < len(crafter_names):
            covenfolken.add_covenfolk(
                    crafter_names[count],
                    "crafter",
                    crafter_professions[count],
                    crafter_saving_categories[count],
                    int(crafter_skills[count]),
                    crafter_rarities[count]
            )
            count+=1


        print("C5")
        count = 0
        specialist_names = request.form.getlist("specialist_name")
        specialist_professions = request.form.getlist("specialist_profession")
        specialist_saving_categories = request.form.getlist("specialist_saving_category")
        specialist_skills = request.form.getlist("specialist_skill")
        specialist_rarities = request.form.getlist("specialist_rarity")

        while count < len(specialist_names):
            covenfolken.add_covenfolk(
                    specialist_names[count],
                    "specialist",
                    specialist_professions[count],
                    specialist_saving_categories[count],
                    int(specialist_skills[count]),
                    specialist_rarities[count]
            )
            count+=1

        print("C6")
        covenant.covenfolken = covenfolken
        session["current_covenant"] = covenant
        print("C7")

        return render_template("create_covenant_landing.html")
 def it_returns_the_total_number_of_covenfolk_matching_profession():
     cn = Covenfolken()
     cn.add_covenfolk("weber", "magi", "writer", "consumables", 10)
     cn.add_covenfolk("yawgma", "magi", "hammerer", "buildings", 5)
     cn.add_covenfolk("dog", "horse", "stables", "buildings", 2)
     assert cn.total_count_of("writer") == 1
Esempio n. 10
0
 def it_creates_new_covenfolk_when_passed_parameters():
     cn = Covenfolken()
     cn.add_covenfolk("jane", "magi")
     assert "jane" in cn.covenfolk.keys()
     assert isinstance(cn.covenfolk["jane"], Covenfolk)
Esempio n. 11
0
 def it_accepts_new_covenfolk_objects():
     cn = Covenfolken()
     folk = demo_folk()
     cn.add_covenfolk(folk)
     assert folk in cn.covenfolk.values()
Esempio n. 12
0
 def it_instantiates():
     cn = Covenfolken()
     assert cn.covenfolk == {}
Esempio n. 13
0
 def it_calculates_the_savings_of_one_category():
     cn = Covenfolken()
     folk = demo_folk()
     cn.add_covenfolk(folk)
     assert cn.calculate_savings_of("buildings") == {"woodworker": 1}
     cn.add_covenfolk("James", "crafter", "woodworker", "buildings", 3,
                      "common")
     assert cn.calculate_savings_of("buildings") == {"woodworker": 3}
     cn.add_covenfolk("Arc", "crafter", "welder", "weapons and armor", 5,
                      "rare")
     assert cn.calculate_savings_of("weapons and armor") == {"welder": 6}