Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
from flask import *
from datetime import timedelta
from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy_session import *

app = Flask(__name__)
app.secret_key = "hello"
app.permanent_session_lifetime = timedelta(minutes=5)
app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///users.sqlite3'
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

db = SQLAlchemy(app)


class users(db.Model):
_id = db.Column("id", db.Integer, primary_key=True)
name = db.Column(db.String(100))
email = db.Column(db.String(100))

def __init__(self, name, email):
self.name = name
self.email = email


@app.route('/')
def index():
return render_template("index.html")


@app.route('/login', methods=["GET", "POST"])
def login():
if request.method == "POST":
session.permanent = True
user = request.form["nm"]
session["user"] = user
flash("Login Successful!")
found_user = users.query.filter_by(name=user).first()
if found_user:
session["email"] = found_user.email
else:
usr = users(user, "")
db.Session.add(usr)
db.Session.commit()

return redirect(url_for("user"))
else:
if "user" in session:
flash("Already Logged in")
return redirect(url_for("user"))

return render_template("login.html")


@app.route("/user", methods=["POST", "GET"])
def user():
email = None
if "user" in session:
user = session["user"]

if request.method == "POST":
email = request.form["email"]
session["email"] = email
found_user = users.query.filter_by(name=user).first()
found_user.email = email
db.Session.commit()
else:
if "email" in session:
email = session["email"]

return render_template("user.html", email=email)
else:
flash("You are not logged in")
return redirect(url_for("login"))


@app.route("/view")
def view():
return render_template("view.html", values=users.query.all())


@app.route("/logout")
def logout():
session.pop("user", None)
flash("You have been logged out", "info")
session.pop("email", None)
return redirect(url_for("login"))


if __name__ == '__main__':
db.create_all()
app.run(debug=True)
39 changes: 39 additions & 0 deletions base.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<title>{% block title %} {% endblock %}</title>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="/">Home</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="/login">Login <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="/user">User</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/logout">Logout</a>
</li>
</ul>
</div>
</nav>

<div class="container-fluid">
{% block content %}
{% endblock %}
</div>

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>


</body>
</html>
5 changes: 5 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% extends "base.html" %}
{% block title %}Home Page{% endblock %}
{% block content %}
Hello and welcome to the homepage
{% endblock %}
15 changes: 15 additions & 0 deletions login.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{% extends "base.html" %}
{% block title %}Login Page{% endblock %}
{% block content %}
{% with messages=get_flashed_messages() %}
{% if messages %}
{% for msg in messages %}
<p>{{ msg }}</p>
{% endfor %}
{% endif %}
{% endwith %}
<form action="#" method="POST">
<p> <input type="text" name="nm" /></p>
<p> <input type="submit" value="submit"></p>
</form>
{% endblock %}
17 changes: 17 additions & 0 deletions user.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{% extends "base.html" %}
{% block title %}User{% endblock %}
{% block content %}
{% with messages=get_flashed_messages() %}
{% if messages %}
{% for msg in messages %}
<p>{{ msg }}</p>
{% endfor %}
{% endif %}
{% endwith %}
<p> Welcome, {{ user }}</p>
<form action="#" method="POST">
<input type="email" name="email" placeholder="Enter Email" value="{{ email if email }}"/>
<input type="submit" value="submit"/>
</form>

{% endblock %}
7 changes: 7 additions & 0 deletions view.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{% extends "base.html" %}
{% block title %}View{% endblock %}
{% block content %}
{% for item in values %}
<p>Name: {{ item.name }},Email: {{ item.email }}</p>
{% endfor %}
{% endblock %}