From f91bf49561ed54dad97d415f1d16630109e9d700 Mon Sep 17 00:00:00 2001 From: jim Date: Wed, 6 Dec 2023 23:31:06 +0300 Subject: [PATCH 1/2] completed --- lib/models.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/models.py b/lib/models.py index 2681bee5a..799f5ed43 100644 --- a/lib/models.py +++ b/lib/models.py @@ -15,6 +15,9 @@ class Company(Base): id = Column(Integer(), primary_key=True) name = Column(String()) founding_year = Column(Integer()) + freebles = relationship('Freeble', backref=backref('company')) + devs= relationship('Dev', back_populates='companies') + def __repr__(self): return f'' @@ -24,6 +27,19 @@ class Dev(Base): id = Column(Integer(), primary_key=True) name= Column(String()) + freebles = relationship('Freeble', backref=backref('dev')) + companies= relationship('Company', back_populates='devs') + def __repr__(self): return f'' + +class Freeble(Base): + __tablename__='freebies' + + id =Column(Integer(), primary_key=True) + item_name=Column(String()) + value=Column(Integer()) + company_id = Column(Integer(), ForeignKey('companies.id')) + dev_id = Column(Integer(), ForeignKey('devs.id')) + From 1722a94c5e1e2e447b96c06eab4bbe78a81ea43f Mon Sep 17 00:00:00 2001 From: jim Date: Thu, 7 Dec 2023 01:30:20 +0300 Subject: [PATCH 2/2] completed --- lib/models.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/models.py b/lib/models.py index 799f5ed43..0aefbba69 100644 --- a/lib/models.py +++ b/lib/models.py @@ -22,6 +22,14 @@ class Company(Base): def __repr__(self): return f'' + def give_freebie(self, dev, item_name, value): + new_freebie = Freeble(item_name=item_name, value=value, company=self, dev=dev) + return new_freebie + + @classmethod + def oldest_company(cls): + return cls.query.order_by(cls.founding_year).first() + class Dev(Base): __tablename__ = 'devs' @@ -34,6 +42,18 @@ class Dev(Base): def __repr__(self): return f'' + def received_one(self, item_name): + for freebie in self.freebles: + if freebie.item_name == item_name: + return True + return False + + def give_away(self, other_dev, freebie): + if freebie.dev == self: + freebie.dev = other_dev + return True + return False + class Freeble(Base): __tablename__='freebies' @@ -43,3 +63,5 @@ class Freeble(Base): company_id = Column(Integer(), ForeignKey('companies.id')) dev_id = Column(Integer(), ForeignKey('devs.id')) + def print_details(self): + return f"{self.dev.name} owns a {self.item_name} from {self.company.name}"