from datetime import date
import json
class User:
def __init__(dog, image, link, name, uid, breed, sex, dob, price):
dog._image = image
dog._link = link
dog._name = name # variables with dog prefix become part of the object,
dog._uid = uid
dog._breed = breed
dog._sex = sex
dog._dob = dob
dog._price = price
@property
def image(dog):
return dog._image
# a setter function, allows name to be updated after initial object creation
@image.setter
def image(dog, image):
dog._image = image
@property
def link(dog):
return dog._link
# a setter function, allows name to be updated after initial object creation
@link.setter
def link(dog, link):
dog._link = link
@property
def name(dog):
return dog._name
# a setter function, allows name to be updated after initial object creation
@name.setter
def name(dog, name):
dog._name = name
# a getter method, extracts email from object
@property
def uid(dog):
return dog._uid
# a setter function, allows name to be updated after initial object creation
@uid.setter
def uid(dog, uid):
dog._uid = uid
# check if uid parameter matches user id in object, return boolean
def is_uid(dog, uid):
return dog._uid == uid
@property
def breed(dog):
return dog._breed
# a setter function, allows name to be updated after initial object creation
@breed.setter
def breed(dog, breed):
dog._breed = breed
@property
def sex(dog):
return dog._sex
# a setter function, allows name to be updated after initial object creation
@sex.setter
def sex(dog, sex):
dog._breed = sex
# dob property is returned as string, to avoid unfriendly outcomes
@property
def dob(dog):
dob_string = dog._dob.strftime('%m-%d-%Y')
return dob_string
# dob should be have verification for type date
@dob.setter
def dob(dog, dob):
dog._dob = dob
# age is calculated and returned each time it is accessed
@property
def age(dog):
today = date.today()
return today.year - dog._dob.year- ((today.month, today.day) < (dog._dob.month, dog._dob.day))
#getter
@property
def price(dog):
return dog._price
#setter
@price.setter
def price(dog, price):
dog._price = price
# dictionary is customized, removing password for security purposes
@property
def dictionary(dog):
dict = {
"image" : dog.image,
"link" : dog.link,
"name" : dog.name,
"uid" : dog.uid,
"breed" : dog.breed,
"sex" : dog.sex,
"dob" : dog.dob,
"age" : dog.age,
"price": dog.price
}
return dict
# output content using json dumps, this is ready for API response
def __str__(dog):
return json.dumps(dog.dictionary)
# output command to recreate the object, uses attribute directly
def __repr__(dog):
return f'User(image={dog._image}, link={dog._link}, name={dog._name}, uid={dog._uid}, breed={dog._breed}, dob={dog._dob}, price={dog._price})'
if __name__ == "__main__":
u1 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/cc7c5dd6a09649e3bf5c6bca96b21daa-1670625496-1670625511-jpg/1024-0-', 'https://haeryny.github.io/teamteam/doginfo/', name='Joe', uid='81729', breed='Labrador Retriever Blend', sex='male', dob=date(2022, 2, 11), price='$200')
u2 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/672cb9b41e7548f68316d4a328c772d2-1673989499-1673989524-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Bean', uid='83792', breed='Shepherd-Rottweiler Blend', sex="male", dob=date(2019, 1, 31), price='$180')
u3 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/9f57a9ccb04d489c8e0faeb7a6aaecc1-1671755085-1671755107-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Harry', uid='80032', breed='Hound-Terrier Blend', sex= "male", dob=date(2020, 4, 29), price='$160')
u4 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/7a0fd8c5107f469a8b6e3ec6db1bc48a-1671827148-1671827194-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Honey', uid='90276', breed='Retriever Blend', sex= "female", dob=date(2021, 11, 1), price='$200')
u5 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/3b17d9a97b4e41ff984e54467d122820-1670895829-1670895970-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='George', uid='90277', breed='Retriever Blend', sex= "male", dob=date(2021, 11, 1), price='$200')
u6 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/574b155c13f5453093faa9a9bbe6cc09-1672428396-1672428453-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Julie', uid='91236', breed='Black Mouth Cur Blend', sex= "female", dob=date(2022, 4, 9), price='$250')
u7 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/286ffc0f2e2f4227b804656084a2eb1c-1675561494-1675561497-jpeg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Violet', uid='86327', breed='Retriever Blend', sex= "female", dob=date(2021, 6, 5), price='$198')
u8 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/1e445a3de6a44e9ca42ff1f36da4a9b0-1674933023-1674933059-jpeg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Doug', uid='87729', breed='Shepherd Blend', sex= "male", dob=date(2018, 11, 1), price='$120')
u9 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/7921672da5a745d497b014d1e25802eb-1673041880-1676231549-jpeg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Thor', uid='90028', breed='Retriever Blend', sex= "male", dob=date(2020, 8, 17), price='$200')
u10 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/16890ba2d55b4d2b99b4c1149f8425c5-1675099945-1675099968-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Stark', uid='92888', breed='Doberman Pinscher Blend', sex= "male", dob=date(2020, 9, 12), price='$220')
u11 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/da1af9aca3db4c76b250193cafbe6874-1675374061-1675374069-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Bucky', uid='94465', breed='Border Collie-Shepherd Blend', sex= "male", dob=date(2020, 9, 24), price='$140')
u12 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/3153afbaf9ed464ab7ab05de8cc68245-1660424834-1661448994-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Wanda', uid='90992', breed='Shepherd-Husky Blend', sex= "female", dob=date(2019, 2, 1), price='$260')
u13 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/0c5b23a621874bbcbb4af72e870f2396-1662938148-1662938165-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Tasha', uid='94327', breed='Jack Russel Terrier', sex= "female", dob=date(2019, 10, 20), price='$130')
u14 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/d9681fb1d6ec4e718a58a6dd40e4b333-1675210646-1675558115-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Shang', uid='80786', breed='Chihuahua Short Coat', sex= "male", dob=date(2019, 8, 25), price='$140')
u15 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/7046abe642674a07bb4ff5a8f5c44da0-1675283719-1675283745-jpeg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Parker', uid='86009', breed='Dachshund', sex= "male", dob=date(2020, 3, 9), price='$155')
u16 = User(image='https://i0.wp.com/timesofsandiego.com/wp-content/uploads/2022/08/Beagle.jpg?ssl=1', link='https://haeryny.github.io/teamteam/doginfo/', name='Cap', uid='89322', breed='Beagle', sex= "male", dob=date(2022, 1, 11), price='$200')
u17 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/3236e8ede81d4e44b9bf806a18464230-1666577817-1666577841-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Shuri', uid='85359', breed='American Staffordshire Terrier', sex= "female", dob=date(2022, 1, 23), price='$190')
u18 = User(image='https://do31x39459kz9.cloudfront.net/storage/image/daddeb64a1374a75821e01893d456306-1671391639-1671391712-jpg/1024-0-', link='https://haeryny.github.io/teamteam/doginfo/', name='Musa', uid='96971', breed='American Bulldog', sex= "female", dob=date(2022, 2, 22), price='$160')
u19 = User(image='https://www.aspcapetinsurance.com/media/2325/facts-about-maltese-dogs.jpg', link='https://haeryny.github.io/teamteam/doginfo/', name='Bloom', uid='91298', breed='Maltese', sex= "female", dob=date(2017, 12, 11), price='$110')
u20 = User(image='https://dl5zpyw5k3jeb.cloudfront.net/organization-photos/38001/4/?bust=1516228994&width=720', link='https://haeryny.github.io/teamteam/doginfo/', name='Stella', uid='98030', breed='Cattle Dog', sex= "female", dob=date(2017, 12, 27), price='$220')
users = [u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, u18, u19, u20]
print("Dogs in our Database: ")
print(u1)
print(u2)
print(u3)
print(u4)
print(u5)
print(u6)
print(u7)
print(u8)
print(u9)
print(u10)
print(u11)
print(u12)
print(u13)
print(u14)
print(u15)
print(u16)
print(u17)
print(u18)
print(u19)
print(u20)
# print("\nJSON:\n", u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15, u16, u17, u18, u19, u20, "\n")