Salysali/df-web-development-using-python-3d2c
0
1import os
2from flask import Flask ,render_template,redirect,url_for,request,flash
3from db_setup import Owner,Item,Base
4from sqlalchemy import create_engine
5from sqlalchemy.orm import (sessionmaker,scoped_session)
6from flask import session as login_session
7from functools import wraps
8engine=create_engine('sqlite:///mydb.db')
9Base.metadata.bind=engine
10session=scoped_session(sessionmaker(bind=engine))
11
12app=Flask(__name__)
13def login_required(f):
14 @wraps(f)
15 def x(*args,**kwargs):
16 if 'email' not in login_session:
17 return redirect(url_for('login'))
18 return f(*args,**kwargs)
19 return x
20
21
22# @app.route('/hello/<name>')
23# def name(name):
24# return ("<h1><i>welcome to "+name+"</i></h1>")
25# @app.route('/Myname/<name1>/<rollno>')
26# def Myname(name1,rollno):
27# return ("<h1><i>My name is "+name1+"<br>My rollno is "+rollno+"</i></h1>")
28# @app.route('/Mynames/<name1>/<rollno>')
29# def Mynames(name1,rollno):
30# return ("<h1><i>hello! %s"%name1+""+"<br>Your rollno is %s"%rollno+""+"</i></h1>")
31# @app.route('/Adds/<int:num1>/<int:num2>')
32# def Adds(num1,num2):
33# num1=num1+num2
34# return ("<h1><i>Addition of two numbers {}:</i></h1>".format(num1))
35# @app.route('/Add/<int:num1>/<int:num2>')
36# def Add(num1,num2):
37# num1=num1+num2
38# return ("<h1><i>Addition of two numbers %d:" % num1+""+"</i></h1>")
39# @app.route('/')
40# def sample():
41# return render_template('index.html')
42# @app.route('/message/<name>')
43# def mess(name):
44# return render_template('message.html',name=name)
45# @app.route('/fl/<fname>/<lname>')
46# def flnam(fname,lname):
47# return render_template('fnamelname.html',fname=fname,lname=lname)
48# @app.route('/for/<int:lower>/<int:upper>')
49# def forloop(lower,upper):
50# return render_template('for.html',lower=lower,upper=upper)
51# @app.route('/admin/<name>')
52# def admin_name(name):
53# return 'hey this is %s' %name
54# @app.route('/guest/<name>')
55# def guest_name(name):
56# return '%s is a guest' %name
57# @app.route('/user')
58# def user(user):
59# if user==admin_name:
60# return redirect(url_for(user))
61# else:
62# return redirect(url_for(guest_name))
63# @app.route('/Multi/<int:n>/<int:m>')
64# def multi(n,m):
65# return render_template('Multi.html',n=n,m=m)
66# @app.route('/leap/<int:l>/<int:m>')
67# def leap(l,m):
68# return render_template('leap.html',l=l,m=m)
69# @app.route('/EorO/<int:l>')
70# def evenorodd(l):
71# lst=[]
72# for i in range(l):
73# lst.append(i)
74# return render_template('eoro.html',l=lst)
75# @app.route('/table/<int:row>/<int:col>')
76# def table(row,col):
77# lst1=[]
78# n=1;
79# for i in range(1,row+1):
80# lst2=[]
81# for j in range(1,col+1):
82# lst2.append(n)
83# n=n+1
84# lst1.append(lst2)
85# return render_template('table.html',lst1=lst1,row=row,col=col)
86@app.route('/')
87def home():
88 items=session.query(Item).all()
89 return render_template('items.html',items=items)
90 # return render_template('home.html')
91@app.route('/register',methods=['POST','GET'])
92def register():
93 if request.method=="POST":
94 name=request.form['name']
95 email=request.form['email']
96 password=request.form['pass']
97 owner=Owner(name=name,email=email,password=password)
98 session.add(owner)
99 session.commit()
100 flash('Successfully register','success')
101 return render_template('register.html')
102@app.route('/newitem',methods=['POST','GET'])
103@login_required
104def newitem():
105
106 if request.method=="POST":
107 brandname=request.form['brandname']
108 image=request.form['image']
109 model=request.form['model']
110 cost=request.form['cost']
111 description=request.form['desc']
112 owner_id=1
113 item=Item(brandname=brandname,image=image,model=model,cost=cost,description=description,owner_id=owner_id)
114 session.add(item)
115 session.commit()
116 flash('Successfully added','success')
117 return render_template('newitem.html')
118@app.route('/login',methods=['POST','GET'])
119def login():
120 if request.method=="POST":
121 email=request.form['email']
122 password=request.form['pass']
123 owner=session.query(Owner).filter_by(email=email,password=password).one_or_none()
124 if owner==None:
125 flash("Invalid Credentials.........",'danger')
126 return redirect(url_for('login'))
127 login_session['email']=email
128 login_session['name']=owner.name
129 flash('welcome'+str(owner.name),'success')
130 return redirect(url_for('home'))
131 return render_template('login.html')
132@app.route('/logout')
133@login_required
134def logout():
135 del login_session['email']
136 del login_session['name']
137 flash('Successfully logout thank you visit again......','success')
138 return redirect(url_for('home'))
139@app.route('/Item/<int:item_id>/edit',methods=['POST','GET'])
140@login_required
141def edititem(item_id):
142 if request.method=="POST":
143 brandname=request.form['brandname']
144 image=request.form['image']
145 model=request.form['model']
146 cost=request.form['cost']
147 description=request.form['desc']
148 item=session.query(Item).filter_by(id=item_id).one_or_none()
149 item.brandname=brandname
150 item.image=image
151 item.model=model
152 item.cost=cost
153 item.description=description
154 session.add(item)
155 session.commit()
156 flash ('Successfully updated!!!','success')
157 return render_template('items.html')
158 else:
159 item=session.query(Item).filter_by(id=item_id).one_or_none()
160 return render_template("update.html",item=item)
161@app.route('/Item/<int:item_id>/delete')
162@login_required
163def deleteitem(item_id):
164 item=session.query(Item).filter_by(id=item_id).one_or_none()
165 session.delete(item)
166 session.commit()
167 flash("Item is deleted!!","danger")
168 return render_template('home.html')
169#always last
170if __name__=='__main__':
171 app.secret_key='123asdfaw'
172 app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 7860)), debug=True)
173
174 