def simple_building() -> business.Building:
    third = fractions.Fraction(1) / 3
    model = business.Building([
        business.Flat(
            name="1",
            original_name="1",
            fraction=third,
            owners=[business.Owner("Petr Novák")],
            persons={"Petr Novák"},
        ),
        business.Flat(
            name="2",
            original_name="2",
            fraction=third,
            owners=[business.Owner("Jana Nová")],
            persons={"Jana Nová"},
        ),
        business.Flat(
            name="3",
            original_name="3",
            fraction=third,
            owners=[business.Owner("Oldřich Starý")],
            persons={"Oldřich Starý"},
        ),
    ])
    model.add_person("Radoslava Květná")
    model.represent_flat("3", "Radoslava Květná")
    return model
Exemple #2
0
def test_load_json_shorten_names() -> None:
    json_flats = [
        {
            "name": "100/1",
            "fraction": "1/3",
            "owners": []
        },
        {
            "name": "100/2",
            "fraction": "2/3",
            "owners": []
        },
    ]

    flats = utils.from_json_to_flats(json_flats)

    unit = fractions.Fraction(1)
    assert flats == [
        business.Flat(name="1",
                      original_name="100/1",
                      fraction=unit / 3,
                      owners=[],
                      persons=set()),
        business.Flat(
            name="2",
            original_name="100/2",
            fraction=unit * 2 / 3,
            owners=[],
            persons=set(),
        ),
    ]
def building_with_one_owner() -> business.Building:
    share = fractions.Fraction(1) / 2
    return business.Building([
        business.Flat(
            name="1",
            original_name="1",
            fraction=share,
            owners=[business.Owner("Petr Novák")],
            persons={"Petr Novák"},
        ),
        business.Flat(
            name="2",
            original_name="2",
            fraction=share,
            owners=[business.Owner("Petr Novák"),
                    business.Owner("Jana Nová")],
            persons={"Petr Novák", "Jana Nová"},
        ),
    ])
def create_flat(name: str,
                represented: business.Person = None) -> business.Flat:
    third = fractions.Fraction(1) / 3
    return business.Flat(
        name=name,
        original_name=name,
        fraction=third,
        owners=[],
        persons=set(),
        represented=represented,
    )
Exemple #5
0
def test_load_json() -> None:
    json_flats = [
        {
            "name": "1",
            "fraction": "1/3",
            "owners": [{
                "name": "P1",
                "fraction": "1"
            }]
        },
        {
            "name": "2",
            "fraction": "2/3",
            "owners": [{
                "name": "P2",
                "fraction": "1"
            }]
        },
    ]

    flats = utils.from_json_to_flats(json_flats)

    unit = fractions.Fraction(1)
    assert flats == [
        business.Flat(
            name="1",
            original_name="1",
            fraction=unit / 3,
            owners=[business.Owner("P1")],
            persons={"P1"},
        ),
        business.Flat(
            name="2",
            original_name="2",
            fraction=unit * 2 / 3,
            owners=[business.Owner("P2")],
            persons={"P2"},
        ),
    ]
Exemple #6
0
def split_flats(flats: List[business.Flat],
                to_be_split: Collection[str]) -> List[business.Flat]:
    to_be_split = set(to_be_split)
    new_flats = []
    for flat in flats:
        if flat.name in to_be_split or flat.original_name in to_be_split:
            for order, owner in enumerate(flat.owners, start=1):
                persons = set(person
                              for person in utils.format_persons(owner.name))
                new_flats.append(
                    business.Flat(
                        name=f"{flat.name}-{order:02d}",
                        original_name=f"{flat.original_name}-{order:02d}",
                        owners=[
                            business.Owner(owner.name, fractions.Fraction(1))
                        ],
                        fraction=flat.fraction * owner.fraction,
                        persons=persons,
                    ))
        else:
            new_flats.append(flat)
    return new_flats
Exemple #7
0
def _convert_flat(flat: Dict, shorten_name: bool) -> business.Flat:
    name = flat["name"]
    if shorten_name:
        shortname = name.split("/", 1)[1]
    else:
        shortname = name

    owners = []
    for json_owner in flat["owners"]:
        owners.append(
            business.Owner(
                name=json_owner["name"],
                fraction=fractions.Fraction(json_owner["fraction"]),
            ))
    persons = set(person for owner in owners
                  for person in format_persons(owner.name))
    return business.Flat(
        name=shortname,
        original_name=name,
        owners=owners,
        fraction=fractions.Fraction(flat["fraction"]),
        persons=persons,
    )