From 8305e109501f1972efc3608070bb74ecbce5ac1a Mon Sep 17 00:00:00 2001 From: Malcome Fein Date: Sun, 18 Dec 2022 13:48:13 -0500 Subject: [PATCH 1/4] Done for now. --- app/freebies.db | Bin 20480 -> 28672 bytes .../versions/19f2ebb7599b_first_init.py | 24 +++++ .../versions/39020a3533b7_added_all_models.py | 56 ++++++++++++ .../c4d7867d81f5_create_freebies_db.py | 2 +- .../ee905476242e_add_companies_devs_tables.py | 2 +- app/models.py | 82 +++++++++++++++++- app/seed.py | 43 +++++++++ 7 files changed, 204 insertions(+), 5 deletions(-) create mode 100644 app/migrations/versions/19f2ebb7599b_first_init.py create mode 100644 app/migrations/versions/39020a3533b7_added_all_models.py diff --git a/app/freebies.db b/app/freebies.db index 271836bca14f8d717e3d32909043488fb274d1cb..e36b6da9242f5dcd56bba1b365d941322f83faf4 100644 GIT binary patch literal 28672 zcmeI)Z%@-e90%~b0xPYKni#V92f2ihY#A6>14a@P$0)G44d{x>qo!;{8@3k4hVl@M zugFI{Jn*5{jltSXgoFpUe4CYBuXoq`eeT+DX|m#4&Z*mM%d1tbI#bC# zLMeI47$HRAyU6$UCh3VHfwIXd)^MC4PVM3rOtbjXU1-TC^r3dn~5 z1Rwwb2tWV=5P-l<3mmTXiLud9dbC@&HY;|?tL|8?WAB|O`ZKzgHZ*3W=W`l6&t`F1 za>^`QFtjC2XN47m71ndP2_{RfRkhjcw4PZ`>;CbU*Ko^@`_4SDty;Ur1S{2St8SM~ z{;&1|zkrd=YivPVOt0q*7SF8fx>hhuKeuS4^Q(yo*4QbBEBMW?>e+l+-(at_4HkFG z2|01}HX_DGM(F3hW=vZ(+ur0MwZFwcMD5&50^*B;su_-I->Nk1i)du2MRQnxMlm}-fo58u%^|hd(C4r+}Ly|qmPg5pg+1%zEkBF;U8=efB*y_009U<00Izz z00bZa0SNSnzz`M2)#p>GDNCJE)y-!zj|=Pn9vNJO0Rad=00Izz00bZa0SG_<0uVS8 zQ2NHD&h@|l{$EhO5alQTgAD=@fB*y_009U<00Izz00bZaf!iXG6e46&P|0G&syj8$ zWyR8a&#N%;TWTtmnw;jJSvEa0r_RpJOg*6ya-SE@&gaDsUCy`G|0hKGp`6^70MQQ! zKmY;|fB*y_009U<00Izz00cq;kA(p;tdfFL+U~NvAEg82kxKGbh5ri@5P$##AOHafKmY;|fB*y_ p0D=EgU`!Y!4=9yXvRbiRyA~C?yxnJXkPK6a7n=9H?Ymt{`~fPfv*!Q+ delta 153 zcmZp8z}T>Wae}lUD+2=q2*UvLL>*&MRtCLr4_^Ks3@m(74E((OJNfGQq&5o*EaT-& zW?>f>6=iJHoSe<)A;-lT5aj9W7!;}C?HZ||k(r{&rP;{M%q}i3&)Aqc`5#xo None: + pass + + +def downgrade() -> None: + pass diff --git a/app/migrations/versions/39020a3533b7_added_all_models.py b/app/migrations/versions/39020a3533b7_added_all_models.py new file mode 100644 index 000000000..8da7ef94d --- /dev/null +++ b/app/migrations/versions/39020a3533b7_added_all_models.py @@ -0,0 +1,56 @@ +"""Added All models + +Revision ID: 39020a3533b7 +Revises: 19f2ebb7599b +Create Date: 2022-12-16 10:36:10.825371 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '39020a3533b7' +down_revision = '19f2ebb7599b' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('company_devs', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('company_id', sa.Integer(), nullable=True), + sa.Column('dev_id', sa.Integer(), nullable=True), + sa.ForeignKeyConstraint(['company_id'], ['companies.id'], ), + sa.ForeignKeyConstraint(['dev_id'], ['devs.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('freebies', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('item_name', sa.String(), nullable=True), + sa.Column('value', sa.Integer(), nullable=True), + sa.Column('company_id', sa.Integer(), nullable=True), + sa.Column('dev_id', sa.Integer(), nullable=True), + sa.Column('created_at', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=True), + sa.Column('updated_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['company_id'], ['companies.id'], ), + sa.ForeignKeyConstraint(['dev_id'], ['devs.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.add_column('companies', sa.Column('created_at', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=True)) + op.add_column('companies', sa.Column('updated_at', sa.DateTime(), nullable=True)) + op.add_column('devs', sa.Column('created_at', sa.DateTime(), server_default=sa.text('(CURRENT_TIMESTAMP)'), nullable=True)) + op.add_column('devs', sa.Column('updated_at', sa.DateTime(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('devs', 'updated_at') + op.drop_column('devs', 'created_at') + op.drop_column('companies', 'updated_at') + op.drop_column('companies', 'created_at') + op.drop_table('freebies') + op.drop_table('company_devs') + # ### end Alembic commands ### diff --git a/app/migrations/versions/c4d7867d81f5_create_freebies_db.py b/app/migrations/versions/c4d7867d81f5_create_freebies_db.py index da258dc89..c61fec0f1 100644 --- a/app/migrations/versions/c4d7867d81f5_create_freebies_db.py +++ b/app/migrations/versions/c4d7867d81f5_create_freebies_db.py @@ -21,4 +21,4 @@ def upgrade() -> None: def downgrade() -> None: - pass + pass \ No newline at end of file diff --git a/app/migrations/versions/ee905476242e_add_companies_devs_tables.py b/app/migrations/versions/ee905476242e_add_companies_devs_tables.py index 3adc1353f..eeb11a391 100644 --- a/app/migrations/versions/ee905476242e_add_companies_devs_tables.py +++ b/app/migrations/versions/ee905476242e_add_companies_devs_tables.py @@ -36,4 +36,4 @@ def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.drop_table('devs') op.drop_table('companies') - # ### end Alembic commands ### + # ### end Alembic commands ### \ No newline at end of file diff --git a/app/models.py b/app/models.py index 8bc917b0c..5cb4aa7f6 100644 --- a/app/models.py +++ b/app/models.py @@ -1,25 +1,101 @@ #!/usr/bin/env python3 -from sqlalchemy import (Column, String, Integer) +from sqlalchemy import create_engine, func +from sqlalchemy import ForeignKey, Table, Column, Integer, String, DateTime +from sqlalchemy.orm import relationship, backref from sqlalchemy.ext.declarative import declarative_base + +engine = create_engine('sqlite:///freebie-tracker.db') + Base = declarative_base() + +company_dev = Table( + 'company_devs', + Base.metadata, + Column('id', Integer(), primary_key=True), + Column('company_id', ForeignKey('companies.id')), + Column('dev_id', ForeignKey('devs.id')), + extend_existing=True, +) + + +## far left + class Company(Base): __tablename__ = 'companies' id = Column(Integer(), primary_key=True) name = Column(String()) founding_year = Column(Integer()) + created_at = Column(DateTime(), server_default=func.now()) + updated_at = Column(DateTime(), onupdate=func.now()) + devs = relationship('Dev', secondary=company_dev, back_populates='companies') + freebies = relationship('Freebie', backref=backref('company')) def __repr__(self): - return f'' + return f'' + + def give_freebie(self ,dev, item_name, value): + # creates a new Freebie instance associated with this company and the given dev + freebie1 = Freebie(item_name, value) + freebie1.dev = dev + freebie1.company = self + return freebie1 + + @classmethod + def oldest_company(cls): + pass + # returns the Company instance with the earliest founding year. + + + + +## far right class Dev(Base): __tablename__ = 'devs' id = Column(Integer(), primary_key=True) name= Column(String()) + created_at = Column(DateTime(), server_default=func.now()) + updated_at = Column(DateTime(), onupdate=func.now()) + companies = relationship('Company', secondary=company_dev, back_populates='devs') + freebies = relationship('Freebie', backref=backref('dev')) + + def __repr__(self): + return f'' # - delete this next time!! + # return f'' - use this next time!! + + def received_one(self,item_name): + pass + + def give_away(self,dev, freebie): + pass + + + +## join table +class Freebie(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')) + created_at = Column(DateTime(), server_default=func.now()) + updated_at = Column(DateTime(), onupdate=func.now()) + def __repr__(self): - return f'' + return f'' + + def print_details(self): + return(f'{self.dev.name} owns a {self.item_name} from {self.company.name}') \ No newline at end of file diff --git a/app/seed.py b/app/seed.py index b16becbbb..ac1838280 100644 --- a/app/seed.py +++ b/app/seed.py @@ -1,3 +1,46 @@ #!/usr/bin/env python3 # Script goes here! +# from faker import Faker +import random +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from models import Company +from models import Dev +from models import Freebie + + +# fake = Faker() + +if __name__ == '__main__': + + engine = create_engine('sqlite:///freebies.db') + Session = sessionmaker(bind=engine) + session = Session() + + session.query(Company).delete() + session.query(Dev).delete() + session.query(Freebie).delete() + session.commit() + + # company + + ibm = Company(name="IBM", founding_year=1911) + fi_school = Company(name="Flatiron School ", founding_year=2012) + # dev + + malcome = Dev(name="Malcome") + nick = Dev(name="Nick") + + # Freebie + book = Freebie(item_name="Book", value=12, company_id=1, dev_id=1) + planer = Freebie(item_name="Planer", value=13, company_id=2, dev_id=1) + + # got = Freebie(item_name="Game of Thrones", value=6, company_id=1, dev_id=1) + + # pen = Freebie(item_name="Pen", value=5, company_id=1, dev_id=1) + + session.bulk_save_objects([ibm,fi_school,malcome,nick,book,planer ]) + + session.commit() From 3d5c49ea1d87ead5a2a3aa5963383ffefbd5dfb6 Mon Sep 17 00:00:00 2001 From: Malcome Fein Date: Sat, 11 Feb 2023 13:49:46 -0500 Subject: [PATCH 2/4] update --- app/freebie-tracker.db | 0 app/freebies.db | Bin 28672 -> 28672 bytes app/freebies.db-journal | Bin 0 -> 4616 bytes app/models.py | 58 ++++++++++++++++++++++++++++++++++------ 4 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 app/freebie-tracker.db create mode 100644 app/freebies.db-journal diff --git a/app/freebie-tracker.db b/app/freebie-tracker.db new file mode 100644 index 000000000..e69de29bb diff --git a/app/freebies.db b/app/freebies.db index e36b6da9242f5dcd56bba1b365d941322f83faf4..41eb06ef38c93bd1ba37483f14f8fbc99f12a9b6 100644 GIT binary patch delta 172 zcmZp8z}WDBae_3Xz(g5mMuCk9OZ53z`7IduAMkJHZ{ttmx7aKwpvGUX!OF&<&ScEs zQks{YnWx~ApI2H^%>LNOz{ptFz)07?Qo+c`%Fx2fz*LEajX@fyGCVarzbIRQ{Q(v= o+RSVWx|3n#QM*fWnOY}LI_%}1~Kj7cISx{g(khJ$T008ve42u8& diff --git a/app/freebies.db-journal b/app/freebies.db-journal new file mode 100644 index 0000000000000000000000000000000000000000..194f9059ddb43ee4f76df871c2ec38bd05ea96bb GIT binary patch literal 4616 zcmZQzKmgWPnumZqb_NC}ASHm17-bFT5Mbv8`i_ZzCj$7V$C}85kMq8Um4- gf}yFEv6+>rfdV53gD4{>P?1x9el`yl6`*k+03-eq)c^nh literal 0 HcmV?d00001 diff --git a/app/models.py b/app/models.py index 5cb4aa7f6..62b0d0748 100644 --- a/app/models.py +++ b/app/models.py @@ -2,7 +2,7 @@ from sqlalchemy import create_engine, func from sqlalchemy import ForeignKey, Table, Column, Integer, String, DateTime -from sqlalchemy.orm import relationship, backref +from sqlalchemy.orm import relationship, backref, sessionmaker from sqlalchemy.ext.declarative import declarative_base @@ -40,15 +40,27 @@ def __repr__(self): def give_freebie(self ,dev, item_name, value): # creates a new Freebie instance associated with this company and the given dev - freebie1 = Freebie(item_name, value) - freebie1.dev = dev - freebie1.company = self - return freebie1 + Session = sessionmaker(bind=engine) + session = Session() + freebie = Freebie(item_name=item_name,value=value) + freebie.dev = dev + freebie.company = self + session.add(freebie) + session.commit() + + @classmethod def oldest_company(cls): - pass # returns the Company instance with the earliest founding year. + # ipdb.set_trace() + Session = sessionmaker(bind=engine) + session = Session() + old_company = session.query(Company).all()[0] + return old_company + + + @@ -65,15 +77,45 @@ class Dev(Base): companies = relationship('Company', secondary=company_dev, back_populates='devs') freebies = relationship('Freebie', backref=backref('dev')) + def __init__(self, name): + self.name = name + def __repr__(self): return f'' # - delete this next time!! # return f'' - use this next time!! def received_one(self,item_name): - pass + # Dev.received_one(item_name) accepts an item_name (string) and returns True if any of the freebies associated with the dev has that item_name, otherwise returns False. + for d in self.freebies: + if d.item_name == item_name: + print(''' + + TRUEEEEEE + + ''') + return True + return False + def give_away(self,dev, freebie): - pass + # Dev.give_away(dev, freebie) accepts a Dev instance and a Freebie instance, changes the freebie's dev to be the given dev; your code should only make the change if the freebie belongs to the dev who's giving it away + Session = sessionmaker(bind=engine) + session = Session() + # # dev = self + freebie = session.query(Freebie).filter_by(dev_id=dev.id).first() + print(''' + + + + ******** HEY IM HERE!!!!!!!!!!!!!!!!!! ******** + + + + + ''') + freebie.dev_id = dev.id + session.commit() + From be554e2a72ef7dedc938226304e1c9174a984f25 Mon Sep 17 00:00:00 2001 From: Malcome Fein Date: Sat, 11 Feb 2023 13:51:04 -0500 Subject: [PATCH 3/4] need to fix later --- app/models.py | 5 +++++ playground.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 playground.py diff --git a/app/models.py b/app/models.py index 62b0d0748..7dc267b40 100644 --- a/app/models.py +++ b/app/models.py @@ -98,6 +98,11 @@ def received_one(self,item_name): def give_away(self,dev, freebie): + ### + ### + #-- broken need to fix!!! + ### + ### # Dev.give_away(dev, freebie) accepts a Dev instance and a Freebie instance, changes the freebie's dev to be the given dev; your code should only make the change if the freebie belongs to the dev who's giving it away Session = sessionmaker(bind=engine) session = Session() diff --git a/playground.py b/playground.py new file mode 100644 index 000000000..4e64f2f96 --- /dev/null +++ b/playground.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Script goes here! +# from faker import Faker +import random +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + +from models import Company +from models import Dev +from models import Freebie + + +# fake = Faker() + +if __name__ == '__main__': + + engine = create_engine('sqlite:///freebies.db') + Session = sessionmaker(bind=engine) + session = Session() + + session.query(Company).delete() + session.query(Dev).delete() + session.query(Freebie).delete() + session.commit() + + # company + + ibm = Company(name="IBM", founding_year=1911) + fi_school = Company(name="Flatiron School ", founding_year=2012) + wework = Company(name="WeWork ", founding_year=2016) + dd = Company(name="Dunkin Donuts", founding_year=2019) + # dev + + malcome = Dev(name="Malcome") + nick = Dev(name="Nick") + + # Freebie + book = Freebie(item_name="Book", value=12, company_id=1, dev_id=1) + planer = Freebie(item_name="Planer", value=13, company_id=2, dev_id=1) + + # got = Freebie(item_name="Game of Thrones", value=6, company_id=1, dev_id=1) + + # pen = Freebie(item_name="Pen", value=5, company_id=1, dev_id=1) + + session.bulk_save_objects([ibm,fi_school,malcome,nick,book,planer ]) + + session.commit() + +##### + +# put the following in the ipdb! + +# 1-- Company.give_freebie(dev, item_name, value) +dev = Dev(name="Bob") +item_name = "T-shirt" +value = 2 +Company.give_freebie(dev, item_name, value) From cc11b6153e89b73b211df46d34d1ede18a7ce382 Mon Sep 17 00:00:00 2001 From: Malcome Fein Date: Sun, 12 Feb 2023 11:50:36 -0500 Subject: [PATCH 4/4] fin --- app/__pycache__/models.cpython-38.pyc | Bin 0 -> 4097 bytes app/debug.py | 1 - app/freebies.db | Bin 28672 -> 28672 bytes app/freebies.db-journal | Bin 4616 -> 0 bytes app/models.py | 14 +++++++++++--- 5 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 app/__pycache__/models.cpython-38.pyc delete mode 100644 app/freebies.db-journal diff --git a/app/__pycache__/models.cpython-38.pyc b/app/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc1ff4210981a2f701a950a92c1d01bef39d54f5 GIT binary patch literal 4097 zcma)9TW{OQ73T0JilSusnskx2+NL)xVhioIMVrQHc9VD;v}+U_2So`K1g#l4Oh`%@ zQps9SfC5_dp@4w`eJlbvkNGG44Sd~)qJJSkFW(tbvg{;9M&QvoGl%4y+c$>~noU>3 z7=QiG{?%1Y`$^$AZzP`YsW~%lCN00kG{LwvWB!V0%{0F)Om2(zqg7$?ny_aYcX<88faD5; zH)d?6gZIEUiN|W|#P-)d)A$N+f2HxZXwM9P9r7w)gS@8X4an=f@PLCT5nZG3q=>^j8m8I9XjIe=!~SC_28EZ2EW>OPJ{GdeiZ&PhIF!(Q zDuTl>6O$|1lQ_!7^VaIrUg4Hj zCgf8g;i^G6j&sa7!*o322vT9(5l>&~emxWYVankuC+gD-KaL)Ny9|!zSggG zCauA6oN{^*>qSuY7=>`@Fvl=fhk zh=-#@q=1hBT<@!{g8eBio zpW9P5wF9^e)SOzU*3^ERa*fC~snqV5)mhZ4GA(MAUzEd3@&H{pF%%#Ks1x=T4R%~xkcv{_q&%VMJN_QP`E*W%o)eTdqMDI9LCj3GYE2m&{C9? zN0M?xlJg|JNnR!LT_SYeNODeLq{C;xHHFVS2=l@%tC)C6hgQ+33?f)8Opr{~YT;B7 z$|S`|l0ndo!z@b#YJg(5}^Pq4}Jh9yA0wmQ*R-nE_|@YTCA-*rsL^MY4xFS zZY(hKFPMH$%&Y?`-P1;elpc`sY=)4sDOy0vl?o}_kQ}kPK+3fWDc38c+$eF<-z*P6 ze~YgpX*MJwl>8K=#7IfDNwQKIBELx-RZUqJ9dLaeWIl+eOJyth9VM#;Woa^$rV3tH zFH1`W^31cUYLFvQ8s$OoJKUV9N3)3s$O3$n3+JkXvYQe>y^m648C_KsOspHYyCc7Y zMR}J90o27Jy70yl(au>&Z(F>PwoGV#NBiRys>DaA$;Z01a~yy(KodYozpp*9 zIaQ>&Kl#LUJ8u~WUp%<0#v7||OdRZW4N2B2Oe!p#>uHWDg;fMo1>+Ztqei1I07g6* zrsDU|$tW^}L@skIhfUh#-({sfSvVh*tP6|pKv*CUkOl|@pe_;UkvV0LEI>6QKz^?0 zHExg>Xm+Xx4)p2^pf>jvK6RN~$0H}Bg{A+8`KTJ5U*G*h=icY|`{M40Z;Z}d%{}w> zn-A@}XP78|hAotbL46R#IXZ&FV}&?{HHc)E%g;!GHY$Gv0z5rC8-7Bw3-G+?`?>=5 z@L71wp_kF=qtyVF`eo+0aD9_pztGw5UXs`8dA}rbgUBwCcf#NT0VSQC@>fJ|5upgn zPl#M1LTyQzHhaV=sJlnpZ;71MpyCv|5fG4WMhC?l-4@tp0Nt7jEc#eJH|W5+g)93r z$a`WN`oyXq1Sec>Qq%4?%1#k78h^-yc}=XhPFH|}HZTvL0ZTJA%&gLf06M`n?(zoy z*SUw%YnGTrbyMNm8d$kOWPxyR01H_{w`4yDSq7Fx+lChI5}G$afL=CqkSs_BB)e+q zYWtJ*8+&D^*jY3ryYfRkbYiQvWOuSSog%(Fq3#=9`0hmS-t3xZ&4!-Oc$n&uQ%ATzcQCSafQV zqPOI+cUFq3h0jU(ZDl~-_!F*-az&Mag3UH-(?M@Iw#uyi?pERAs|;QCLy;UyI=56~ zQtpC$yHvvtiL@WTb#~9rP$p&7s#+zW@IP2u#%I{h(wCrY(nF}B^UY83QCK)=S3-Qa zgk{xJ)s~03I<4PgTH)L%d$5}Zbh8dfn|0U*^9)C~4V~%CL?eS9p6Rb`uYIk3{eOf~ BcOL)% literal 0 HcmV?d00001 diff --git a/app/debug.py b/app/debug.py index 4f922eb69..f95db6cd5 100644 --- a/app/debug.py +++ b/app/debug.py @@ -1,7 +1,6 @@ #!/usr/bin/env python3 from sqlalchemy import create_engine - from models import Company, Dev if __name__ == '__main__': diff --git a/app/freebies.db b/app/freebies.db index 41eb06ef38c93bd1ba37483f14f8fbc99f12a9b6..047316d64fdf284fa29ebe0ae220508defde6994 100644 GIT binary patch delta 70 zcmZp8z}WDBae_3X;6xc`M!}5$7V$C}85kMq8Um4- gf}yFEv6+>rfdV53gD4{>P?1x9el`yl6`*k+03-eq)c^nh diff --git a/app/models.py b/app/models.py index 7dc267b40..981a2ea56 100644 --- a/app/models.py +++ b/app/models.py @@ -6,7 +6,8 @@ from sqlalchemy.ext.declarative import declarative_base -engine = create_engine('sqlite:///freebie-tracker.db') +engine = create_engine('sqlite:///freebies.db') +# engine = create_engine('sqlite:///freebie-tracker.db') Base = declarative_base() @@ -107,7 +108,7 @@ def give_away(self,dev, freebie): Session = sessionmaker(bind=engine) session = Session() # # dev = self - freebie = session.query(Freebie).filter_by(dev_id=dev.id).first() + #freebie = session.query(Freebie).filter_by(dev_id=dev.id).first() print(''' @@ -118,7 +119,14 @@ def give_away(self,dev, freebie): ''') - freebie.dev_id = dev.id + print(freebie) + + session.add(dev) + session.commit() + + dev_just_added = session.query(Dev).order_by(Dev.id.desc()).first() + + freebie.dev_id = dev_just_added.id session.commit()