From 67264b3da66053e068dbd988cc6dd0a19508da2e Mon Sep 17 00:00:00 2001 From: yisroelBaum Date: Sun, 15 Sep 2024 15:25:27 +0300 Subject: [PATCH] add repr to class models and exploring relationships --- .../__pycache__/models.cpython-311.pyc | Bin 1230 -> 1491 bytes app/campaigns/models.py | 7 +- app/main/__pycache__/models.cpython-311.pyc | Bin 1474 -> 1732 bytes app/main/models.py | 10 +- app/main/templates/base.html | 23 +++-- app/users/__pycache__/models.cpython-311.pyc | Bin 2985 -> 3271 bytes app/users/__pycache__/routes.cpython-311.pyc | Bin 5148 -> 6079 bytes app/users/models.py | 8 +- app/users/routes.py | 17 ++- app/users/templates/test.html | 10 ++ python_files/db_population.py | 97 ++++++++++++++++++ 11 files changed, 155 insertions(+), 17 deletions(-) create mode 100644 app/users/templates/test.html diff --git a/app/campaigns/__pycache__/models.cpython-311.pyc b/app/campaigns/__pycache__/models.cpython-311.pyc index 5a3c83462d6a2efe1d6bfb20b89d803275ae682f..cd2c166f67f360ef99bd6c703c9365cd40565042 100644 GIT binary patch delta 541 zcmX@dd6}DUIWI340|NuY>x<9Qs+czNIWta_QIhrxYlrsw~1(HtTNMTIjT*I}D znSo(7Ge`u4qqtMJQ+d*uQg~WeqIgqygBdjWCVyeHslUbHlAo7Yl9``(i#??>FEKYW zS(E7&ds1R@c2R2DEtZ_bs>)kzMX4pFMS01LAfuodWHbnWR$*XZn9fkckOh@sV3^I2 z!dSzQ1y?qpgC>(-6|;h_f+kau5Ca24kq83=gC;NIEtcZcoU~$)Vui^|nJheR zam2?Lr4|&$$5#nDC*~F;W~S%q!Gr`D7#NDB7#J8D7;XrOO;NwVuXTZ6YevePEC}lY zht_A1JNz{HCOa_sI)hwzi>D|x2kgb-jLd>toGDNb7vEwoE-5OKV_;xd$xtK@a+55G z0NGIlB0ynU+%owslee9K`~;>c{0q1?cpZqmAmD#d!2gPXe}m@-7DiU>8Ok3R7+JM( z5=HWpBbaNY)Iny$ZTZDvlbfGXnv-f*q&N9J^D;|zM(qy_m_$cWPsK-&_!kg?rUL9} E03E-F)c^nh delta 285 zcmcc2eU6iFIWI340|Ntt+4N^=Zx}c7IWuyxf%psz44ZL2ZWk0<8sFD`GDySzl4I zz9?jKMaZVX8w87FCdabWN=bt>%76%21_p*-95%W6DWy57c10?azpyN`WMQ=Zz<^0~ T6!lbm1c`qE5ojukK*j+8-Ev0x diff --git a/app/campaigns/models.py b/app/campaigns/models.py index 692b2b2..4a52dd0 100644 --- a/app/campaigns/models.py +++ b/app/campaigns/models.py @@ -11,5 +11,8 @@ class Campaign(db.Model): __tablename__ = 'campaign' id = Column('id', INTEGER(), primary_key=True) title = Column('title', TEXT(), nullable=False) - donation_id = Column(INTEGER, ForeignKey('donation.id')) - #ambassadors \ No newline at end of file + donations = db.relationship('Donation', backref='campaign', lazy='dynamic') + + def __repr__(self) -> str: + return f"{self.id} - {self.title}" + # donation_id = Column(INTEGER, ForeignKey('donation.id')) \ No newline at end of file diff --git a/app/main/__pycache__/models.cpython-311.pyc b/app/main/__pycache__/models.cpython-311.pyc index 3a0cb3449918a2888e5c51fec68753d198790d2f..6b9baef0acb124368a7df204d5e74c63a194fd6f 100644 GIT binary patch delta 641 zcmX@aeT0{9IWI340|NsC>!oLDvzRyXMKdz~n4HBpE0!gdm5CvhD}{3zBLl-~Mvxj1 zUdF`0u$l?P0^ulbCWcg)N-n%Ac~ZDjdDECucv@JZ_$K=@CDvE5mlmfM>1C!=aVIC{ z79?h-=jmmp++r(AEh#O^ONLtsavcK$12Y2y!)Fr)28QVjH4IrG+rfA?LkeRJLl#^$ zln-~}Y=*h4!3>&AepSp0x(b@iMZydW3`JrL3?d9g5)2FsnvAztic@paia{nQOb%l< z4!*?^A77MOP!u0uCFqi$mspaSpQi^C5@KLrC{|@)U}#{tAtW|M{Q|$!1%9U)DOcnS zAj}ORTcRPX3mi_LL2mTZP&&*Tc9NrU?hA&CiUGsG8Y zEznvKdr`^yijwt3A)6~gHVxh%SQuHI8D}VeU;xqh$s)PQ<}6K8Y9PzuZu!MwlbfGX lnv-f*q&xXC%Nl1cMrXzk4A{wzqMnM6V7V_~5>p-6lK>|1nJ@qV delta 382 zcmX@Ydx)EFIWI340|NuY_ubFZHZg7Fi)LheGC7NJmM2#hH%J_WQ#ex?Q@GY}FJoq4 zSj`L)0pTbfCWcgGRXkW#@lH-;O4Pl@;hdOTkeHdCcZ)rxGA}VVGg*`A7JE`+a&}Q_ z+AWrx#Hz|$ETP4zMShxmlW#KzX@cyz#Z#1;lUS0OpI4lbS#XOZ8D<7cX>n@NN`}uM zcT5gtHWnxnWME(b6PyeT48=1i=dxs&-4Icp;55a5f!7YM6OtE1f-i~$Ul9pz@PLWC zZSXn}c|pYgqKN+$5&s4k5G+!gY{}Xrr3x}m4MeCjFfjb$u*uC&Da}c>E7F^Mm356X b8)E?D2L|k9M^R73N3h%%Fo~(I2xKq-yKQL= diff --git a/app/main/models.py b/app/main/models.py index 659f4b9..55502fa 100644 --- a/app/main/models.py +++ b/app/main/models.py @@ -11,5 +11,11 @@ class Donation(db.Model): id = Column('id', INTEGER(), primary_key=True, autoincrement=True) currency_type = Column('currency_type', TEXT(), nullable=False) amount = Column('amount', INTEGER(), nullable=False) - campaign = db.relationship('Campaign', backref='donation', lazy='dynamic') - user = db.relationship('User', backref='donation', lazy='dynamic') \ No newline at end of file + + user_id = Column(INTEGER, ForeignKey('user.id')) + campaign_id = Column(INTEGER, ForeignKey('campaign.id')) + + def __repr__(self) -> str: + return f"{self.id} - {self.currency_type} - {self.amount}" + # campaign = db.relationship('Campaign', backref='donation', lazy='dynamic') + # user = db.relationship('User', backref='donation', lazy='dynamic') \ No newline at end of file diff --git a/app/main/templates/base.html b/app/main/templates/base.html index b10b24b..39f6888 100644 --- a/app/main/templates/base.html +++ b/app/main/templates/base.html @@ -13,19 +13,20 @@ {% with messages = get_flashed_messages(with_categories=true) %} diff --git a/app/users/__pycache__/models.cpython-311.pyc b/app/users/__pycache__/models.cpython-311.pyc index 1101129e18cc7bc8a9a44286fac9f95adede8f7d..442408e0971af7b27325d932658d3dae9bee4d16 100644 GIT binary patch delta 754 zcmZ1}eq54wIWI340|Ntt?4@UEpEmNwF*4?C&S8{e4Cc+^1Bruh3U3Ny3f~(3Wy}l= ztC>L}ARNV?B9JPO#*`x1!V)EzB9&uKkpWMN@ZSRZf3G3(=GO-#N_Ov)U;bHIf+%3x7dnOOG=CKk{QAJ zAp|P}0|UtN&n65E4AU8E7_uPZ3=9mj8B!Q)7_#81p?oHog4qmnS%Vognf$7l6%}+9 zG?|Np85kIfL_vf&0|SF5<1Lor)SR?pkO`Bov6y*r#K#w<78J$DSMi1xrxxkKxF9XX zDhvz^4GcGg#HOfU;CH&f?=&N2PCkUSL1l{`gmr<#=`+aw&4JAEjI2dU3=9mDx3MU) z7Ab>R+^p)1l9P>DbC`-$H!ox@WOUJGU|@I&ii#plkhAna&SJX7mXn%Vo>+N{D={ZM zzbLaLBe%Fn8zjY1WWd0{aEmP^H90>ewTK0z$7FICy8)x}czfi*W9>6p)|5G=+Zw*9Nx(k{1NLFA8{H5%6yC z{J_D;>dZJp`2z!p#zJyTe#>dWs5)7VD~ZuyawnI(lo!Z!xMjaMY;yBcN^?@}iUKAd f;#y;^$!Pq60h8!3>amy*`4J@Z1w^2!0lOXmet)^s delta 446 zcmX>uxl){WIWI340|Ntt+4N^=rW<+V7#UMG=P=4Kdb6amGBKp`rtmIfWMEj$2vP&W z%a|A#Rx^QEARNV)B9y}4!WhM$Dv%=3!mx~ifnhaB0*s>sQv`z7>ZOT^KwW@DKaoHXmS*(F)%RPVoOO)&QD1#VgX5OO?KokVAPvj#9_cF zKY2071~wUxQlZI_oQbX=Q*ObX5TBV+qz^KHr?@1sBr`cTwIm}yrO1kbfng;>kpajw zJrE%XBRClt7>ao(i*oIi5t5joHbZ=Y)&i{+u@{xBuP9kx6tcM@WYggNfn_o`w*{lY zWEbuvMzzVyx#guCK?cCh`^90Co1apelWJGwKKTLn8f#@n;|~m&M2At2#e~R@Aek>9 J0!yt#Z)e7XEl{J8>A0=a@wg1JIbLSQ+L9N}D%D3M&zDA8Q8D6w4eC~>ej zXO2X!WRzsCRFo8$&y^#cD;*^bW^?DrM9DBQq%vp8GB7YqW@Z#+Nfk-qom|H#?M-n1H)=YFo%JG0Zo=aMPQBKGA0Iw)l4uIlWQ0imF3aY38R{lDv}}svaMbL zO`RyFc`0Ho49gf87*@k9V2Dyg(2B~-xw8{7*|e~U{MtiWME(@k^~XlAcAMI zFN=~aC@M9XZn2jZrxwL$rW8prFfbH@fR3_|OA?FZK!U;`K1V@fadCNmQA!anNK61kXoCno zkSt4Lk!^bME#~ypk|MAtn2QWRk{}P<;>=5}D2XpfOiwLlW?*1YP*5mR0BK^)$xqMB zE3#lf1HhKSy|9v@NC_kg*3OobpPpY@Qe@4* zz@Rhv8@Dy1(q7IA{iGy)M=LZZkRBmoWxuw!gNTssgU0wPQ%Kj4@51qTP*naDwKiz_)JH8~q> zDI`8o!hjdWRYfig3=GDbeFUT#l|de@V%0B6EiOq0r7;+0V_;wa8S%M@aqnFrlW|1-nKt z85kH+m}?kn7;Bi;uqxyvu! zQ+J(T{Sv?W3d0Nh>KFNSukh<$=QqB@Z+wy8^a{UegU8))A{0Gk;q1_8^l$NR@PEoJ zHN*Obg31jQof|4TAK00B^gc2$^XPp65g!O9xOnL^>Xu5 zQge!nz`o}PN#!PH=D|ck0dos13QG9JdTIGZxy41GGyzWdw^-A15{t7Tp@m4o;It0T z+uUIJct~aiMQV{iJt(X};0z)P%IZw{ z#kW`?;SDOczzsM+hg;Dea6Bnc2 V2L>)iy^qWcOkyY^U}11*0|35~qc#8l delta 1175 zcmdn5KSzUaIWI340|Ns?QO3m2q2lK9VLyXLlD)xRDl#BB=u2IGHB|BvDhF2)d8{& zjH6^zID;89MPGt=nvA!YQj##HcyBibYj`9~28> zAc7M_a7|v%q9n_~z`&r%bc-FND?T%&NSuLzp%~;X1%+QGli#sOu!p1;mjtC2Oy*`) zWR+uJVBp(q$Xd_LC^~r~$Hsb)nYRQoi{leZOEOaPN-~oZOHxycAQpgZVPjxmxFuAU zn3I{3Sdto_pBG str: + return f"{self.id} - {self.first_name} - {self.last_name}" + # donation_id = Column(INTEGER, ForeignKey('donation.id')) def get_reset_token(self, expiration=600): reset_token = jwt.encode( diff --git a/app/users/routes.py b/app/users/routes.py index 0afaa25..9ee9d9c 100644 --- a/app/users/routes.py +++ b/app/users/routes.py @@ -1,6 +1,8 @@ from app import db from app.users import users from app.users.models import User +from app.campaigns.models import Campaign +from app.main.models import Donation from app.users.forms import LoginForm, RegisterUserForm#, RequestResetForm, ResetPasswordForm, EditUserForm, AddUserForm from flask import render_template, redirect, url_for, flash, request from flask_login import login_required, login_user, current_user, logout_user @@ -66,4 +68,17 @@ def register_user(): login_user(user) flash('Succesfully Registered!') return redirect(url_for('main.homepage')) - return render_template('register_user.html', form=form) \ No newline at end of file + return render_template('register_user.html', form=form) + +@users.route('/test') +def testing_route(): + user = User.query.filter_by(id=1).first() + donation = Donation.query.filter_by(id=1).first() + campaign = Campaign.query.filter_by(id=1).first() + + print(campaign) + + return render_template('test.html', + user=user, + donation=donation, + campaign=campaign) \ No newline at end of file diff --git a/app/users/templates/test.html b/app/users/templates/test.html new file mode 100644 index 0000000..105670c --- /dev/null +++ b/app/users/templates/test.html @@ -0,0 +1,10 @@ +{% extends 'base.html' %} +{% block title %}User Access{% endblock title %} +{% block content %} +{{user.first_name}}
+{{donation.amount}}
+ +{% for c in campaign.donations %} +{{c}} +{% endfor %} +{% endblock %} \ No newline at end of file diff --git a/python_files/db_population.py b/python_files/db_population.py index e69de29..11ddeb3 100644 --- a/python_files/db_population.py +++ b/python_files/db_population.py @@ -0,0 +1,97 @@ +from sqlalchemy import create_engine, MetaData, Table, select, insert, func, update, bindparam, delete +import os +import csv +from datetime import datetime, timedelta +from dateutil.parser import parse +import time +import json +from werkzeug.security import generate_password_hash + + + +def insert_users(): + engine = create_engine('sqlite:///C:/Users/Lenovo/Desktop/Pilzno/instance/site.db') + metadata_obj = MetaData() + metadata_obj.reflect(bind=engine) + user_table = Table("user", metadata_obj, autoload_with=engine) + + with engine.connect() as conn: + conn.execute(user_table.insert().values( + first_name = "Yisroel", + last_name = "Baum", + email = "yisroel.d.baum@gmail.com", + password = generate_password_hash('12'), + user_type = "User" + )) + conn.execute(user_table.insert().values( + first_name = "Yoni", + last_name = "Gerzi", + email = "yoni@gerzi.com", + password = generate_password_hash('12'), + user_type = "User" + )) + conn.commit() + +def insert_donations(): + engine = create_engine('sqlite:///C:/Users/Lenovo/Desktop/Pilzno/instance/site.db') + metadata_obj = MetaData() + metadata_obj.reflect(bind=engine) + user_table = Table("user", metadata_obj, autoload_with=engine) + donation_table = Table("donation", metadata_obj, autoload_with=engine) + campaign_table = Table("campaign", metadata_obj, autoload_with=engine) + + with engine.connect() as conn: + sruli = conn.execute(select(user_table).where(user_table.c.id == 1)).first() + yoni = conn.execute(select(user_table).where(user_table.c.id == 2)).first() + + campaign_one = conn.execute(select(campaign_table).where(campaign_table.c.id == 2)).first() + + conn.execute(donation_table.insert().values( + currency_type = "shekel", + amount = 50, + campaign_id=campaign_one.id, + user_id=sruli.id + )) + conn.commit() + +def insert_campaigns(): + engine = create_engine('sqlite:///C:/Users/Lenovo/Desktop/Pilzno/instance/site.db') + metadata_obj = MetaData() + metadata_obj.reflect(bind=engine) + campaign_table = Table("campaign", metadata_obj, autoload_with=engine) + + with engine.connect() as conn: + conn.execute(campaign_table.insert().values(title="general campaign")) + conn.execute(campaign_table.insert().values(title="special campaign")) + conn.commit() + +def test_selections(): + engine = create_engine('sqlite:///C:/Users/Lenovo/Desktop/Pilzno/instance/site.db') + metadata_obj = MetaData() + metadata_obj.reflect(bind=engine) + user_table = Table("user", metadata_obj, autoload_with=engine) + donation_table = Table("donation", metadata_obj, autoload_with=engine) + campaign_table = Table("campaign", metadata_obj, autoload_with=engine) + + with engine.connect() as conn: + campaign_one = conn.execute(select(campaign_table).where(campaign_table.c.id==1)).first() + donation_one = conn.execute(select(donation_table).where(donation_table.c.id==1)).first() + user_one = conn.execute(select(user_table).where(user_table.c.id==1)).first() + print(user_one.donations) + +def delete_all(): + engine = create_engine('sqlite:///C:/Users/Lenovo/Desktop/Pilzno/instance/site.db') + metadata_obj = MetaData() + metadata_obj.reflect(bind=engine) + user_table = Table("user", metadata_obj, autoload_with=engine) + donation_table = Table("donation", metadata_obj, autoload_with=engine) + campaign_table = Table("campaign", metadata_obj, autoload_with=engine) + + with engine.connect() as conn: + conn.execute(delete(user_table)) + conn.execute(delete(campaign_table)) + conn.execute(delete(donation_table)) + conn.commit() + +if __name__ == '__main__': + test_selections()