Ejemplo n.º 1
0
    def get_scores(self, house, details=None):
        scores = {}
        total_score = 0.0
        for k in self.default_fields:
            if k == "value": continue
            method = getattr(self, k, None)
            if method is None: continue
            result = method(house, details)
            scores[k] = dict(**result._asdict())
            total_score += result.money
            if not result.accepted:
                scores["cutoff"] = ",".join(
                    filter(None, [scores.get("cutoff"), k]))

        # value evaluation must be run last
        result = self.value(house, details, total_score)
        scores["value"] = dict(**result._asdict())
        if not result.accepted:
            scores["cutoff"] = ",".join(
                filter(None, [scores.get("cutoff"), "value"]))

        scores["facts"] = {
            "build":
            house.get("year_built", -1),
            "full_address":
            RFAPI.house_address(house),
            "beds":
            house["beds"],
            "sqft":
            house["sqft"] if house.get("sqft") is not None else 0.0,
            "baths":
            house.get("baths", 0),
            "price":
            house["price"],
            "County":
            RFAPI.house_county(house, details),
            "photo":
            RFAPI.house_photo_url(house, details),
            "neighborhoods":
            RFAPI.house_neighborhoods(house, details)
            if details is not None else []
        }
        return scores