Guest User

__init__.py

a guest
Mar 2nd, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. from flask import Flask,render_template,flash,request,url_for,redirect,session
  2. from dbconnect import connection
  3. from wtforms import Form,TextField,PasswordField,validators,DecimalField,SelectField
  4. from passlib.hash import sha256_crypt
  5. from MySQLdb import escape_string as thwart
  6. import gc
  7. from functools import wraps
  8. app=Flask(__name__)
  9.  
  10.  
  11. @app.route('/')
  12. def homepage():
  13. if 'logged_in' in session:
  14. form=UploadForm(request.form)
  15. return render_template("upload.html",form=form)
  16. else:
  17. return render_template("main.html")
  18.  
  19.  
  20. def login_required(f):
  21. @wraps(f)
  22. def wrap(*args,**kwargs):
  23. if 'logged_in' in session:
  24. return f(*args,**kwargs)
  25. else:
  26. flash("you need to login first")
  27. return redirect(url_for('login'))
  28.  
  29. return wrap
  30.  
  31.  
  32.  
  33.  
  34. @app.route("/search/",methods=["POST","GET"])
  35. def search():
  36. c,conn=connection()
  37. x=''
  38. try:
  39. flash("try")
  40. if request.method=="POST":
  41. city=request.form['city']
  42. flash(city)
  43. select=request.form.get('select')
  44. flash(type(select))
  45. d={1:"bb",2:"pt",3:"hk",4:"ga",5:"pr",6:"ec",7:"cp",8:"ct",9:"eo",10:"sg"}
  46. flash("before")
  47. x=int(select)
  48. data=c.execute("SELECT * FROM user where city=%s and categoryid=%s",[thwart(city),thwart(d[x])])
  49. flash("after")
  50. return render_template("search.html",c=c)
  51. except Exception as e:
  52. flash(e)
  53. return render_template("search.html",c=c)
  54.  
  55.  
  56.  
  57.  
  58. @app.route("/logout/")
  59. @login_required
  60. def logout():
  61. session.clear()
  62. flash("you have been logged out")
  63. gc.collect()
  64. return redirect(url_for("homepage"))
  65.  
  66.  
  67.  
  68. @app.route('/login/',methods=['GET','POST'] )
  69. def login():
  70. error=' '
  71. try:
  72. c,conn=connection()
  73. if request.method=="POST":
  74. data=c.execute("SELECT * FROM account WHERE username=(%s)",[thwart(request.form['username'])])
  75. data=c.fetchone()[2]
  76. if sha256_crypt.verify(request.form['password'],data):
  77. session['logged_in']=True
  78. session['username']=request.form['username']
  79.  
  80. flash("you are logged in")
  81. flash(session['username'])
  82. return redirect(url_for("upload"))
  83. else:
  84. error="invalid credentials"
  85. gc.collect()
  86. return render_template("login.html",error=error)
  87. except Exception as e:
  88. error="invalid credentials"
  89. return render_template("login.html",error=error)
  90.  
  91.  
  92.  
  93.  
  94. @app.route("/upload/",methods=["GET","POST"])
  95. def upload():
  96. error=''
  97. try:
  98. form=UploadForm(request.form)
  99. if request.method=="POST" and form.validate():
  100. name=form.name.data
  101. city=form.city.data
  102. contact=form.contact.data
  103. select=form.select.data
  104. email=form.email.data
  105. c,conn=connection()
  106. x=c.execute("SELECT userid from account WHERE username=(%s)",[thwart(session['username'])])
  107. userid=int(c.fetchone()[0])
  108. username=thwart(session['username'])
  109. #d={"garage":"ga","plumber":"pr","painter":"pt","catering":"ct","electrician":"ec","bloodbank":"bb","eventorganiser":"eo","carpenter":"cp","housekeeper":"hk","securityguard":"sg"}
  110. city=request.form['city']
  111. email=request.form['email']
  112. contact=request.form['contact']
  113. x=c.execute("SELECT * FROM user where username=%s and city=%s and categoryid=%s",[thwart(username),thwart(city),thwart(d[select])])
  114. if int(x)>0:
  115. flash("you cannot have more than one account in any city")
  116. return render_template("upload.html",form=form)
  117. else:
  118. c.execute("INSERT INTO user(userid,username,categoryid,city,contact,email) VALUES(%s,%s,%s,%s,%s,%s)",[thwart(str(userid)),thwart(username),thwart(d[select]),thwart(city),thwart(contact),thwart(email)])
  119. conn.commit()
  120. flash("upload done")
  121. c.close()
  122. conn.close()
  123. return render_template("upload.html",form=form)
  124. return render_template("upload.html",form=form)
  125. except Exception as e:
  126. return (str(e))
  127.  
  128.  
  129. @app.route('/regester/',methods=['GET','POST'] )
  130. def regester_page():
  131. y=0
  132. try:
  133. form=RegestrationForm(request.form)
  134. if request.method=="POST" and form.validate():
  135. username=form.username.data
  136. password=sha256_crypt.encrypt((str(form.password.data)))
  137. c,conn=connection()
  138. x=c.execute("SELECT * FROM account where username = %s ",[thwart(username)])
  139. if int(x)>0:
  140. flash("username already exists choose other name")
  141. return render_template('regester.html',form=form)
  142. else:
  143. y=c.execute('SELECT * FROM account ')
  144. z=int(y)
  145. c.execute("INSERT INTO account (username,userid,password) VALUES (%s, %s, %s)",[thwart(username),(z+1),thwart(password)])
  146. conn.commit()
  147. flash("thanks for regestering")
  148. c.close()
  149. conn.close()
  150. gc.collect()
  151. session['logged_in']=True
  152. session['username']=username
  153. return redirect(url_for("upload"))
  154. return render_template("regester.html",form=form)
  155. except Exception as e:
  156. return (str(e))
  157.  
  158. class RegestrationForm(Form):
  159. username=TextField('Username',[validators.Length(min=4,max=20)])
  160. password=PasswordField('Password',[validators.Required(),validators.EqualTo('confirm',message='password must match')])
  161. confirm=PasswordField('Repeat password')
  162. class UploadForm(Form):
  163. name=TextField('name')
  164. city=TextField("City")
  165. contact=DecimalField("Contact")
  166. email=TextField("email")
  167. select=SelectField('select',choices=[('bb','blood donor'),('pt','painter'),('pl','plumber')])
  168.  
  169. if __name__=="__main_":
  170. app.run()
Add Comment
Please, Sign In to add comment