def perform_ratings_from_dictionary(self, bathroom, user, dic): if "user_ratings" in dic: ratings = dic["user_ratings"] if ratings["cleanliness"] is not None: clean = Rating(0, ratings["cleanliness"]) clean.user = user clean.bathroom = bathroom db.session.add(clean) db.session.commit() if ratings["privacy"] is not None: priv = Rating(1, ratings["privacy"]) priv.user = user priv.bathroom = bathroom db.session.add(priv) db.session.commit() if ratings["atmosphere"] is not None: atm = Rating(2, ratings["atmosphere"]) atm.user = user priv.bathroom = bathroom db.session.add(atm) db.session.commit() if ratings["location_accessibility"] is not None: loc = Rating(3, ratings["location_accessibility"]) loc.user = user loc.bathroom = bathroom db.session.add(loc) db.session.commit() return True
def set_user_bathroom_rating(self, user, rating): b = Bathroom.query.filter_by(id=rating["bathroom_id"]).first() if not b: return (False, "bathroom with id %d not found" % rating["bathroom_id"]) if not (rating["rating"] > 0 and rating["rating"] <= 5): return (False, "invalid rating") # need to check if rating already exists existing_rating = Rating.query.filter_by(user_id=user.id).filter_by( bathroom_id=b.id).filter_by( rating_type=int(rating["rating_type"])).first() if existing_rating: existing_rating.rating = rating["rating"] else: r = Rating(rating["rating_type"], rating["rating"]) r.user = user r.bathroom = b db.session.add(r) db.session.commit() return True, ""