From e370e64f3c5c9a5e87d2c27a44acd6a49122e09b Mon Sep 17 00:00:00 2001 From: CAROLKOECH Date: Fri, 1 Sep 2023 20:01:25 +0300 Subject: [PATCH] done --- lib/__pycache__/models.cpython-310.pyc | Bin 0 -> 2973 bytes lib/debug.py | 36 +++++++++++++++-- lib/freebies.db | Bin 20480 -> 20480 bytes lib/models.py | 52 +++++++++++++++++++++++-- 4 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 lib/__pycache__/models.cpython-310.pyc diff --git a/lib/__pycache__/models.cpython-310.pyc b/lib/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45fef0cd288f8848b2422905131730c98fcaea8e GIT binary patch literal 2973 zcma)8OK;mo5ayDUNKvFL=jo(>K$aUn4lCC-v0wtra(5Out#~N)g@5u05pgXh)dQ<63pu5xq-BWs-wzjnH(m!C0 z)~!kBe$H9Ell{cTvc8cg2Wcj)AG3n(FfQv`1&^~GY5&5C@LpJiU0u4IC1DZgnHa_+ zX>Etm9%q9tk!{MNB;+u5$b#)qFsTprCU*vV!RKEV;da7;EKFHffEuZDf?M+**n)A+ zXs|dFHeH4_U_lV&*&)mDSm?A$RF_Ts~XABcs7_eZJj}9P;OhjbCd~6#~H=zF40zt`C z+tvO8yI&Y^stx%t$bn&6DS*)?S&E?BBiAZv$Va=@fP z*&)9Gi@Jm_;$svY5YnowRt}fqI`+Feh`ws@1LzTGSz9;BQbjqu=>{As(2Og_ z0J#F`2EqP8m{cQPP;#kMIr_yh7E+HX$1CD1D84{pVZU8PP4JJf?QoeM zRupwhg8E)XPXmB2O~8_P#Ft=ug{2Zi7eRd|?f7LFMWWT#V22Jz6!5Dk5KQMC$3T6J z{djK^7go#}aUNLcEnb4auov2&+JI0(^~`LJ$8Ig}OCGkjB~$%h;0RoVWp1MQN(N1IUnDsw!9EeZV)NYbZNpBQJ))Lkh2la(j-` z(rrch@Nqa+p~UCO0g#$+CLY>!I=b0yado4sFoX9{paXOI@LQyCREV|F(XPz6W8Q88bLi%PDwI>?)M^z%5*BDsTSrn02gGnGS`7#Q@YDM zS_cSPknvj3wyXA1MX7d0spXPVC4=zlOGZsBh_&d&bmEqe7i2)tlo$LWOe;zMuKadN zw8q-~G67X&Q!siL*&g7&ifrv_)tqqWPr^G=P{R3`M|TNiQuUH!Mui>&dtTJa%xZV? z$C>Daok_hj;Cb5Vn&o?;o=F9BOiOQj2c!pCKPv!yMHnaIAxu+k#!IrqZc02DH`lUD~QFRL}Ps+WIyOVp9DMEySm7hCzq4jW#^kF0pmj zP*=U#U6zj6Pr@V`vUIFYU!Z|v0Mbad=979kPfKfT9J#hI!k!epg&#!TzzN{Q?6;0% u0+Hqq@OPqsQ{o7XeVZ53UMthyI^MdWae_1>+e8^>RyGE`aIcLi3-mdd`0p|BzvsWVSy12-zaBpm3xhn9bAE0? zVqT?!6Z-{zMq~j;_G7#Z3=B;CZy5N$@xR$DXz+kvgoBBhLEI&^Od*nk5z2}H0CjmB AUjP6A delta 49 wcmZozz}T>Wae_1>>qHr6R#pbRc-f693-p;71U3r_+~=P-L7I)10SMq+07VfDtpET3 diff --git a/lib/models.py b/lib/models.py index 2681bee5a..998be6036 100644 --- a/lib/models.py +++ b/lib/models.py @@ -15,15 +15,61 @@ class Company(Base): id = Column(Integer(), primary_key=True) name = Column(String()) founding_year = Column(Integer()) - + + # Define the relationship between Company and Freebie + freebies = relationship("Freebie", back_populates="company") + def __repr__(self): return f'' + def give_freebie(self, dev, item_name, value): + # Create a new Freebie associated with this company and the given dev + freebie = Freebie(item_name=item_name, value=value, dev=dev, company=self) + return freebie + + @classmethod + def oldest_company(cls, session): + # Return the Company instance with the earliest founding year + return session.query(cls).order_by(cls.founding_year).first() + class Dev(Base): __tablename__ = 'devs' id = Column(Integer(), primary_key=True) - name= Column(String()) - + name = Column(String()) + + # Define the relationship between Dev and Freebie + freebies = relationship("Freebie", back_populates="dev") + def __repr__(self): return f'' + + def received_one(self, item_name): + # Check if any of the freebies associated with the dev has the given item_name + return any(freebie.item_name == item_name for freebie in self.freebies) + + def give_away(self, other_dev, freebie): + # Change the freebie's dev to be the given dev if it belongs to the current dev + if freebie.dev == self: + freebie.dev = other_dev + +class Freebie(Base): + __tablename__ = 'freebies' + + id = Column(Integer(), primary_key=True) + item_name = Column(String()) + value = Column(Integer()) + + # Define foreign key relationships to Dev and Company + dev_id = Column(Integer(), ForeignKey('devs.id')) + company_id = Column(Integer(), ForeignKey('companies.id')) + + # Define the relationships between Freebie and Dev/Company + dev = relationship("Dev", back_populates="freebies") + company = relationship("Company", back_populates="freebies") + + def __repr__(self): + return f'' + + def print_details(self): + return f'{self.dev.name} owns a {self.item_name} from {self.company.name}'