Advertisement
Guest User

Untitled

a guest
Nov 30th, 2016
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.39 KB | None | 0 0
  1. from flask import Flask, render_template, request, url_for, redirect, session, flash, g
  2. from flask_security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required
  3. from flask_sqlalchemy import SQLAlchemy
  4. from functools import wraps
  5. import datetime, models
  6.  
  7.  
  8. #creating the application object
  9. app = Flask(__name__)
  10. app.config.from_object('config.BaseConfig')
  11. db = SQLAlchemy(app)
  12.  
  13. # Create a user to test with
  14. @app.before_first_request
  15. def create_user():
  16. db.create_all()
  17. db.session.add(username='saviour', password='saviour')
  18. db.session.commit()
  19.  
  20.  
  21.  
  22.  
  23. #login check point decorator
  24. def login_required(f):
  25. @wraps(f)
  26. def wrap(*args, **kwargs):
  27. if 'logged_in' in session:
  28. return f(*args, **kwargs)
  29. else:
  30. flash('Please Login in First')
  31. return redirect(url_for('login'))
  32. return wrap
  33.  
  34.  
  35. # Loggin route
  36. @app.route('/', methods=['GET', 'POST'])
  37. def login():
  38. error = None
  39. global username
  40. if request.method == 'POST':
  41. username = request.form['username'].strip()
  42. password = request.form['password'].strip()
  43. #search database for the record
  44. session['username'] = username #store username, submitted with form on line 84
  45. u_login = User.query.filter_by(username=username)
  46. for i in u_login:
  47. if username != i.username or password != i.password:
  48. error = 'Invalid Credentials, Please try again'
  49. flash('Invalid Credentials')
  50. else:
  51. session['logged_in'] = True
  52. flash('you are logged In')
  53. return redirect(url_for('index'))
  54. return render_template('login.html', error=error)
  55.  
  56.  
  57. #logging out
  58. @app.route('/logout')
  59. def logout():
  60. session.pop('logged_in', None)
  61. session.clear()
  62. flash("Thanks for using our service. n You are Logged Out")
  63. return redirect(url_for('login'))
  64.  
  65. #home route
  66. @app.route('/index',methods=['GET','POST'])
  67. @login_required
  68. def index():
  69. data_rec = PAYMENTS.query.all()
  70. return render_template('index.html', data_rec=data_rec)
  71.  
  72.  
  73. #add record/post user
  74. @app.route('/add_rec', methods=['POST', 'GET'])
  75. @login_required
  76. def add_rec():
  77. if request.method == 'POST':
  78. Account = request.form['Account']
  79. GCR_No = request.form['GCR_No']
  80. Payments = request.form['Payments']
  81. PaymentType = request.form['PaymentType'].strip('`')
  82. PaidBy = request.form['PaidBy']
  83. PaidByTele = request.form['PaidByTele']
  84. Cashier = session['username']
  85. pc_name = os.environ.get('USERNAME')
  86. PostData = [Account, GCR_No, Payments, PaymentType, PaidBy, PaidByTele, Cashier]
  87. result = request.form
  88. entry = PAYMENTS(Account, GCR_No, Payments, PaymentType, PaidBy, PaidByTele, Cashier, pc_name)
  89. db.session.add(entry)
  90. db.session.commit()
  91. return render_template('print_page.html', result=result, Cashier=Cashier)
  92. return render_template('add_new.html')
  93.  
  94.  
  95. #search function
  96. @login_required
  97. @app.route('/search', methods=['POST'])
  98. def search():
  99. error = None
  100. query_tag = request.form['search']
  101. try:
  102. search_tag = PAYMENTS.query.filter_by(Account=query_tag).all()
  103. except:
  104. error = 'Record does not exist, Contact administrator'
  105. return render_template('search.html', search_tag=search_tag, error=error)
  106.  
  107.  
  108. @login_required
  109. @app.route('/add_login', methods=['POST', 'GET'])
  110. def add_login():
  111. if request.method == 'POST':
  112. try:
  113. username = request.form['username']
  114. password = request.form['password']
  115. login_details = User(username, password)
  116. db.session.add(login_details)
  117. db.session.commit()
  118. flash('User added succesfully')
  119. return redirect(url_for('index'))
  120. except:
  121. return redirect(url_for(error))
  122. return render_template('add_login.html')
  123.  
  124. #error handling
  125. @login_required
  126. @app.route('/error')
  127. def error():
  128. return render_template('404.html')
  129.  
  130.  
  131. if __name__ == '__main__':
  132. app.run(debug=True)
  133.  
  134. #payments db
  135.  
  136. import app
  137.  
  138. class PAYMENTS(db.Model):
  139. __tablename__ = 'PAYMENTS'
  140. id = db.Column(db.Integer, primary_key=True)
  141. Account = db.Column(db.Integer)
  142. GCR_No = db.Column(db.String(60))
  143. Payments = db.Column(db.Integer)
  144. PaymentType = db.Column(db.String(20))
  145. PaidBy = db.Column(db.String(60))
  146. PaidByTele = db.Column(db.String(10))
  147. Cashier = db.Column(db.String(25))
  148. Pc_name = db.Column(db.String(25))
  149. DatePaid = db.Column(db.DateTime(), default=datetime.datetime.utcnow())
  150. DatePaid = db.Column(db.DateTime(), default=datetime.datetime.today())
  151.  
  152.  
  153.  
  154. def __init__(self, Account, GCR_No, Payments, PaymentType, PaidBy, PaidByTele, Cashier):
  155. self.Account = Account
  156. self.GCR_No = GCR_No
  157. self.Payments = Payments
  158. self.PaymentType = PaymentType
  159. self.PaidBy = PaidBy
  160. self.PaidByTele = PaidByTele
  161. self.Pc_name = Pc_name
  162. self.Cashier = Cashier
  163.  
  164. def __repr__(self):
  165. return '<records %r>' % self.Account
  166.  
  167. #users db
  168. class User(db.Model):
  169. __tablename__ = 'User'
  170. id = db.Column(db.Integer, primary_key=True)
  171. username = db.Column(db.String(10), unique=True)
  172. password = db.Column(db.String(10), unique=True)
  173.  
  174.  
  175. def __init__(self, username, password):
  176. self.username = username
  177. self.password = password
  178.  
  179. def __repr__(self):
  180. return '<User %r>' % self.username
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement