forked from alexaorrico/AirBnB_clone_v2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplace.py
executable file
·64 lines (57 loc) · 2.52 KB
/
place.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/python3
""" holds class Place"""
import models
from models.base_model import BaseModel, Base
from sqlalchemy import Column, String, Integer, Float, ForeignKey, Table
from sqlalchemy.orm import relationship
if models.storage_t == 'db':
place_amenity = Table('place_amenity', Base.metadata,
Column('place_id', String(60),
ForeignKey('places.id', ondelete='CASCADE'),
primary_key=True, nullable=False),
Column('amenity_id', String(60),
ForeignKey('amenities.id',
ondelete='CASCADE'),
primary_key=True, nullable=False))
class Place(BaseModel, Base):
"""Representation of Place """
if models.storage_t == 'db':
__tablename__ = 'places'
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)
reviews = relationship("Review", backref="place",
cascade="all, delete-orphan")
amenities = relationship("Amenity", secondary=place_amenity,
viewonly=False, backref="place_amenities")
amenity_ids = []
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 = []
def to_dict(self):
"""Returns a dictionary representation of a Place instance"""
place_dict = super().to_dict()
place_dict["amenities"] = [amenity.id for amenity in self.amenities]
return place_dict
def __setattr__(self, key, value):
"""Handle special case for handling amenities attribute"""
if key == "amenities" and models.storage_t != 'db':
self.amenity_ids = value
else:
super().__setattr__(key, value)