Flask v 2
from flask import Flask, render_template, request, redirect, url_for, session
from flask_session import Session
import psycopg2
from datetime import datetime
DB_HOST = '127.0.0.1'
DB_NAME = 'postgres'
DB_USER = 'postgres'
DB_PASSWORD = 'postgres123'
app = Flask(name)
app.config['SESSION_PERMANENT'] = False
app.config['SESSION_TYPE'] = 'filesystem'
app.secret_key = 'your_secret_key' # Required for session management
Session(app)
Database connection function
def connect_to_db():
try:
return psycopg2.connect(
host=DB_HOST,
database=DB_NAME,
user=DB_USER,
password=DB_PASSWORD
)
except Exception as error:
print(f"Database connection error: {error}")
return None
@app.route('/')
def home():
return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
conn = connect_to_db()
if conn:
cursor = conn.cursor()
query = "SELECT * FROM check_admin WHERE username=%s AND password=%s"
cursor.execute(query, (username, password))
result = cursor.fetchone()
cursor.close()
conn.close()
if result:
session['login'] = True
return redirect(url_for('index')) # Redirect to index after login
return render_template('login.html')
@app.route('/index', methods=['GET', 'POST'])
def index():
if not session.get('login'):
return redirect(url_for('login'))
if request.method == 'POST':
telephone_no = request.form['telephone_number']
session['telephone_number'] = telephone_no # Store in session
return redirect(url_for('receipt'))
return render_template('index.html')
@app.route('/receipt')
def receipt():
if not session.get('login'):
return redirect(url_for('login'))
telephone_no = session.get('telephone_number')
if not telephone_no:
return redirect(url_for('index'))
conn = connect_to_db()
if conn:
cursor = conn.cursor()
query = "SELECT * FROM Customer_info WHERE Telephone_No=%s"
cursor.execute(query, (telephone_no,))
result = cursor.fetchone()
cursor.close()
conn.close()
if result:
customer_name, telephone_no, telephone_exchange, monthly_plan, billed_month, amount_payable = result[:6]
payment_method = 'Cash'
paid_dt_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
name_of_account_officer = "Admin"
# Update payment status
conn = connect_to_db()
if conn:
cursor = conn.cursor()
update_query = """
UPDATE Customer_info
SET Payment_Status='Paid', paid_dt_time=NOW(), Name_of_the_Accounts_Officer=%s
WHERE Telephone_No=%s
"""
cursor.execute(update_query, (name_of_account_officer, telephone_no))
conn.commit()
cursor.close()
conn.close()
return render_template('receipt.html', customer_name=customer_name, telephone_no=telephone_no,
telephone_exchange=telephone_exchange, monthly_plan=monthly_plan,
billed_month=billed_month, amount_payable=amount_payable,
payment_method=payment_method, paid_dt_time=paid_dt_time,
name_of_account_officer=name_of_account_officer)
return "Error retrieving customer information"
@app.route('/logout')
def logout():
session.clear()
return redirect(url_for('login'))
if name == 'main':
app.run(debug=True)