From 959c4e883d371a058d9127ac678762d019169320 Mon Sep 17 00:00:00 2001 From: mukeshs Date: Sat, 18 Oct 2025 06:23:25 +0530 Subject: [PATCH] update python seed --- Machine-Backend/.env | 4 +- .../app/__pycache__/__init__.cpython-313.pyc | Bin 4666 -> 4951 bytes Machine-Backend/app/instance/machines | Bin 0 -> 53248 bytes Machine-Backend/seed_user.py | 131 +++++++++++++----- 4 files changed, 99 insertions(+), 36 deletions(-) create mode 100644 Machine-Backend/app/instance/machines diff --git a/Machine-Backend/.env b/Machine-Backend/.env index 55c51c2..0608171 100644 --- a/Machine-Backend/.env +++ b/Machine-Backend/.env @@ -6,14 +6,14 @@ PAYU_MERCHANT_SALT=DusXSSjqqSMTPSpw32hlFXF6LKY2Zm3y PAYU_SUCCESS_URL=http://localhost:4200/payment-success PAYU_FAILURE_URL=http://localhost:4200/payment-failure -FLASK_ENV=production +FLASK_ENV=development MYSQL_HOST=db MYSQL_USER=vendinguser MYSQL_PASSWORD=vendingpass MYSQL_DATABASE=vending -SQLITE_DB_PATH=machines +SQLITE_DB_PATH=machines.db BREVO_SMTP_EMAIL=smukeshsn2000@gmail.com BREVO_SMTP_KEY=your-brevo-smtp-key diff --git a/Machine-Backend/app/__pycache__/__init__.cpython-313.pyc b/Machine-Backend/app/__pycache__/__init__.cpython-313.pyc index 64b68637822ce710eed1c4eaac10b8e786670a7e..7d9e8df4b8ea1254117a37cb8a423f1bc52a4602 100644 GIT binary patch delta 1123 zcmZ8g-*4Mg6uvi(=>1q$>&TQddLsVu&`?k znqB~?EK!&U6^&SjNy^HTsx=k!?_@DVT{7zes9Uzt*dtqM+%0o1Flr~WY!A0*FYPgR z#O%QYP>}p(JqknQFx&eegL=&>*w+~*j3hct3`R(c4Z<+_l}$2H)K9{;Mel&j(9W?@ zX2)3~FEdeQ5bZT3!ARzL0F(m&peP!8CirwnbxWWR$nN=rq{#Z1INC?Pw)M{qKa_*H zo)cr86Vib8Kf()-@QHtU1k88L@<1b*PD#?wMT8U@p=$=u`sZg%FZbg+8rh$QXq3Fl zjljpqN8Bt-lRI405@(3do(R1eSZFpIMkbjw7PLk}*RM3baDKFGiEU8*kDr>5W%S~L7 zhAQ}Ut&C~*jZWqymXy;kepB@P7HKo2It7)oayi#j4a3v!x<;|M6zmWb{ zlb}VFnql^#E(UH&|Cuz`)R(Z-)FiBStd_lk7sBUA%=s4G!DZ)rFi9rFahM{iI0bX$ zGtuZvQm3}#;p}aQ^%SLadZ$1iCsVGz%!FCOmvyW(aY<=3^b#e^U&7d?xAMnXu*JJC z+OMQr{DHI6+cv;D-tk?xi|wB3@&~RF2<>FmeWSE(2Ts?!ljkPSmoA-J7ZRI7x+SF7 zh4Gcab>Yb$o!Q$KPRv~o?b{6HTA|#E`b}j$gw8u|_(EI$J!^rdHvETgn&8BS{{`Ai z^sag3@14i*^#eZm`w+S5$(;!TfA3uY#oU&sYi;+$3cO;hbsyaHWLuu>pSKyBxPPyg zmTx!$_l;?Kf^SFjzCx6_#tqEoEZ2siiT4X8o^Vq9U5+n=*;UR}2(YVNEM-;$tjUBK z6G!<%iiAjHAwsuknt~jIX>i<9p1+6ilH>>M)BSi($OwfX>KO+eGA2 zYGr>Bgo_phJr)Wsil9}Cq7+6%d>{tZHWEw>d(gR4(mC++o$vq7|9}7CtOsBEl|7qH zX6UN<`DvugI;(tOfAh0n!xh9rxDXp+2!9q4frufNAR=j&Fd}l4Rbd>da1q^vhpZD0 z(NkoFN9=QCgCQKi3bDg8&d;ZD91{o3<64vto46jr78!Anz&^NOk)gv|&--u)Bv{xAJ#|+=7myw_~=r+uo;mEYzh%{4D!SnYJ~G*C0rM^ z#W$kHLSA0{Obspbaqgblmq?B3!|G&4O=i+*JvnK@t9p7kmA;~mC6Xhlv_4gCitj&A ziEgA4qeseACavm*kuf^dMVr-$&^b_T*J!gj+g;QEjY=!hAfCd_c7H91dgm`%E*lFMA87aEU3R2sKC%Ep3u6Uv^w733M&*03! zj@`5ED9XBe)*QW`P0+pOIC$2x^ttI=Uj&s`o(z$<5uuaBN`^FLvXb`$3wN9-KS3{Q>fT}Ber0!=!N IkUf|F17R=MAOHXW diff --git a/Machine-Backend/app/instance/machines b/Machine-Backend/app/instance/machines new file mode 100644 index 0000000000000000000000000000000000000000..c9e6814930607c91be4c0a9b40e3adc203749074 GIT binary patch literal 53248 zcmeI&T~FI)6u|L>LIMFq@1ki!vQ#06HmwaE+HNK-Wu{|I!y3Z0URlQWz*1tTexc)X zgQ=7D5q7uFvwfdk&X2JZKMqN?O_qG|M*_c{I48ezp2v>N>8q|CSjrEsH_`*;Y2{(1 zTCIGkD3wa37X5BUzv++IUQRcnWi_)tZ?#tWk{l)c89Z7RpTf%;tSE4`C}(mU&RKUNxRnJ_I1`L5GH{JPWMJ9yHP!bZAr zX**Unq@4>Hd#)K8f#&EVYjU3UlU&rBPozKw^^dR&nZ=FAUcXG|M49mWPU!AGSo=h7bIy&jA$Ip8rd~ZtHQu^wV+E;sr z>Zy|K_LXcvqxIQFt@&c7TCp9|`q6(gjINuS9tLi_t!3WI*V@^w&6^J!_2%ww^_MVi zo-4~S;}1V{17F%$m)b`p=+%r$*0Lu|gZz|7DPP%HR zCxp{h%QS5Crs7EG*nyw+)?KJ=Oj{<2y02>gwKU>Qvag-yCY3eW9hEf`&}iL0UadE` zx2wOlEdj9dmu#LTOunZX@fo-U@sdxoJIRW)B9&IX*8HM5PbL0rT035>{`_b;9&)!I#2)FuOqVN?O1gIe%yc|YK6-uz zOhY8YnXxqX#8h?9#V@(A+9Um9I+g85ymEslZ7T>TndBRHQCp^2-nH4vqBcuew062y zyE(1KZT4;@W{q1m{<9>3Capa8encG4P73)>6UQaSe1J95?FG|XGz|pNz0+KvyJ0Zz zHYm<+_P#-?!_3?;Q>pQ#8@SU9l5t|Vqp|K>YeV;9_Mqt+p|}GoVhAPV(!EQpD8|); zMdM1m(%1Im#d2%u{h{qR^g(n_y(;dj<1hFROK^ux3J4&800IagfB*srAbf{BY*$`2q1s}0tg_000IagPzC{>|CgZ(w5* zFV>f{BY*$`2q1s}0tg_000IagPzC{>|CgZ($=6f3d!t Y9RUOoKmY**5I_I{1Q0*~fiejE12m02VgLXD literal 0 HcmV?d00001 diff --git a/Machine-Backend/seed_user.py b/Machine-Backend/seed_user.py index 8d0ab49..899dac9 100644 --- a/Machine-Backend/seed_user.py +++ b/Machine-Backend/seed_user.py @@ -1,52 +1,115 @@ from app import create_app, db -from app.models import User +from app.models.models import User import sys -def seed_sample_user(): - """Create a sample user for testing login""" +def seed_sample_users(): + """Create sample users for testing login with correct roles""" app = create_app() with app.app_context(): try: - # Check if user already exists - existing_user = User.query.filter_by(email='admin@vending.com').first() - if existing_user: - print("Sample user already exists!") - print(f"Email: admin@vending.com") - print(f"Password: admin123") - return + # Sample users with correct role names (must match database roles exactly) + sample_users = [ + { + 'username': 'Super Admin', + 'email': 'superadmin@vending.com', + 'password': 'admin123', + 'role': 'SuperAdmin', # MUST MATCH DATABASE EXACTLY + 'contact': '+1234567890' + }, + { + 'username': 'Management User', + 'email': 'management@vending.com', + 'password': 'management123', + 'role': 'Management', + 'contact': '+1234567891' + }, + { + 'username': 'Admin User', + 'email': 'admin@vending.com', + 'password': 'admin123', + 'role': 'Admin', + 'contact': '+1234567892' + }, + { + 'username': 'Client User', + 'email': 'client@vending.com', + 'password': 'client123', + 'role': 'Client', + 'contact': '+1234567893' + }, + { + 'username': 'Refiller User', + 'email': 'refiller@vending.com', + 'password': 'refiller123', + 'role': 'Refiller', + 'contact': '+1234567894' + }, + { + 'username': 'Servicer User', + 'email': 'servicer@vending.com', + 'password': 'servicer123', + 'role': 'Servicer', + 'contact': '+1234567895' + } + ] - # Create sample admin user - sample_user = User( - user_id=User.generate_user_id('admin', 'admin@vending.com'), - username='Admin User', - email='admin@vending.com', - contact='+1234567890', - roles='admin', - user_status='active' - ) + print("=" * 70) + print("SEEDING SAMPLE USERS") + print("=" * 70) - # Set password - sample_user.set_password('admin123') + created_count = 0 - # Add to database - db.session.add(sample_user) + for user_data in sample_users: + # Check if user already exists + existing_user = User.query.filter_by(email=user_data['email']).first() + if existing_user: + print(f"⚠️ User {user_data['email']} already exists - skipping") + continue + + # Create new user + new_user = User( + user_id=User.generate_user_id(user_data['username'], user_data['email']), + username=user_data['username'], + email=user_data['email'], + contact=user_data['contact'], + roles=user_data['role'], # CORRECT ROLE NAME + user_status='active' + ) + + # Set password + new_user.set_password(user_data['password']) + + # Add to database + db.session.add(new_user) + created_count += 1 + + print(f"✓ User: {user_data['username']} ({user_data['role']})") + + # Commit all changes db.session.commit() - print("✅ Sample user created successfully!") - print("=" * 50) - print(f"User ID: {sample_user.user_id}") - print(f"Username: {sample_user.username}") - print(f"Email: admin@vending.com") - print(f"Password: admin123") - print(f"Role: {sample_user.roles}") - print(f"Status: {sample_user.user_status}") - print("=" * 50) + print("\n" + "=" * 70) + print(f"✓ Successfully created {created_count} sample user(s)") + print("=" * 70) + + # Display all created users + print("\nCREATED USERS - USE THESE TO LOGIN:") + print("=" * 70) + all_users = User.query.all() + for user in all_users: + print(f"\nUsername: {user.username}") + print(f"Email: {user.email}") + print(f"Role: {user.roles}") + print(f"Status: {user.user_status}") + print("-" * 70) except Exception as e: db.session.rollback() - print(f"❌ Error creating sample user: {str(e)}") + print(f"\n❌ Error creating sample users: {str(e)}") + import traceback + traceback.print_exc() sys.exit(1) if __name__ == '__main__': - seed_sample_user() \ No newline at end of file + seed_sample_users() \ No newline at end of file