SIH2024 / app.py
Neurolingua's picture
Update app.py
5bda095 verified
raw
history blame
4.34 kB
import os
import folium
from flask import Flask, render_template, jsonify, request, redirect, url_for, session
import firebase_admin
from firebase_admin import credentials, firestore
# Initialize Flask app
app = Flask(__name__)
app.secret_key = os.urandom(24) # For session management
# Initialize Firebase
# try:
# firebase_admin.get_app()
# except ValueError:
# cred = credentials.Certificate({
# "type": "service_account",
# "project_id": "snippetscript-37175",
# "private_key_id": "your_private_key_id",
# "private_key": "your_private_key",
# "client_email": "your_client_email",
# "client_id": "your_client_id",
# "auth_uri": "https://accounts.google.com/o/oauth2/auth",
# "token_uri": "https://oauth2.googleapis.com/token",
# "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
# "client_x509_cert_url": "your_cert_url"
# })
# firebase_admin.initialize_app(cred)
# Initialize Firestore
# db = firestore.client()
@app.route('/')
def index():
return render_template('index.html')
@app.route('/user-dashboard.html')
def user_dashboard():
return render_template('user-dashboard.html')
@app.route('/get-previous-results', methods=['GET'])
def get_previous_results():
try:
# Simulating a ThingSpeak API call or shared data
# response = requests.get("https://api.thingspeak.com/...", params=...)
# thingspeak_data = response.json()
# Returning shared data for all users
return jsonify({"status": "success", "data": thingspeak_data})
except Exception as e:
return jsonify({"status": "error", "message": str(e)})
# @app.route('/login', methods=['POST'])
# def login():
# phone = request.form['loginPhone']
# password = request.form['loginPassword']
# # Query Firestore to find user
# users_ref = db.collection('users')
# query = users_ref.where('phone', '==', phone).where('password', '==', password)
# try:
# users = query.stream()
# user_list = list(users)
# if len(user_list) > 0:
# # User found, start session
# session['user_phone'] = phone
# return redirect(url_for('user_dashboard'))
# else:
# return "Invalid credentials", 401
# except Exception as e:
# return str(e), 500
# @app.route('/dashboard')
# def user_dashboard():
# if 'user_phone' not in session:
# return redirect(url_for('index'))
# # Fetch user details from Firestore
# user_ref = db.collection('users').document(session['user_phone'])
# user = user_ref.get()
# if user.exists:
# user_data = user.to_dict()
# return render_template('user-dashboard.html', user=user_data)
# else:
# return "User not found", 404
# @app.route('/admin.html')
# def admin():
# return render_template('admin.html')
@app.route('/admin.html')
def admin():
# Create a map centered on Delhi
delhi_coordinates = [28.6139, 77.2090]
folium_map = folium.Map(location=delhi_coordinates, zoom_start=12)
# Add predefined markers in Delhi
markers = [
{"name": "India Gate", "coordinates": [28.6129, 77.2295]},
{"name": "Red Fort", "coordinates": [28.6562, 77.2410]},
{"name": "Qutub Minar", "coordinates": [28.5245, 77.1855]},
]
# Add markers to the map
for marker in markers:
folium.Marker(
location=marker["coordinates"],
popup=marker["name"],
icon=folium.Icon(color="blue", icon="info-sign"),
).add_to(folium_map)
# Use a valid Folium tile layer
folium.TileLayer('OpenStreetMap').add_to(folium_map)
# Add Layer Control for toggling between tile layers
folium.LayerControl().add_to(folium_map)
# Generate the map HTML
map_html = folium_map._repr_html_()
# Render the template with the map
return render_template('admin.html', map=map_html)
@app.route('/logout')
def logout():
# Remove the user's phone number from the session
session.pop('user_phone', None)
# Redirect to the index route (function name, not the file name)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860, debug=True)