Skip to content

Commit 15772fa

Browse files
committed
⚡ Initial
0 parents  commit 15772fa

26 files changed

+1221
-0
lines changed

app.py

+338
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
from flask import Flask, request, redirect, session, url_for,flash
2+
from flask.templating import render_template
3+
from flask_sqlalchemy import SQLAlchemy
4+
from flask_migrate import Migrate, migrate
5+
from flask_session import Session
6+
from datetime import date, time, datetime,timedelta
7+
from time import time, sleep
8+
from werkzeug.security import generate_password_hash, check_password_hash
9+
10+
today = datetime.now()
11+
12+
13+
app = Flask(__name__)
14+
app.debug = True
15+
app.config["SESSION_PERMANENT"] = True
16+
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(minutes=5)
17+
app.config["SESSION_TYPE"] = "filesystem"
18+
Session(app)
19+
app.secret_key='akshat'
20+
# adding configuration for using a sqlite database
21+
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
22+
23+
# Creating an SQLAlchemy instance
24+
db = SQLAlchemy(app)
25+
# Settings for migrations
26+
migrate = Migrate(app, db)
27+
28+
29+
30+
class track(db.Model):
31+
current_date = db.Column(db.Date,primary_key=True)
32+
Total=db.Column(db.Integer, unique=False, nullable=False)
33+
def __repr__(self):
34+
return f"Total : {self.Total}"
35+
36+
37+
class Centre(db.Model):
38+
id = db.Column(db.Integer, primary_key=True)
39+
Name = db.Column(db.String(50), unique=False, nullable=False)
40+
dose = db.Column(db.Integer,unique=False, nullable=True)
41+
Address = db.Column(db.String(50), unique=False, nullable=False)
42+
pincode = db.Column(db.Integer, unique=False, nullable=False)
43+
44+
def __repr__(self):
45+
return f"Name : {self.Name}, Age: {self.Address}"
46+
47+
48+
# Models User Table
49+
class User(db.Model):
50+
id = db.Column(db.Integer, primary_key=True)
51+
first_name = db.Column(db.String(20), unique=False, nullable=False)
52+
last_name = db.Column(db.String(20), unique=False, nullable=False)
53+
age = db.Column(db.Integer, nullable=False)
54+
gender = db.Column(db.String(20),unique=False,nullable=False)
55+
email = db.Column(db.String(20), unique=True, nullable=False)
56+
pas = db.Column(db.String(255), unique=False, nullable=False)
57+
status = db.Column(db.String(5), unique=False,nullable=False)
58+
59+
@property
60+
def password(self):
61+
raise AttributeError('password is not a readable attribute')
62+
@password.setter
63+
def password(self, password):
64+
self.pas = generate_password_hash(password)
65+
def verify_password(self, password):
66+
return check_password_hash(self.pas, password)
67+
68+
69+
#Models Admin Table
70+
class Admin(db.Model):
71+
id = db.Column(db.Integer, primary_key=True)
72+
first_name = db.Column(db.String(20), unique=False, nullable=False)
73+
last_name = db.Column(db.String(20), unique=False, nullable=False)
74+
age = db.Column(db.Integer, nullable=False)
75+
role=db.Column(db.String(20),nullable=False)
76+
email = db.Column(db.String(20), unique=True, nullable=False)
77+
pas = db.Column(db.String(20), unique=False, nullable=False)
78+
79+
80+
# repr method represents how one object of this datatable
81+
# will look like
82+
def __repr__(self):
83+
return f"Name : {self.first_name}, Age: {self.age}"
84+
85+
86+
87+
#home
88+
@app.route('/')
89+
def home():
90+
return render_template('index.html')
91+
92+
93+
#admin login
94+
@app.route('/admin')
95+
def admin():
96+
return render_template('admin.html')
97+
98+
99+
#user login
100+
@app.route('/user')
101+
def user():
102+
return render_template('user.html')
103+
104+
105+
#User Authentication
106+
@app.route('/verifyuser',methods=['GET','POST'])
107+
def verifyuser():
108+
user_name = request.form.get("email")
109+
pas = request.form.get("pas")
110+
users = User.query.all()
111+
flag=1
112+
u=User()
113+
u.password=pas
114+
for data in users:
115+
if(data.email == user_name and u.verify_password(pas)):
116+
status=data.status
117+
session['user']=data.first_name
118+
flag=0
119+
return redirect(url_for('sess'))
120+
121+
if(flag):
122+
return render_template('user.html',login_result="Invalid Username or Password")
123+
124+
125+
@app.route('/sess')
126+
def sess():
127+
if 'user' in session:
128+
user_name=session['user']
129+
return render_template("user_home.html",b=True,name=user_name,msg="Welcome aboard, Hope you are doing well!",head= "Free Covid Precaution Dose" ,msg1="Now Precaution dose for 18-59 age group free at Government Vaccination Centre.")
130+
else:
131+
return redirect(url_for('verifyuser'))
132+
133+
134+
@app.route('/reg')
135+
def reg():
136+
return render_template('register.html')
137+
138+
# register users to database
139+
@app.route('/register', methods=["POST"])
140+
def register():
141+
first_name = request.form.get("first_name")
142+
last_name = request.form.get("last_name")
143+
age = request.form.get("age")
144+
gender = request.form.get("gender")
145+
email = request.form.get('email')
146+
pas=request.form.get('pas')
147+
u=User()
148+
u.password=pas
149+
try:
150+
if first_name != '' and last_name != '' and age is not None and email != '' and pas != '' :
151+
p = User(first_name=first_name, last_name=last_name, age=age,gender=gender,email=email,pas=u.pas,status=True)
152+
db.session.add(p)
153+
db.session.commit()
154+
session['user']=first_name
155+
return redirect(url_for('sess'))
156+
else:
157+
return render_template('register.html',login_result="Enter Valid Details")
158+
except:
159+
return render_template('register.html',login_result="email was already registered")
160+
161+
@app.route('/searchcentres',methods=['POST'])
162+
def searchcentres():
163+
if 'user' in session:
164+
name = request.form.get("centre")
165+
centres = Centre.query.all()
166+
return render_template('searchcentres.html',centres=centres,idd=int(name))
167+
else:
168+
return redirect('verifyuser')
169+
170+
@app.route('/apply/<int:id>')
171+
def apply(id):
172+
173+
if 'user' in session:
174+
user_name=session['user']
175+
data=Centre.query.get(id)
176+
if(data.dose<10):
177+
data.dose+=1
178+
db.session.commit()
179+
return render_template('searchcentres.html',n=user_name,response="Applied Successfully",msg="Success ")
180+
else:
181+
return render_template('searchcentres.html',responsefailed="Sorry for the Inconvenience, Daily limit was Exceeded for this particular centre")
182+
183+
184+
else:
185+
return render_template('searchcentres.html',response="Applied Successfully")
186+
187+
188+
189+
190+
191+
@app.route('/book')
192+
def book():
193+
if 'user' in session:
194+
user_name=session['user']
195+
centres = Centre.query.all()
196+
return render_template('searchcentres.html',n=user_name,centres=centres,msg="Book Your Slot")
197+
return redirect('verifyadmin')
198+
199+
200+
201+
202+
#Admin Authentication
203+
@app.route('/verifyadmin',methods=['GET','POST'])
204+
def verifyadmin():
205+
user_name = request.form.get("email")
206+
pas = request.form.get("pas")
207+
admins = Admin.query.all()
208+
flag=1
209+
for data in admins:
210+
if(data.email == user_name and data.pas==pas):
211+
session['user']=user_name
212+
flag=0
213+
return redirect(url_for('sessadmin'))
214+
215+
if(flag):
216+
return render_template('admin.html',login_result="Invalid Username or Password")
217+
218+
@app.route('/sessadmin')
219+
def sessadmin():
220+
if 'user' in session:
221+
user_name=session['user']
222+
return render_template("admin_home.html",sum=sum)
223+
else:
224+
return redirect(url_for('verifyadmin'))
225+
226+
@app.route('/adhome')
227+
def adhome():
228+
if 'user' in session:
229+
centres=Centre.query.all()
230+
sum=0
231+
for data in centres:
232+
sum+=data.dose
233+
return render_template('ad_home.html',sum=sum)
234+
else:
235+
return redirect('verifyadmin')
236+
237+
@app.route('/update')
238+
def update():
239+
if 'user' in session:
240+
centres=Centre.query.all()
241+
for data in centres:
242+
data.dose=0
243+
db.session.commit()
244+
return render_template('admin_home.html',update_result='Updated Successfully')
245+
# return render_template('searchcentres.html',response="Applied Successfully",msg="Success ")
246+
else:
247+
return redirect('verifyadmin')
248+
249+
@app.route('/Add_VC')
250+
def Add_VC():
251+
252+
if 'user' in session:
253+
return render_template("Add_VC.html")
254+
else:
255+
return redirect('verifyadmin')
256+
257+
@app.route('/VC',methods=['POST'])
258+
def VC():
259+
try:
260+
if 'user' in session:
261+
dose=request.form.get("dose")
262+
id = request.form.get("id")
263+
Name = request.form.get("Name")
264+
Address = request.form.get("Address")
265+
pincode = request.form.get("pincode")
266+
267+
# create an object of the Profile class of models and
268+
# store data as a row in our datatable
269+
if Address != '' and Name != '' and pincode is not None:
270+
vc = Centre(id=id,Name=Name,dose=dose, Address=Address,pincode=pincode)
271+
db.session.add(vc)
272+
db.session.commit()
273+
return render_template("Add_VC.html",addresult='Added Successfully')
274+
else:
275+
return render_template("Add_VC.html",addresult="Enter Valid Details")
276+
277+
else:
278+
return redirect('verifyadmin')
279+
except:
280+
return render_template("Add_VC.html",addresult="Centre ID was already created")
281+
282+
283+
284+
@app.route('/RVC')
285+
def RVC():
286+
if 'user' in session:
287+
centres = Centre.query.all()
288+
289+
return render_template('Remove_VC.html', centres=centres)
290+
else:
291+
return redirect('verifyadmin')
292+
293+
@app.route('/search',methods=['POST'])
294+
def search():
295+
if 'user' in session:
296+
name = request.form.get("centre")
297+
centres = Centre.query.all()
298+
return render_template('rem.html',centres=centres,name=int(name))
299+
else:
300+
return redirect('verifyadmin')
301+
302+
@app.route('/dosage')
303+
def dosage():
304+
if 'user' in session:
305+
centres = Centre.query.all()
306+
return render_template('dosage.html',centres=centres)
307+
else:
308+
return redirect('verifyadmin')
309+
310+
311+
@app.route('/logout')
312+
def logout():
313+
session.pop('user',None)
314+
return render_template('index.html')
315+
316+
317+
#for deleting row in model or table
318+
@app.route('/delete/<int:id>')
319+
def delete(id):
320+
if 'user' in session:
321+
322+
data = Centre.query.get(id)
323+
db.session.delete(data)
324+
db.session.commit()
325+
return render_template('Remove_VC.html',update_result='Removed Successfully')
326+
else:
327+
return redirect('verifyadmin')
328+
329+
330+
331+
@app.route('/user_admin_tables')
332+
def user_admin_tables():
333+
users = User.query.all()
334+
return render_template('user_admin_tables.html',users=users)
335+
336+
if __name__ == '__main__':
337+
app.run()
338+
8 Bytes
Binary file not shown.
52 Bytes
Binary file not shown.
35 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)