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
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, )
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"}, ), ]
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
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, )