1- from flask import Blueprint , render_template , request , redirect , url_for
1+ from flask import Blueprint , render_template , request , redirect , url_for , flash , session
22from pi_cryptoconnect .database import db
33from pi_cryptoconnect .models import User , Portfolio , Asset
44
@@ -12,7 +12,7 @@ def portfolio_index():
1212 :return: Portfolio index page
1313 """
1414 portfolios = Portfolio .query .all ()
15- return render_template ('portfolio/index.html' , portfolios [ portfolios ] )
15+ return render_template ('portfolio/index.html' , portfolios = portfolios )
1616
1717@portfolio_blueprint .route ('/portfolio/create' , methods = ['GET' , 'POST' ])
1818def create_portfolio ():
@@ -21,14 +21,25 @@ def create_portfolio():
2121
2222 :return: Redirect to portfolio index page
2323 """
24+ if 'user_id' not in session :
25+ flash ('You need to be logged in to create a portfolio.' )
26+ return redirect (url_for ('auth.login' )) # Redirect to login if not authenticated
27+
2428 if request .method == 'POST' :
2529 name = request .form ['name' ]
2630 description = request .form ['description' ]
27- user_id = request . user . id
31+ user_id = session [ 'user_id' ] # Get user ID from session
2832 portfolio = Portfolio (name = name , description = description , user_id = user_id )
29- db .session .add (portfolio )
30- db .session .commit ()
31- return redirect (url_for ('portfolio.portfolio_index' ))
33+
34+ try :
35+ db .session .add (portfolio )
36+ db .session .commit ()
37+ flash ('Portfolio created successfully!' )
38+ return redirect (url_for ('portfolio.portfolio_index' ))
39+ except Exception as e :
40+ db .session .rollback () # Rollback in case of error
41+ flash ('Error creating portfolio: ' + str (e ))
42+
3243 return render_template ('portfolio/create.html' )
3344
3445@portfolio_blueprint .route ('/portfolio/<int:portfolio_id>' , methods = ['GET' ])
0 commit comments