class User(BaseModel, Base): """This is the class for user Attributes: email: email address password: password for you login first_name: first name last_name: last name """ __tablename__ = 'users' if os.getenv('HBNB_TYPE_STORAGE') == 'db': email = Column(String(128), nullable=False) password = Column(String(128), nullable=False) first_name = Column(String(128), nullable=True) last_name = Column(String(128), nullable=True) places = relationship('Place', back_populates='user', cascade='all, delete, delete-orphan') reviews = relationship('Review', back_populates='user', cascade='all, delete, delete-orphan') else: email = "" password = "" first_name = "" last_name = ""
class City(BaseModel, Base): """ The City class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'cities' state_id = Column(String(60), ForeignKey('states.id'), nullable=False) name = Column(String(128), nullable=False) places = relationship("Place", backref="city", cascade="all, delete, delete-orphan") __mapper_args__ = {"confirm_deleted_rows": False} else: name = "" state_id = "" def __init__(self, *args, **kwargs): """ Initializes from BaseModel """ super().__init__(*args, **kwargs) if getenv('HBNB_TYPE_STORAGE', 'fs') != 'db': @property def places(self): """ returns all places in a City """ all_places = models.storage.all("Place").values() result = [place for place in all_places if place.city_id == self.id] return result
class User(BaseModel, Base): """ User class """ if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = "users" email = Column(String(128), nullable=False) password = Column(String(128), nullable=False) first_name = Column(String(128), nullable=True) last_name = Column(String(128), nullable=True) places = relationship("Place", backref="user", cascade="all, delete, delete-orphan") reviews = relationship("Review", backref="user", cascade="all, delete, delete-orphan") else: email = "" password = "" first_name = "" last_name = "" def __init__(self, *args, **kwargs): """ initializes from BaseModel """ super().__init__(*args, **kwargs)
class User(BaseModel, Base): """User class handles all application users""" if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = 'users' email = Column(String(128), nullable=False) password = Column(String(128), nullable=False) first_name = Column(String(128), nullable=False) last_name = Column(String(128), nullable=False) places = relationship('Place', cascade='delete', backref='user') reviews = relationship('Review', cascade='delete', backref='user') else: email = '' password = '' first_name = '' last_name = '' def __init__(self, *args, **kwargs): """instantiates a new user""" super().__init__(self, *args, **kwargs)
class User(BaseModel, Base): """ User class """ if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = "users" email = Column(String(128), nullable=False) password = Column(String(128), nullable=False) first_name = Column(String(128), nullable=True) last_name = Column(String(128), nullable=True) places = relationship("Place", backref="user", cascade="all, delete, delete-orphan") reviews = relationship("Review", backref="user", cascade="all, delete, delete-orphan") else: email = "" password = "" first_name = "" last_name = "" def __init__(self, *args, **kwargs): """ initializes from BaseModel """ super().__init__(*args, **kwargs) def _credential_hash(self): """Md5 hash for password encryption.""" m = hashlib.md5() m.update(self.password.encode(encoding='utf_8')) self.password = m.hexdigest() return
class City(BaseModel, Base): """ The City class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'cities' state_id = Column(String(60), ForeignKey('states.id'), nullable=False) name = Column(String(128), nullable=False) else: name = "" state_id = "" def __init__(self, *args, **kwargs): """ Initializes from BaseModel """ super().__init__(*args, **kwargs) @property def places(self): """ returns all places in a city """ all_places = models.storage.all('Place').values() result = [place for place in all_places if place.city_id == self.id] return (result)
class City(BaseModel, Base): """This is the class for City Attributes: state_id: The state id name: input name """ __tablename__ = 'cities' state_id = Column(String(60), ForeignKey(State.id), nullable=False) name = Column(String(128), nullable=False) places = relationship("Place", backref="cities")
class Review(BaseModel, Base): """This is the class for Review Attributes: place_id: place id user_id: user id text: review description """ __tablename__ = "reviews" place_id = Column(String(60), ForeignKey(Place.id), nullable=False) user_id = Column(String(60), ForeignKey(User.id), nullable=False) text = Column(String(1024), nullable=False)
class City(BaseModel, Base): '''This is the 'City' class''' if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'cities' state_id = Column(String(60), ForeignKey('states.id'), nullable=False) name = Column(String(128), nullable=False) else: state_id = "" name = "" def __init__(self, *args, **kwargs): '''This is the initialization method''' super().__init__(*args, **kwargs)
class Place(BaseModel, Base): """This is the class for Place Attributes: city_id: city id user_id: user id name: name input description: string of description number_rooms: number of room in int number_bathrooms: number of bathrooms in int max_guest: maximum guest in int price_by_night:: pice for a staying in int latitude: latitude in flaot longitude: longitude in float amenity_ids: list of Amenity ids """ __tablename__ = 'places' if getenv('HBNB_TYPE_STORAGE') == 'db': city_id = Column(String(60), ForeignKey('cities.id'), nullable=False) user_id = Column(String(60), ForeignKey('users.id'), nullable=False) name = Column(String(128), nullable=False) description = Column(String(1024), nullable=True) number_rooms = Column(Integer, nullable=False, default=0) number_bathrooms = Column(Integer, nullable=False, default=0) max_guest = Column(Integer, nullable=False, default=0) price_by_night = Column(Integer, nullable=False, default=0) latitude = Column(Float, nullable=True) longitude = Column(Float, nullable=True) amenity_ids = [] # reviews = relationship( # 'Review', back_populates='place', # cascade='all, delete, delete-orphan') user = relationship( 'User', back_populates='places') # cascade? slave # amenities = relationship( # 'Amenity', secondary=place_amenity, # viewonly=False, back_populates='place_amenities') cities = relationship( 'City', back_populates='places') else: city_id = "" user_id = "" name = "" description = "" number_rooms = 0 number_bathrooms = 0 max_guest = 0 price_by_night = 0 latitude = 0.0 longitude = 0.0 amenity_ids = []
class Review(BaseModel, Base): '''This is the 'Review' class''' if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = "reviews" text = Column(String(1024), nullable=False) place_id = Column(String(60), ForeignKey('places.id'), nullable=False) user_id = Column(String(60), ForeignKey('users.id'), nullable=False) else: text = "" place_id = "" user_id = "" def __init__(self, *args, **kwargs): '''This is the initialization method''' super().__init__(*args, **kwargs)
class User(BaseModel, Base): """This is the class for user Attributes: email: email address password: password for you login first_name: first name last_name: last name """ __tablename__ = "users" email = Column(String(128), nullable=False) password = Column(String(128), nullable=False) first_name = Column(String(128)) last_name = Column(String(128)) places = relationship("Place", backref="user") reviews = relationship("Review", backref="user")
class Amenity(BaseModel, Base): """This is the class for Amenity Attributes: name: input name """ __tablename__ = "amenities" name = Column(String(128), nullable=False)
class State(BaseModel, Base): """ This is the State class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = "states" name = Column(String(128), nullable=False) cities = relationship("City", backref="state", cascade="all, delete, delete-orphan") else: name = "" def __init__(self, *args, **kwargs): """ initializes from BaseModel Class """ super(State, self).__init__(*args, **kwargs) @property def cities(self): """ returns all cities in a State """ all_cities = models.storage.all("City").values() result = [city for city in all_cities if city.state_id == self.id] return result
class City(BaseModel, Base): """This is the class for City Attributes: state_id: The state id name: input name """ __tablename__ = 'cities' if os.getenv('HBNB_TYPE_STORAGE') == 'db': name = Column(String(128), nullable=False) state_id = Column(String(60), ForeignKey('states.id'), nullable=False) state = relationship('State', back_populates='cities') else: name = "" state_id = ""
class State(BaseModel, Base): """ This is the State class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = "states" name = Column(String(128), nullable=False) cities = relationship("City", backref="state", cascade="all, delete, delete-orphan") else: name = "" @property def cities(self): """ return a dictionary of the city and the city id """ city_state_objs = [] for city_obj in models.storage.all("City").values(): if self.id == city_obj.state_id: city_state_objs.append(city_obj) return city_state_objs def __init__(self, *args, **kwargs): """ initializes from BaseModel Class """ super(State, self).__init__(*args, **kwargs)
class City(BaseModel, Base): """ The City class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'cities' state_id = Column(String(60), ForeignKey('states.id'), nullable=False) name = Column(String(128), nullable=False) else: name = "" state_id = "" def __init__(self, *args, **kwargs): """ Initializes from BaseModel """ super().__init__(*args, **kwargs)
class City(BaseModel): """City class handles all application cities""" if getenv("HBNB_TYPE_STORAGE") == "db": __tablename__ = "cities" name = Column(String(128), nullable=False) state_id = Column(String(60), ForeignKey("states.id"), nullable=False) places = relationship("Place", backref="city", cascade="all, delete, delete-orphan") __mapper_args = {"confirm_deleted_rows": False} else: name = '' state_id = '' def __init__(self, *args, **kwargs): """instantiates a new city""" super().__init__(self, *args, **kwargs)
class Review(BaseModel): """Review class handles all application reviews""" if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = 'reviews' text = Column(String(1024), nullable=False) place_id = Column(String(60), ForeignKey('places.id'), nullable=False) user_id = Column(String(60), ForeignKey('users.id'), nullable=False) else: place_id = '' user_id = '' text = '' def __init__(self, *args, **kwargs): """instantiates a new review""" super().__init__(self, *args, **kwargs)
class City(BaseModel, Base): """ The City class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'cities' state_id = Column(String(60), ForeignKey('states.id'), nullable=False) name = Column(String(128), nullable=False) places = relationship("Place", backref="city", cascade="all, delete, delete-orphan") else: name = "" state_id = "" def __init__(self, *args, **kwargs): """ Initializes from BaseModel """ super().__init__(*args, **kwargs)
class User(BaseModel, Base): """ User class """ if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = "users" email = Column(String(128), nullable=False) _password = Column("password", String(128), nullable=False) first_name = Column(String(128), nullable=True) last_name = Column(String(128), nullable=True) reviews = relationship("Review", backref="user", cascade="all, delete, delete-orphan") places = relationship("Place", backref="user", cascade="all, delete, delete-orphan") else: email = "" password = "" first_name = "" last_name = "" def __init__(self, *args, **kwargs): """ initializes from BaseModel """ value = kwargs.get("password", "") super().__init__(*args, **kwargs) @property def password(self): return self.__dict__.get('_password', "") @password.setter def password(self, value): """ hash the password Argument: value: password new value """ pwd = bytes(value.encode("utf-8")) self.__dict__['_password'] = hashlib.md5(pwd).hexdigest()
class Review(BaseModel, Base): """ The review class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = "reviews" place_id = Column(String(60), ForeignKey('places.id'), nullable=False) user_id = Column(String(60), ForeignKey('users.id'), nullable=False) text = Column(String(1024), nullable=False) else: place_id = "" user_id = "" text = "" def __init__(self, *args, **kwargs): """ initialize from the BaseModel class """ super().__init__(*args, **kwargs)
class Place(BaseModel, Base): """This is the class for Place Attributes: city_id: city id user_id: user id name: name input description: string of description number_rooms: number of room in int number_bathrooms: number of bathrooms in int max_guest: maximum guest in int price_by_night:: pice for a staying in int latitude: latitude in flaot longitude: longitude in float amenity_ids: list of Amenity ids """ __tablename__ = "places" city_id = Column(String(60), ForeignKey(City.id), nullable=False) user_id = Column(String(60), ForeignKey(User.id), nullable=False) name = Column(String(128), nullable=False) description = Column(String(1024)) number_rooms = Column(Integer, default=0, nullable=False) number_bathrooms = Column(Integer, default=0, nullable=False) max_guest = Column(Integer, default=0, nullable=False) price_by_night = Column(Integer, default=0, nullable=False) latitude = Column(Float) longitude = Column(Float) amenity_ids = [] reviews = relationship("Review", "place") amenities = relationship( "Amenity", backref="place_amenities", secondary="place_amenity", viewonly=False) @property def reviews(self): """returns a list of reviews with same place_id""" ret = [] for k, v in storage.all().keys(): if k.split(".")[0] == "Review": if v.place_id == self.id: ret.append(v) return ret
class User(BaseModel, Base): '''This is the 'User' class''' if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = "users" email = Column(String(128), nullable=False) password = Column(String(128), nullable=False) first_name = Column(String(128), nullable=False) last_name = Column(String(128), nullable=False) places = relationship("Place", backref="user", cascade="all, delete, delete-orphan") else: email = "" password = "" first_name = "" last_name = "" def __init__(self, *args, **kwargs): '''This is the initialization method''' super().__init__(*args, **kwargs)
class Review(BaseModel, Base): """This is the class for Review Attributes: place_id: place id user_id: user id text: review description """ __tablename__ = 'reviews' if os.getenv('HBNB_TYPE_STORAGE') == 'db': text = Column(String(1024), nullable=False) place_id = Column(String(60), ForeignKey('places.id'), nullable=False) user_id = Column(String(60), ForeignKey('users.id'), nullable=False) user = relationship('User', back_populates='reviews') # cascade? slave place = relationship('Place', back_populates='reviews') # cascade? slave else: text = "" place_id = "" user_id = ""
class State(BaseModel): """State class handles all application states""" if getenv('HBNB_TYPE_STORAGE') == 'db': __tablename__ = 'states' name = Column(String(128), nullable=False) cities = relationship("City", back_populates='state', cascade="delete, delete-orphan") else: name = '' def __init__(self, *args, **kwargs): """instantiates a new state""" super().__init__(self, *args, **kwargs)
class Amenity(BaseModel, Base): """Amenity class handles all application amenities""" if getenv("HBNB_TYPE_STORAGE") == "db": __tablename__ = "amenities" name = Column(String(128), nullable=False) place_amenities = relationship("PlaceAmenity", backref="amenities", cascade="all, delete, delete-orphan") else: name = "" def __init__(self, *args, **kwargs): """instantiates a new amenity""" super().__init__(self, *args, **kwargs)
class Amenity(BaseModel, Base): """ The Amenity class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'amenities' name = Column(String(128), nullable=False) else: name = "" def __init__(self, *args, **kwargs): """ initializes class objects. Inherts attributes from parent """ super().__init__(*args, **kwargs)
class Amenity(BaseModel, Base): """ The Amenity class """ if getenv('HBNB_TYPE_STORAGE', 'fs') == 'db': __tablename__ = 'amenities' name = Column(String(128), nullable=False) place_amenities = relationship("PlaceAmenity", backref="amenity", cascade="all, delete, delete-orphan") else: name = "" def __init__(self, *args, **kwargs): """ initializes class objects. Inherts attributes from parent """ super().__init__(*args, **kwargs)
class State(BaseModel, Base): """State class handles all application states""" if environ.get('HBNB_TYPE_STORAGE') == 'db': __tablename__ = 'states' name = Column(String(128), nullable=False) cities = relationship('City', cascade='all, delete-orphan', backref='state') else: name = '' @property def cities(self): cities = relationship('City', cascade='all, delete-orphan', backref='state') return cities