Internship / app.py
TharaKavin's picture
Update app.py
dde2647 verified
import gradio as gr
from auth import login, signup
from certificate_ai import read_pdf, verify_certificate
from db import cert_collection
current_user = {"username":None,"role":None}
def user_login(username,password):
role = login(username,password)
if role == "user":
current_user["username"] = username
return "User Login Successful"
if role == "admin":
current_user["username"] = username
return "Admin Login Successful"
return "Invalid Login"
def upload_certificate(file):
text = read_pdf(file)
result = verify_certificate(text)
cert_collection.insert_one({
"username":current_user["username"],
"certificate_text":text,
"result":result
})
return result
def view_certificates():
data = cert_collection.find()
output = []
for d in data:
output.append([d["username"],d["result"]])
return output
with gr.Blocks() as demo:
gr.Markdown("# Internship Certificate Verification System")
with gr.Tab("Signup"):
username = gr.Textbox(label="Username")
password = gr.Textbox(label="Password",type="password")
role = gr.Dropdown(["user","admin"])
signup_btn = gr.Button("Signup")
signup_output = gr.Textbox()
signup_btn.click(signup,
inputs=[username,password,role],
outputs=signup_output)
with gr.Tab("Login"):
l_user = gr.Textbox(label="Username")
l_pass = gr.Textbox(label="Password",type="password")
login_btn = gr.Button("Login")
login_output = gr.Textbox()
login_btn.click(user_login,
inputs=[l_user,l_pass],
outputs=login_output)
with gr.Tab("Upload Certificate"):
file = gr.File(label="Upload PDF")
verify_btn = gr.Button("Verify")
result = gr.Textbox(label="Result")
verify_btn.click(upload_certificate,
inputs=file,
outputs=result)
with gr.Tab("Admin Dashboard"):
view_btn = gr.Button("View Certificates")
table = gr.Dataframe(headers=["Username","Result"])
view_btn.click(view_certificates,
outputs=table)
demo.launch(server_name="0.0.0.0",server_port=7860)