Spaces:
Running
Running
Update dashboard.py
Browse files- dashboard.py +5 -8
dashboard.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import gradio
|
2 |
import re
|
3 |
import bcrypt
|
4 |
import numpy as np
|
@@ -13,7 +13,6 @@ import json
|
|
13 |
|
14 |
from pages import about, community, user_guide
|
15 |
|
16 |
-
# --- Config ---
|
17 |
SUPABASE_URL = "https://fpbuhzbdtzwomjwytqul.supabase.co"
|
18 |
SUPABASE_API_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImZwYnVoemJkdHp3b21qd3l0cXVsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTE5NDk3NzYsImV4cCI6MjA2NzUyNTc3Nn0.oAa2TNNPQMyOGk63AOMZ7XKcwYvy5m-xoSWyvMZd6FY"
|
19 |
SUPABASE_TABLE = "user_details"
|
@@ -24,14 +23,12 @@ headers = {
|
|
24 |
"Content-Type": "application/json"
|
25 |
}
|
26 |
|
27 |
-
# --- Setup ---
|
28 |
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
|
29 |
warnings.filterwarnings("ignore")
|
30 |
np.seterr(all='ignore')
|
31 |
|
32 |
MODEL_PATH = "model_15_64.h5"
|
33 |
if not os.path.exists(MODEL_PATH):
|
34 |
-
print(f"Model file '{MODEL_PATH}' not found. Creating a dummy model for testing.")
|
35 |
dummy_model = tf.keras.Sequential([
|
36 |
tf.keras.layers.Input(shape=(128, 128, 3)),
|
37 |
tf.keras.layers.Flatten(),
|
@@ -45,7 +42,6 @@ with warnings.catch_warnings():
|
|
45 |
warnings.simplefilter("ignore")
|
46 |
deepfake_model = tf.keras.models.load_model(MODEL_PATH)
|
47 |
|
48 |
-
# --- Helpers ---
|
49 |
def is_valid_email(email): return re.match(r"[^@]+@[^@]+\.[^@]+", email)
|
50 |
def is_valid_phone(phone): return re.match(r"^[0-9]{10}$", phone)
|
51 |
|
@@ -94,7 +90,6 @@ def login_user(email, password):
|
|
94 |
return bcrypt.checkpw(password.encode(), stored_hash.encode())
|
95 |
return False
|
96 |
|
97 |
-
# --- UI ---
|
98 |
HOME_TAB_NAME = "π Home"
|
99 |
LOGIN_TAB_NAME = "π Login"
|
100 |
DETECT_TAB_NAME = "π§ͺ Detect Deepfake"
|
@@ -106,7 +101,7 @@ with gr.Blocks(theme=gr.themes.Soft(), title="VerifiAI - Deepfake Detector") as
|
|
106 |
is_logged_in = gr.State(False)
|
107 |
selected_tab = gr.State(HOME_TAB_NAME)
|
108 |
|
109 |
-
with gr.Tabs() as tabs:
|
110 |
with gr.Tab(HOME_TAB_NAME, visible=True) as home_tab:
|
111 |
with gr.Row():
|
112 |
with gr.Column():
|
@@ -206,7 +201,9 @@ with gr.Blocks(theme=gr.themes.Soft(), title="VerifiAI - Deepfake Detector") as
|
|
206 |
predict_btn.click(fn=predict_image, inputs=image_input, outputs=result)
|
207 |
|
208 |
demo.load(lambda: (False, HOME_TAB_NAME), None, [is_logged_in, selected_tab])
|
209 |
-
|
|
|
|
|
210 |
|
211 |
if __name__ == "__main__":
|
212 |
demo.launch()
|
|
|
1 |
+
import gradio
|
2 |
import re
|
3 |
import bcrypt
|
4 |
import numpy as np
|
|
|
13 |
|
14 |
from pages import about, community, user_guide
|
15 |
|
|
|
16 |
SUPABASE_URL = "https://fpbuhzbdtzwomjwytqul.supabase.co"
|
17 |
SUPABASE_API_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImZwYnVoemJkdHp3b21qd3l0cXVsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTE5NDk3NzYsImV4cCI6MjA2NzUyNTc3Nn0.oAa2TNNPQMyOGk63AOMZ7XKcwYvy5m-xoSWyvMZd6FY"
|
18 |
SUPABASE_TABLE = "user_details"
|
|
|
23 |
"Content-Type": "application/json"
|
24 |
}
|
25 |
|
|
|
26 |
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
|
27 |
warnings.filterwarnings("ignore")
|
28 |
np.seterr(all='ignore')
|
29 |
|
30 |
MODEL_PATH = "model_15_64.h5"
|
31 |
if not os.path.exists(MODEL_PATH):
|
|
|
32 |
dummy_model = tf.keras.Sequential([
|
33 |
tf.keras.layers.Input(shape=(128, 128, 3)),
|
34 |
tf.keras.layers.Flatten(),
|
|
|
42 |
warnings.simplefilter("ignore")
|
43 |
deepfake_model = tf.keras.models.load_model(MODEL_PATH)
|
44 |
|
|
|
45 |
def is_valid_email(email): return re.match(r"[^@]+@[^@]+\.[^@]+", email)
|
46 |
def is_valid_phone(phone): return re.match(r"^[0-9]{10}$", phone)
|
47 |
|
|
|
90 |
return bcrypt.checkpw(password.encode(), stored_hash.encode())
|
91 |
return False
|
92 |
|
|
|
93 |
HOME_TAB_NAME = "π Home"
|
94 |
LOGIN_TAB_NAME = "π Login"
|
95 |
DETECT_TAB_NAME = "π§ͺ Detect Deepfake"
|
|
|
101 |
is_logged_in = gr.State(False)
|
102 |
selected_tab = gr.State(HOME_TAB_NAME)
|
103 |
|
104 |
+
with gr.Tabs(elem_id="tabs") as tabs:
|
105 |
with gr.Tab(HOME_TAB_NAME, visible=True) as home_tab:
|
106 |
with gr.Row():
|
107 |
with gr.Column():
|
|
|
201 |
predict_btn.click(fn=predict_image, inputs=image_input, outputs=result)
|
202 |
|
203 |
demo.load(lambda: (False, HOME_TAB_NAME), None, [is_logged_in, selected_tab])
|
204 |
+
|
205 |
+
# β
Replaces buggy _js method
|
206 |
+
selected_tab.change(fn=lambda tab: gr.Tabs.update(selected=tab), inputs=selected_tab, outputs=tabs)
|
207 |
|
208 |
if __name__ == "__main__":
|
209 |
demo.launch()
|