From 72cfff1b8fc0aa1ed414364af2ef0a4e3c4cb278 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 09:56:25 +0100 Subject: [PATCH 01/71] commit --- app.py | 28 ++++++++++++++++++++++++++-- index.html | 0 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 index.html diff --git a/app.py b/app.py index d82c51f0d..5b600b0a2 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,30 @@ from flask import Flask -app = Flask(__name__) +app = Flask("Studsight") +app.secret_key = "davidneastudsightkey.com" @app.route('/') def hello_world(): - return 'Hello, World!' + return 'Welcome to studsight!' + +@app.route("/login") # Login route +def login(): + pass + +@app.route("/callback") # Callback route +def callback(): + pass# + +@app.route("/logout") # Logout route +def logout(): + pass + +@app.route("/") # Home route +def index(): + return render_template("index.html") + +@app.route("/protected_area") +def protected_area(): + pass + +if __name__ == "__main__": # Run the app + app.run(debug=True) \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..e69de29bb From ece2e633076c34d5c732c22f2c749a044e387afa Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:08:14 +0100 Subject: [PATCH 02/71] Delete index.html --- index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 index.html diff --git a/index.html b/index.html deleted file mode 100644 index e69de29bb..000000000 From a849bbb638c5153401360ee3147202adc32cb044 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:34:33 +0100 Subject: [PATCH 03/71] Update app.py --- app.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/app.py b/app.py index 5b600b0a2..54f6dd367 100644 --- a/app.py +++ b/app.py @@ -1,10 +1,16 @@ -from flask import Flask +from flask import Flask, render_template, session, abort app = Flask("Studsight") app.secret_key = "davidneastudsightkey.com" -@app.route('/') -def hello_world(): - return 'Welcome to studsight!' +def login_is_required(function): + def wrapper(*args, **kwargs): + if "google_id" not in session: + abort(401) # Authorisation required + else: + return function() + + return wrapper + @app.route("/login") # Login route def login(): @@ -20,11 +26,12 @@ def logout(): @app.route("/") # Home route def index(): - return render_template("index.html") + return "hi there...." -@app.route("/protected_area") +@app.route("/protected_area") +@login_is_required def protected_area(): pass if __name__ == "__main__": # Run the app - app.run(debug=True) \ No newline at end of file + app.run(debug=True) From adf1557fe3ab05905d723f532d93304012a83b39 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:35:05 +0100 Subject: [PATCH 04/71] Create require.txt --- require.txt | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 require.txt diff --git a/require.txt b/require.txt new file mode 100644 index 000000000..2426ece65 --- /dev/null +++ b/require.txt @@ -0,0 +1,136 @@ +anyio==4.9.0 +argon2-cffi==25.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==3.0.0 +async-lru==2.0.5 +attrs==25.3.0 +babel==2.17.0 +beautifulsoup4==4.13.4 +bleach==6.2.0 +blinker==1.9.0 +cachetools==5.5.2 +certifi==2025.7.9 +cffi==1.17.1 +charset-normalizer==3.4.2 +click==8.2.1 +colorama==0.4.6 +comm==0.2.2 +contourpy==1.3.2 +cycler==0.12.1 +debugpy==1.8.14 +decorator==5.2.1 +defusedxml==0.7.1 +executing==2.2.0 +fastjsonschema==2.21.1 +filelock==3.13.1 +Flask==3.1.2 +fonttools==4.58.5 +fqdn==1.5.1 +fsspec==2024.6.1 +gitdb==4.0.12 +GitPython==3.1.44 +google-auth==2.40.3 +google-auth-oauthlib==1.2.2 +gunicorn==23.0.0 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.10 +ipykernel==6.29.5 +ipython==9.4.0 +ipython_pygments_lexers==1.1.1 +isoduration==20.11.0 +itsdangerous==2.2.0 +jedi==0.19.2 +Jinja2==3.1.6 +joblib==1.5.1 +json5==0.12.0 +jsonpointer==3.0.0 +jsonschema==4.24.0 +jsonschema-specifications==2025.4.1 +jupyter-events==0.12.0 +jupyter-lsp==2.2.5 +jupyter-server-mathjax==0.2.6 +jupyter_client==8.6.3 +jupyter_core==5.8.1 +jupyter_server==2.16.0 +jupyter_server_terminals==0.5.3 +jupyterlab==4.4.4 +jupyterlab_git==0.51.2 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.27.3 +kiwisolver==1.4.8 +MarkupSafe==3.0.2 +matplotlib==3.10.3 +matplotlib-inline==0.1.7 +mistune==3.1.3 +mpmath==1.3.0 +narwhals==1.46.0 +nbclient==0.10.2 +nbconvert==7.16.6 +nbdime==4.0.2 +nbformat==5.10.4 +nest-asyncio==1.6.0 +networkx==3.3 +notebook_shim==0.2.4 +numpy==2.3.1 +oauthlib==3.3.1 +overrides==7.7.0 +packaging==25.0 +pandas==2.3.1 +pandocfilters==1.5.1 +parso==0.8.4 +pexpect==4.9.0 +pillow==11.3.0 +platformdirs==4.3.8 +plotly==6.2.0 +prometheus_client==0.22.1 +prompt_toolkit==3.0.51 +psutil==7.0.0 +ptyprocess==0.7.0 +pure_eval==0.2.3 +pyasn1==0.6.1 +pyasn1_modules==0.4.2 +pycparser==2.22 +Pygments==2.19.2 +pyparsing==3.2.3 +python-dateutil==2.9.0.post0 +python-json-logger==3.3.0 +pytz==2025.2 +PyYAML==6.0.2 +pyzmq==27.0.0 +referencing==0.36.2 +requests==2.32.4 +requests-oauthlib==2.0.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.26.0 +rsa==4.9.1 +scikit-learn==1.7.0 +scipy==1.16.0 +seaborn==0.13.2 +Send2Trash==1.8.3 +setuptools==80.9.0 +six==1.17.0 +smmap==5.0.2 +sniffio==1.3.1 +soupsieve==2.7 +stack-data==0.6.3 +sympy==1.13.3 +terminado==0.18.1 +threadpoolctl==3.6.0 +tinycss2==1.4.0 +torch==2.7.1+cpu +tornado==6.5.1 +traitlets==5.14.3 +types-python-dateutil==2.9.0.20250708 +typing_extensions==4.14.1 +tzdata==2025.2 +uri-template==1.3.0 +urllib3==2.5.0 +wcwidth==0.2.13 +webcolors==24.11.1 +webencodings==0.5.1 +websocket-client==1.8.0 +Werkzeug==3.1.3 From aa627eef3b4be79f686d4d9ee81ca8df035a41e4 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:39:36 +0000 Subject: [PATCH 05/71] just hi --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 54f6dd367..3752954ca 100644 --- a/app.py +++ b/app.py @@ -26,7 +26,7 @@ def logout(): @app.route("/") # Home route def index(): - return "hi there...." + return "hi." @app.route("/protected_area") @login_is_required From db31637d8d2c69e3c3c6d15b7a22b0b2f8a229cf Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:42:41 +0000 Subject: [PATCH 06/71] yo --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 3752954ca..390349d0e 100644 --- a/app.py +++ b/app.py @@ -26,7 +26,7 @@ def logout(): @app.route("/") # Home route def index(): - return "hi." + return "me." @app.route("/protected_area") @login_is_required From 174195b89d2ea84a72502eb89ef239d2daf2812d Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:45:52 +0000 Subject: [PATCH 07/71] add html --- app.py | 4 ++-- home.html | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 home.html diff --git a/app.py b/app.py index 390349d0e..36ec4dabf 100644 --- a/app.py +++ b/app.py @@ -25,8 +25,8 @@ def logout(): pass @app.route("/") # Home route -def index(): - return "me." +def home(): + return render_template("home.html") @app.route("/protected_area") @login_is_required diff --git a/home.html b/home.html new file mode 100644 index 000000000..5bb7143e3 --- /dev/null +++ b/home.html @@ -0,0 +1,49 @@ + + + + + StudSight - Home + + + +
+

Welcome to StudSight

+ +
+ + \ No newline at end of file From a3fd91a27673b5b482daa0217eee57e6a8bd7a7b Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:50:40 +0000 Subject: [PATCH 08/71] templates --- home.html => templates/home.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename home.html => templates/home.html (100%) diff --git a/home.html b/templates/home.html similarity index 100% rename from home.html rename to templates/home.html From b06a2c1a2f9136c5e2dc7b79d45fb52a625df863 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:56:44 +0000 Subject: [PATCH 09/71] add log --- app.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index 36ec4dabf..17b533c26 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -from flask import Flask, render_template, session, abort +from flask import Flask, render_template, session, abort, redirect, url_for app = Flask("Studsight") app.secret_key = "davidneastudsightkey.com" @@ -14,7 +14,8 @@ def wrapper(*args, **kwargs): @app.route("/login") # Login route def login(): - pass + session["google_id"] = "example_google_id" + return redirect(url_for("protected_area")) @app.route("/callback") # Callback route def callback(): @@ -31,7 +32,7 @@ def home(): @app.route("/protected_area") @login_is_required def protected_area(): - pass + return "Welcome to the protected area." if __name__ == "__main__": # Run the app app.run(debug=True) From 2e1e38ef822ed10f778dea874ea60260349bbfe4 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 10:58:13 +0000 Subject: [PATCH 10/71] logn --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index 5bb7143e3..928532e86 100644 --- a/templates/home.html +++ b/templates/home.html @@ -43,7 +43,7 @@

Welcome to StudSight

- +
\ No newline at end of file From 6d361bc8232666601b5ff2f97e9bb41a4e36bcbd Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:01:46 +0000 Subject: [PATCH 11/71] url for login --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index 928532e86..daef06790 100644 --- a/templates/home.html +++ b/templates/home.html @@ -43,7 +43,7 @@

Welcome to StudSight

- +
\ No newline at end of file From 679400a234e0b6e23a72fda7d981c0ffa9f79be3 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:04:17 +0000 Subject: [PATCH 12/71] red --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 17b533c26..7a31b33db 100644 --- a/app.py +++ b/app.py @@ -15,7 +15,7 @@ def wrapper(*args, **kwargs): @app.route("/login") # Login route def login(): session["google_id"] = "example_google_id" - return redirect(url_for("protected_area")) + return redirect("/protected_area") @app.route("/callback") # Callback route def callback(): From 535ba2cdbd4ba9ab6b5b423e3e5306766f64d81a Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:08:26 +0000 Subject: [PATCH 13/71] log out --- app.py | 2 +- templates/protected_area.html | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 templates/protected_area.html diff --git a/app.py b/app.py index 7a31b33db..5ca176134 100644 --- a/app.py +++ b/app.py @@ -32,7 +32,7 @@ def home(): @app.route("/protected_area") @login_is_required def protected_area(): - return "Welcome to the protected area." + return render_template("protected_area.html", email=session["google_id"]) if __name__ == "__main__": # Run the app app.run(debug=True) diff --git a/templates/protected_area.html b/templates/protected_area.html new file mode 100644 index 000000000..088428bb2 --- /dev/null +++ b/templates/protected_area.html @@ -0,0 +1,15 @@ + + + + + + Protected Area + + +
+

You are logged in

+

Welcome to the Protected Area

+ +
+ + \ No newline at end of file From f4e6b5e4e1916de8fbb5f8dceda673524292ebae Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:10:10 +0000 Subject: [PATCH 14/71] style sgn out --- templates/protected_area.html | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/templates/protected_area.html b/templates/protected_area.html index 088428bb2..5808588aa 100644 --- a/templates/protected_area.html +++ b/templates/protected_area.html @@ -4,6 +4,40 @@ Protected Area +
From 423263e149bf334d96c3ef277f4498eb2a6c81f6 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 11:12:12 +0000 Subject: [PATCH 15/71] continue --- app.py | 2 +- templates/logout.html | 0 templates/protected_area.html | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 templates/logout.html diff --git a/app.py b/app.py index 5ca176134..965d2fbf2 100644 --- a/app.py +++ b/app.py @@ -23,7 +23,7 @@ def callback(): @app.route("/logout") # Logout route def logout(): - pass + return render_template("logout.html") @app.route("/") # Home route def home(): diff --git a/templates/logout.html b/templates/logout.html new file mode 100644 index 000000000..e69de29bb diff --git a/templates/protected_area.html b/templates/protected_area.html index 5808588aa..bfc12e65a 100644 --- a/templates/protected_area.html +++ b/templates/protected_area.html @@ -43,7 +43,7 @@

You are logged in

Welcome to the Protected Area

- +
\ No newline at end of file From 8e678a3e302f50c418aa2af6dc91dedefd7458f3 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 12:29:03 +0000 Subject: [PATCH 16/71] iso --- app.py | 2 +- templates/logout.html | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 965d2fbf2..4c885c6d4 100644 --- a/app.py +++ b/app.py @@ -23,7 +23,7 @@ def callback(): @app.route("/logout") # Logout route def logout(): - return render_template("logout.html") + return redirect("/") @app.route("/") # Home route def home(): diff --git a/templates/logout.html b/templates/logout.html index e69de29bb..fcc2cddc7 100644 --- a/templates/logout.html +++ b/templates/logout.html @@ -0,0 +1,10 @@ + + + + + Logged Out + + + + + \ No newline at end of file From cd363adca0531bd236aa76156398263fe5e8bb2f Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 12:33:48 +0000 Subject: [PATCH 17/71] coms --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index daef06790..294836623 100644 --- a/templates/home.html +++ b/templates/home.html @@ -43,7 +43,7 @@

Welcome to StudSight

- +
\ No newline at end of file From 9be3f4a8b41cfcd6868b09182d333f364a196d31 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 12 Sep 2025 12:34:18 +0000 Subject: [PATCH 18/71] sub --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index 294836623..daef06790 100644 --- a/templates/home.html +++ b/templates/home.html @@ -43,7 +43,7 @@

Welcome to StudSight

- +
\ No newline at end of file From c686a673c06b78814521491d0986e17e3ff43562 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 04:50:52 +0000 Subject: [PATCH 19/71] call --- app.py | 3 ++- templates/home.html | 2 +- templates/logout.html | 10 ---------- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/app.py b/app.py index 4c885c6d4..2e3492397 100644 --- a/app.py +++ b/app.py @@ -19,10 +19,11 @@ def login(): @app.route("/callback") # Callback route def callback(): - pass# + return "call" @app.route("/logout") # Logout route def logout(): + session.clear() return redirect("/") @app.route("/") # Home route diff --git a/templates/home.html b/templates/home.html index daef06790..e81592099 100644 --- a/templates/home.html +++ b/templates/home.html @@ -43,7 +43,7 @@

Welcome to StudSight

- +
\ No newline at end of file diff --git a/templates/logout.html b/templates/logout.html index fcc2cddc7..e69de29bb 100644 --- a/templates/logout.html +++ b/templates/logout.html @@ -1,10 +0,0 @@ - - - - - Logged Out - - - - - \ No newline at end of file From 107abb465c3eb3ee8ede92b3761462f902e987ba Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 04:52:29 +0000 Subject: [PATCH 20/71] lll --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index e81592099..daef06790 100644 --- a/templates/home.html +++ b/templates/home.html @@ -43,7 +43,7 @@

Welcome to StudSight

- +
\ No newline at end of file From 6c0a063d2c5a83f21da04bc0ab39383e7188f226 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 04:52:56 +0000 Subject: [PATCH 21/71] pss --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 2e3492397..37f0588b7 100644 --- a/app.py +++ b/app.py @@ -19,7 +19,7 @@ def login(): @app.route("/callback") # Callback route def callback(): - return "call" + pass @app.route("/logout") # Logout route def logout(): From 7014474051097e0bc1faadb7d89ce2d1ce95819a Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 06:12:06 +0100 Subject: [PATCH 22/71] Update app.py --- app.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 37f0588b7..accbb51e8 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,22 @@ from flask import Flask, render_template, session, abort, redirect, url_for +import pathlib,os +from google_auth_oauthlib.flow import Flow + app = Flask("Studsight") app.secret_key = "davidneastudsightkey.com" +client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") + + +GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" + +# Example initialization (update with your actual client secrets file and scopes) +flow = Flow.from_client_secrets_file( + client_secrets_file=client_secrets_file, + scopes=["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", "openid"], + redirect_uri="https://nea-studsight.onrender.com/callback" + + ) + def login_is_required(function): def wrapper(*args, **kwargs): @@ -12,28 +28,36 @@ def wrapper(*args, **kwargs): return wrapper + + @app.route("/login") # Login route def login(): - session["google_id"] = "example_google_id" - return redirect("/protected_area") + authorization_url, state = flow.authorization_url() + session["state"] = state + return redirect(authorization_url) + @app.route("/callback") # Callback route def callback(): pass + @app.route("/logout") # Logout route def logout(): session.clear() return redirect("/") + @app.route("/") # Home route def home(): return render_template("home.html") + @app.route("/protected_area") @login_is_required def protected_area(): return render_template("protected_area.html", email=session["google_id"]) + if __name__ == "__main__": # Run the app app.run(debug=True) From 51e405f5b39870d8caf5526708a4dc5876d5829e Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 06:16:52 +0100 Subject: [PATCH 23/71] clien --- client_secret.json | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 client_secret.json diff --git a/client_secret.json b/client_secret.json new file mode 100644 index 000000000..e597839d8 --- /dev/null +++ b/client_secret.json @@ -0,0 +1,13 @@ +{ + "web": { + "client_id": "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com", + "project_id": "nea-studsight", + "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_secret": "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", + "redirect_uris": [ + "https://nea-studsight.onrender.com/callback" + ] + } +} \ No newline at end of file From 889db392f450c1fa4e0bc1d8fcaab5e8f2d6af46 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 05:35:41 +0000 Subject: [PATCH 24/71] fin --- app.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index accbb51e8..170c49daa 100644 --- a/app.py +++ b/app.py @@ -1,12 +1,16 @@ -from flask import Flask, render_template, session, abort, redirect, url_for +from flask import Flask, render_template, session, abort, redirect, url_for, request import pathlib,os +from googl.oauth2 import id_token from google_auth_oauthlib.flow import Flow +from pip._vendor import cachecontrol +import google.auth.transport.requests app = Flask("Studsight") app.secret_key = "davidneastudsightkey.com" -client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") +os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" +client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Example initialization (update with your actual client secrets file and scopes) @@ -39,7 +43,22 @@ def login(): @app.route("/callback") # Callback route def callback(): - pass + flow.fetch_token(authorization_response=request.url) + + if not session["state"] == request.args["state"]: + abort(500) # State does not match! + + credentials = flow.credentials + request_session = request.session() + cached_session = cachecontrol.CacheControl(request_session) + token_request = google.auth.transport.requests.Request(session=cached_session) + + id_info = id_token.verify_oauth2_token( + id_token=credentials._id_token, + request=token_request, + audience=GOOGLE_CLIENT_ID + ) + return id_info @app.route("/logout") # Logout route From 4dc70f0a5bc5a93df29d1d357d6642a43a9e9d7f Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 05:36:11 +0000 Subject: [PATCH 25/71] fin2 --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 170c49daa..68e19c4e4 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,6 @@ from flask import Flask, render_template, session, abort, redirect, url_for, request import pathlib,os -from googl.oauth2 import id_token +from google.oauth2 import id_token from google_auth_oauthlib.flow import Flow from pip._vendor import cachecontrol import google.auth.transport.requests From 9bc04d40cc1df6bba40bdc918a0309f02971e850 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 05:45:25 +0000 Subject: [PATCH 26/71] rrr --- require.txt | 137 +---------------------------------------------- requirements.txt | 136 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 136 deletions(-) diff --git a/require.txt b/require.txt index 2426ece65..8b1378917 100644 --- a/require.txt +++ b/require.txt @@ -1,136 +1 @@ -anyio==4.9.0 -argon2-cffi==25.1.0 -argon2-cffi-bindings==21.2.0 -arrow==1.3.0 -asttokens==3.0.0 -async-lru==2.0.5 -attrs==25.3.0 -babel==2.17.0 -beautifulsoup4==4.13.4 -bleach==6.2.0 -blinker==1.9.0 -cachetools==5.5.2 -certifi==2025.7.9 -cffi==1.17.1 -charset-normalizer==3.4.2 -click==8.2.1 -colorama==0.4.6 -comm==0.2.2 -contourpy==1.3.2 -cycler==0.12.1 -debugpy==1.8.14 -decorator==5.2.1 -defusedxml==0.7.1 -executing==2.2.0 -fastjsonschema==2.21.1 -filelock==3.13.1 -Flask==3.1.2 -fonttools==4.58.5 -fqdn==1.5.1 -fsspec==2024.6.1 -gitdb==4.0.12 -GitPython==3.1.44 -google-auth==2.40.3 -google-auth-oauthlib==1.2.2 -gunicorn==23.0.0 -h11==0.16.0 -httpcore==1.0.9 -httpx==0.28.1 -idna==3.10 -ipykernel==6.29.5 -ipython==9.4.0 -ipython_pygments_lexers==1.1.1 -isoduration==20.11.0 -itsdangerous==2.2.0 -jedi==0.19.2 -Jinja2==3.1.6 -joblib==1.5.1 -json5==0.12.0 -jsonpointer==3.0.0 -jsonschema==4.24.0 -jsonschema-specifications==2025.4.1 -jupyter-events==0.12.0 -jupyter-lsp==2.2.5 -jupyter-server-mathjax==0.2.6 -jupyter_client==8.6.3 -jupyter_core==5.8.1 -jupyter_server==2.16.0 -jupyter_server_terminals==0.5.3 -jupyterlab==4.4.4 -jupyterlab_git==0.51.2 -jupyterlab_pygments==0.3.0 -jupyterlab_server==2.27.3 -kiwisolver==1.4.8 -MarkupSafe==3.0.2 -matplotlib==3.10.3 -matplotlib-inline==0.1.7 -mistune==3.1.3 -mpmath==1.3.0 -narwhals==1.46.0 -nbclient==0.10.2 -nbconvert==7.16.6 -nbdime==4.0.2 -nbformat==5.10.4 -nest-asyncio==1.6.0 -networkx==3.3 -notebook_shim==0.2.4 -numpy==2.3.1 -oauthlib==3.3.1 -overrides==7.7.0 -packaging==25.0 -pandas==2.3.1 -pandocfilters==1.5.1 -parso==0.8.4 -pexpect==4.9.0 -pillow==11.3.0 -platformdirs==4.3.8 -plotly==6.2.0 -prometheus_client==0.22.1 -prompt_toolkit==3.0.51 -psutil==7.0.0 -ptyprocess==0.7.0 -pure_eval==0.2.3 -pyasn1==0.6.1 -pyasn1_modules==0.4.2 -pycparser==2.22 -Pygments==2.19.2 -pyparsing==3.2.3 -python-dateutil==2.9.0.post0 -python-json-logger==3.3.0 -pytz==2025.2 -PyYAML==6.0.2 -pyzmq==27.0.0 -referencing==0.36.2 -requests==2.32.4 -requests-oauthlib==2.0.0 -rfc3339-validator==0.1.4 -rfc3986-validator==0.1.1 -rpds-py==0.26.0 -rsa==4.9.1 -scikit-learn==1.7.0 -scipy==1.16.0 -seaborn==0.13.2 -Send2Trash==1.8.3 -setuptools==80.9.0 -six==1.17.0 -smmap==5.0.2 -sniffio==1.3.1 -soupsieve==2.7 -stack-data==0.6.3 -sympy==1.13.3 -terminado==0.18.1 -threadpoolctl==3.6.0 -tinycss2==1.4.0 -torch==2.7.1+cpu -tornado==6.5.1 -traitlets==5.14.3 -types-python-dateutil==2.9.0.20250708 -typing_extensions==4.14.1 -tzdata==2025.2 -uri-template==1.3.0 -urllib3==2.5.0 -wcwidth==0.2.13 -webcolors==24.11.1 -webencodings==0.5.1 -websocket-client==1.8.0 -Werkzeug==3.1.3 + diff --git a/requirements.txt b/requirements.txt index 147ddd086..8fcb6c03d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,138 @@ Flask Gunicorn +anyio==4.9.0 +argon2-cffi==25.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==3.0.0 +async-lru==2.0.5 +attrs==25.3.0 +babel==2.17.0 +beautifulsoup4==4.13.4 +bleach==6.2.0 +blinker==1.9.0 +cachetools==5.5.2 +certifi==2025.7.9 +cffi==1.17.1 +charset-normalizer==3.4.2 +click==8.2.1 +colorama==0.4.6 +comm==0.2.2 +contourpy==1.3.2 +cycler==0.12.1 +debugpy==1.8.14 +decorator==5.2.1 +defusedxml==0.7.1 +executing==2.2.0 +fastjsonschema==2.21.1 +filelock==3.13.1 +Flask==3.1.2 +fonttools==4.58.5 +fqdn==1.5.1 +fsspec==2024.6.1 +gitdb==4.0.12 +GitPython==3.1.44 +google-auth==2.40.3 +google-auth-oauthlib==1.2.2 +gunicorn==23.0.0 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.10 +ipykernel==6.29.5 +ipython==9.4.0 +ipython_pygments_lexers==1.1.1 +isoduration==20.11.0 +itsdangerous==2.2.0 +jedi==0.19.2 +Jinja2==3.1.6 +joblib==1.5.1 +json5==0.12.0 +jsonpointer==3.0.0 +jsonschema==4.24.0 +jsonschema-specifications==2025.4.1 +jupyter-events==0.12.0 +jupyter-lsp==2.2.5 +jupyter-server-mathjax==0.2.6 +jupyter_client==8.6.3 +jupyter_core==5.8.1 +jupyter_server==2.16.0 +jupyter_server_terminals==0.5.3 +jupyterlab==4.4.4 +jupyterlab_git==0.51.2 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.27.3 +kiwisolver==1.4.8 +MarkupSafe==3.0.2 +matplotlib==3.10.3 +matplotlib-inline==0.1.7 +mistune==3.1.3 +mpmath==1.3.0 +narwhals==1.46.0 +nbclient==0.10.2 +nbconvert==7.16.6 +nbdime==4.0.2 +nbformat==5.10.4 +nest-asyncio==1.6.0 +networkx==3.3 +notebook_shim==0.2.4 +numpy==2.3.1 +oauthlib==3.3.1 +overrides==7.7.0 +packaging==25.0 +pandas==2.3.1 +pandocfilters==1.5.1 +parso==0.8.4 +pexpect==4.9.0 +pillow==11.3.0 +platformdirs==4.3.8 +plotly==6.2.0 +prometheus_client==0.22.1 +prompt_toolkit==3.0.51 +psutil==7.0.0 +ptyprocess==0.7.0 +pure_eval==0.2.3 +pyasn1==0.6.1 +pyasn1_modules==0.4.2 +pycparser==2.22 +Pygments==2.19.2 +pyparsing==3.2.3 +python-dateutil==2.9.0.post0 +python-json-logger==3.3.0 +pytz==2025.2 +PyYAML==6.0.2 +pyzmq==27.0.0 +referencing==0.36.2 +requests==2.32.4 +requests-oauthlib==2.0.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.26.0 +rsa==4.9.1 +scikit-learn==1.7.0 +scipy==1.16.0 +seaborn==0.13.2 +Send2Trash==1.8.3 +setuptools==80.9.0 +six==1.17.0 +smmap==5.0.2 +sniffio==1.3.1 +soupsieve==2.7 +stack-data==0.6.3 +sympy==1.13.3 +terminado==0.18.1 +threadpoolctl==3.6.0 +tinycss2==1.4.0 +torch==2.7.1+cpu +tornado==6.5.1 +traitlets==5.14.3 +types-python-dateutil==2.9.0.20250708 +typing_extensions==4.14.1 +tzdata==2025.2 +uri-template==1.3.0 +urllib3==2.5.0 +wcwidth==0.2.13 +webcolors==24.11.1 +webencodings==0.5.1 +websocket-client==1.8.0 +Werkzeug==3.1.3 From 0b7c81569e9e128e52f2340620f13c39df77696f Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 05:47:41 +0000 Subject: [PATCH 27/71] rid --- require.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 require.txt diff --git a/require.txt b/require.txt deleted file mode 100644 index 8b1378917..000000000 --- a/require.txt +++ /dev/null @@ -1 +0,0 @@ - From 817c9a5f377ed090aa38624f07194b9ca9db62a6 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 05:52:02 +0000 Subject: [PATCH 28/71] req --- requirements.txt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 8fcb6c03d..07a33a5e3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,3 @@ -Flask -Gunicorn anyio==4.9.0 argon2-cffi==25.1.0 argon2-cffi-bindings==21.2.0 @@ -32,11 +30,17 @@ fqdn==1.5.1 fsspec==2024.6.1 gitdb==4.0.12 GitPython==3.1.44 +google-api-core==2.25.1 +google-api-python-client==2.181.0 google-auth==2.40.3 +google-auth-httplib2==0.2.0 google-auth-oauthlib==1.2.2 +google-oauth2-tool==0.0.3 +googleapis-common-protos==1.70.0 gunicorn==23.0.0 h11==0.16.0 httpcore==1.0.9 +httplib2==0.31.0 httpx==0.28.1 idna==3.10 ipykernel==6.29.5 @@ -77,6 +81,7 @@ nest-asyncio==1.6.0 networkx==3.3 notebook_shim==0.2.4 numpy==2.3.1 +oauth2client==4.1.3 oauthlib==3.3.1 overrides==7.7.0 packaging==25.0 @@ -89,6 +94,8 @@ platformdirs==4.3.8 plotly==6.2.0 prometheus_client==0.22.1 prompt_toolkit==3.0.51 +proto-plus==1.26.1 +protobuf==6.32.1 psutil==7.0.0 ptyprocess==0.7.0 pure_eval==0.2.3 @@ -130,6 +137,7 @@ types-python-dateutil==2.9.0.20250708 typing_extensions==4.14.1 tzdata==2025.2 uri-template==1.3.0 +uritemplate==4.2.0 urllib3==2.5.0 wcwidth==0.2.13 webcolors==24.11.1 From 91364942804f86f68d7722155b6a6a3fbfc17b94 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 05:58:05 +0000 Subject: [PATCH 29/71] cv --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 07a33a5e3..c2a5ffdb7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -130,7 +130,7 @@ sympy==1.13.3 terminado==0.18.1 threadpoolctl==3.6.0 tinycss2==1.4.0 -torch==2.7.1+cpu +torch==2.2.2+cpu tornado==6.5.1 traitlets==5.14.3 types-python-dateutil==2.9.0.20250708 From df3fe4fe67333bf918a16aebaa0a504d9506bc76 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 06:18:34 +0000 Subject: [PATCH 30/71] require --- requirements.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/requirements.txt b/requirements.txt index c2a5ffdb7..dd5ba4c16 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,5 @@ +--extra-index-url https://download.pytorch.org/whl/cpu + anyio==4.9.0 argon2-cffi==25.1.0 argon2-cffi-bindings==21.2.0 @@ -68,7 +70,7 @@ jupyterlab_pygments==0.3.0 jupyterlab_server==2.27.3 kiwisolver==1.4.8 MarkupSafe==3.0.2 -matplotlib==3.10.3 +matplotlib==3.8.4 matplotlib-inline==0.1.7 mistune==3.1.3 mpmath==1.3.0 @@ -80,12 +82,12 @@ nbformat==5.10.4 nest-asyncio==1.6.0 networkx==3.3 notebook_shim==0.2.4 -numpy==2.3.1 +numpy==1.26.4 oauth2client==4.1.3 oauthlib==3.3.1 overrides==7.7.0 packaging==25.0 -pandas==2.3.1 +pandas==2.1.4 pandocfilters==1.5.1 parso==0.8.4 pexpect==4.9.0 @@ -95,7 +97,7 @@ plotly==6.2.0 prometheus_client==0.22.1 prompt_toolkit==3.0.51 proto-plus==1.26.1 -protobuf==6.32.1 +protobuf==4.25.3 psutil==7.0.0 ptyprocess==0.7.0 pure_eval==0.2.3 @@ -116,8 +118,8 @@ rfc3339-validator==0.1.4 rfc3986-validator==0.1.1 rpds-py==0.26.0 rsa==4.9.1 -scikit-learn==1.7.0 -scipy==1.16.0 +scikit-learn==1.3.2 +scipy==1.11.4 seaborn==0.13.2 Send2Trash==1.8.3 setuptools==80.9.0 @@ -130,7 +132,7 @@ sympy==1.13.3 terminado==0.18.1 threadpoolctl==3.6.0 tinycss2==1.4.0 -torch==2.2.2+cpu +torch==2.2.2 tornado==6.5.1 traitlets==5.14.3 types-python-dateutil==2.9.0.20250708 From 4a5cadbfeb3cb11926f5296723389f69a19e349d Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 06:40:47 +0000 Subject: [PATCH 31/71] call --- app.py | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/app.py b/app.py index 68e19c4e4..7a0e8258b 100644 --- a/app.py +++ b/app.py @@ -4,6 +4,7 @@ from google_auth_oauthlib.flow import Flow from pip._vendor import cachecontrol import google.auth.transport.requests +import requests app = Flask("Studsight") app.secret_key = "davidneastudsightkey.com" @@ -41,24 +42,44 @@ def login(): return redirect(authorization_url) -@app.route("/callback") # Callback route -def callback(): - flow.fetch_token(authorization_response=request.url) +# @app.route("/callback") # Callback route +# def callback(): +# flow.fetch_token(authorization_response=request.url) + +# if not session["state"] == request.args["state"]: +# abort(500) # State does not match! + +# credentials = flow.credentials +# request_session = request.session() +# cached_session = cachecontrol.CacheControl(request_session) +# token_request = google.auth.transport.requests.Request(session=cached_session) + +# id_info = id_token.verify_oauth2_token( +# id_token=credentials._id_token, +# request=token_request, +# audience=GOOGLE_CLIENT_ID +# ) +# return id_info - if not session["state"] == request.args["state"]: - abort(500) # State does not match! + +@app.route("/callback") +def callback(): + flow.fetch_token(authorization_response=request.url) + if not session["state"] == request.args["state"]: + abort(500) credentials = flow.credentials - request_session = request.session() + request_session = requests.session() cached_session = cachecontrol.CacheControl(request_session) token_request = google.auth.transport.requests.Request(session=cached_session) - id_info = id_token.verify_oauth2_token( id_token=credentials._id_token, request=token_request, audience=GOOGLE_CLIENT_ID ) - return id_info + session["google_id"] = id_info.get("sub") + session["email"] = id_info.get("email") + return redirect("/protected_area") @app.route("/logout") # Logout route From f316ae45be93b04de2274f12f522be30c4ad373f Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Sat, 13 Sep 2025 06:48:32 +0000 Subject: [PATCH 32/71] req --- app.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app.py b/app.py index 7a0e8258b..eeac657ac 100644 --- a/app.py +++ b/app.py @@ -1,3 +1,4 @@ + from flask import Flask, render_template, session, abort, redirect, url_for, request import pathlib,os from google.oauth2 import id_token @@ -6,6 +7,7 @@ import google.auth.transport.requests import requests + app = Flask("Studsight") app.secret_key = "davidneastudsightkey.com" From 74dc1f1cbe27f2f6a7633d193cf5e014f9b10e27 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 09:13:06 +0100 Subject: [PATCH 33/71] Delete requirements.txt --- requirements.txt | 148 ----------------------------------------------- 1 file changed, 148 deletions(-) delete mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index dd5ba4c16..000000000 --- a/requirements.txt +++ /dev/null @@ -1,148 +0,0 @@ ---extra-index-url https://download.pytorch.org/whl/cpu - -anyio==4.9.0 -argon2-cffi==25.1.0 -argon2-cffi-bindings==21.2.0 -arrow==1.3.0 -asttokens==3.0.0 -async-lru==2.0.5 -attrs==25.3.0 -babel==2.17.0 -beautifulsoup4==4.13.4 -bleach==6.2.0 -blinker==1.9.0 -cachetools==5.5.2 -certifi==2025.7.9 -cffi==1.17.1 -charset-normalizer==3.4.2 -click==8.2.1 -colorama==0.4.6 -comm==0.2.2 -contourpy==1.3.2 -cycler==0.12.1 -debugpy==1.8.14 -decorator==5.2.1 -defusedxml==0.7.1 -executing==2.2.0 -fastjsonschema==2.21.1 -filelock==3.13.1 -Flask==3.1.2 -fonttools==4.58.5 -fqdn==1.5.1 -fsspec==2024.6.1 -gitdb==4.0.12 -GitPython==3.1.44 -google-api-core==2.25.1 -google-api-python-client==2.181.0 -google-auth==2.40.3 -google-auth-httplib2==0.2.0 -google-auth-oauthlib==1.2.2 -google-oauth2-tool==0.0.3 -googleapis-common-protos==1.70.0 -gunicorn==23.0.0 -h11==0.16.0 -httpcore==1.0.9 -httplib2==0.31.0 -httpx==0.28.1 -idna==3.10 -ipykernel==6.29.5 -ipython==9.4.0 -ipython_pygments_lexers==1.1.1 -isoduration==20.11.0 -itsdangerous==2.2.0 -jedi==0.19.2 -Jinja2==3.1.6 -joblib==1.5.1 -json5==0.12.0 -jsonpointer==3.0.0 -jsonschema==4.24.0 -jsonschema-specifications==2025.4.1 -jupyter-events==0.12.0 -jupyter-lsp==2.2.5 -jupyter-server-mathjax==0.2.6 -jupyter_client==8.6.3 -jupyter_core==5.8.1 -jupyter_server==2.16.0 -jupyter_server_terminals==0.5.3 -jupyterlab==4.4.4 -jupyterlab_git==0.51.2 -jupyterlab_pygments==0.3.0 -jupyterlab_server==2.27.3 -kiwisolver==1.4.8 -MarkupSafe==3.0.2 -matplotlib==3.8.4 -matplotlib-inline==0.1.7 -mistune==3.1.3 -mpmath==1.3.0 -narwhals==1.46.0 -nbclient==0.10.2 -nbconvert==7.16.6 -nbdime==4.0.2 -nbformat==5.10.4 -nest-asyncio==1.6.0 -networkx==3.3 -notebook_shim==0.2.4 -numpy==1.26.4 -oauth2client==4.1.3 -oauthlib==3.3.1 -overrides==7.7.0 -packaging==25.0 -pandas==2.1.4 -pandocfilters==1.5.1 -parso==0.8.4 -pexpect==4.9.0 -pillow==11.3.0 -platformdirs==4.3.8 -plotly==6.2.0 -prometheus_client==0.22.1 -prompt_toolkit==3.0.51 -proto-plus==1.26.1 -protobuf==4.25.3 -psutil==7.0.0 -ptyprocess==0.7.0 -pure_eval==0.2.3 -pyasn1==0.6.1 -pyasn1_modules==0.4.2 -pycparser==2.22 -Pygments==2.19.2 -pyparsing==3.2.3 -python-dateutil==2.9.0.post0 -python-json-logger==3.3.0 -pytz==2025.2 -PyYAML==6.0.2 -pyzmq==27.0.0 -referencing==0.36.2 -requests==2.32.4 -requests-oauthlib==2.0.0 -rfc3339-validator==0.1.4 -rfc3986-validator==0.1.1 -rpds-py==0.26.0 -rsa==4.9.1 -scikit-learn==1.3.2 -scipy==1.11.4 -seaborn==0.13.2 -Send2Trash==1.8.3 -setuptools==80.9.0 -six==1.17.0 -smmap==5.0.2 -sniffio==1.3.1 -soupsieve==2.7 -stack-data==0.6.3 -sympy==1.13.3 -terminado==0.18.1 -threadpoolctl==3.6.0 -tinycss2==1.4.0 -torch==2.2.2 -tornado==6.5.1 -traitlets==5.14.3 -types-python-dateutil==2.9.0.20250708 -typing_extensions==4.14.1 -tzdata==2025.2 -uri-template==1.3.0 -uritemplate==4.2.0 -urllib3==2.5.0 -wcwidth==0.2.13 -webcolors==24.11.1 -webencodings==0.5.1 -websocket-client==1.8.0 -Werkzeug==3.1.3 From 9219468c9d14ae75c74b6420012a61370d6ed6e1 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 08:16:21 +0000 Subject: [PATCH 34/71] requiire brought --- requirements.txt | 122 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..b7c25418f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,122 @@ +anyio==4.9.0 +argon2-cffi==25.1.0 +argon2-cffi-bindings==21.2.0 +arrow==1.3.0 +asttokens==3.0.0 +async-lru==2.0.5 +attrs==25.3.0 +babel==2.17.0 +beautifulsoup4==4.13.4 +bleach==6.2.0 +certifi==2025.7.9 +cffi==1.17.1 +charset-normalizer==3.4.2 +colorama==0.4.6 +comm==0.2.2 +contourpy==1.3.2 +cycler==0.12.1 +debugpy==1.8.14 +decorator==5.2.1 +defusedxml==0.7.1 +executing==2.2.0 +fastjsonschema==2.21.1 +filelock==3.13.1 +fonttools==4.58.5 +fqdn==1.5.1 +fsspec==2024.6.1 +gitdb==4.0.12 +GitPython==3.1.44 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.10 +ipykernel==6.29.5 +ipython==9.4.0 +ipython_pygments_lexers==1.1.1 +isoduration==20.11.0 +jedi==0.19.2 +Jinja2==3.1.6 +joblib==1.5.1 +json5==0.12.0 +jsonpointer==3.0.0 +jsonschema==4.24.0 +jsonschema-specifications==2025.4.1 +jupyter-events==0.12.0 +jupyter-lsp==2.2.5 +jupyter-server-mathjax==0.2.6 +jupyter_client==8.6.3 +jupyter_core==5.8.1 +jupyter_server==2.16.0 +jupyter_server_terminals==0.5.3 +jupyterlab==4.4.4 +jupyterlab_git==0.51.2 +jupyterlab_pygments==0.3.0 +jupyterlab_server==2.27.3 +kiwisolver==1.4.8 +MarkupSafe==3.0.2 +matplotlib==3.10.3 +matplotlib-inline==0.1.7 +mistune==3.1.3 +mpmath==1.3.0 +narwhals==1.46.0 +nbclient==0.10.2 +nbconvert==7.16.6 +nbdime==4.0.2 +nbformat==5.10.4 +nest-asyncio==1.6.0 +networkx==3.3 +notebook_shim==0.2.4 +numpy==2.3.1 +overrides==7.7.0 +packaging==25.0 +pandas==2.3.1 +pandocfilters==1.5.1 +parso==0.8.4 +pexpect==4.9.0 +pillow==11.3.0 +platformdirs==4.3.8 +plotly==6.2.0 +prometheus_client==0.22.1 +prompt_toolkit==3.0.51 +psutil==7.0.0 +ptyprocess==0.7.0 +pure_eval==0.2.3 +pycparser==2.22 +Pygments==2.19.2 +pyparsing==3.2.3 +python-dateutil==2.9.0.post0 +python-json-logger==3.3.0 +pytz==2025.2 +PyYAML==6.0.2 +pyzmq==27.0.0 +referencing==0.36.2 +requests==2.32.4 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rpds-py==0.26.0 +scikit-learn==1.7.0 +scipy==1.16.0 +seaborn==0.13.2 +Send2Trash==1.8.3 +setuptools==80.9.0 +six==1.17.0 +smmap==5.0.2 +sniffio==1.3.1 +soupsieve==2.7 +stack-data==0.6.3 +sympy==1.13.3 +terminado==0.18.1 +threadpoolctl==3.6.0 +tinycss2==1.4.0 +torch==2.7.1+cpu +tornado==6.5.1 +traitlets==5.14.3 +types-python-dateutil==2.9.0.20250708 +typing_extensions==4.14.1 +tzdata==2025.2 +uri-template==1.3.0 +urllib3==2.5.0 +wcwidth==0.2.13 +webcolors==24.11.1 +webencodings==0.5.1 +websocket-client==1.8.0 From 5fac2b4d0946336e0fb63d79bfe4d4fbf8b48fd3 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 08:18:58 +0000 Subject: [PATCH 35/71] upd requ --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index b7c25418f..6b9bb7673 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,5 @@ +Flask +Gunicorn anyio==4.9.0 argon2-cffi==25.1.0 argon2-cffi-bindings==21.2.0 From 3fc4ab7690e42a8e66010b5eaf8578476e33ae67 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 08:22:56 +0000 Subject: [PATCH 36/71] torch out --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 6b9bb7673..152b293cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -110,7 +110,6 @@ sympy==1.13.3 terminado==0.18.1 threadpoolctl==3.6.0 tinycss2==1.4.0 -torch==2.7.1+cpu tornado==6.5.1 traitlets==5.14.3 types-python-dateutil==2.9.0.20250708 From 2a34159cce652d30b2f51b2a448130db09457e02 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 08:36:18 +0000 Subject: [PATCH 37/71] due goog --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 152b293cd..23f549896 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ Flask Gunicorn +google-auth-oauthlib anyio==4.9.0 argon2-cffi==25.1.0 argon2-cffi-bindings==21.2.0 From a6366988cd54d02dbf86c065c019c87811853231 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 08:41:59 +0000 Subject: [PATCH 38/71] new req --- requirements.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/requirements.txt b/requirements.txt index 23f549896..d6ab295ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,9 @@ Flask Gunicorn +google-api-python-client +google-auth google-auth-oauthlib +google-auth-httplib2 anyio==4.9.0 argon2-cffi==25.1.0 argon2-cffi-bindings==21.2.0 From 7da2c7c36204d108519549fd46f589bccda39f93 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 14:19:17 +0000 Subject: [PATCH 39/71] new homepage --- templates/home.html | 119 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 104 insertions(+), 15 deletions(-) diff --git a/templates/home.html b/templates/home.html index daef06790..b2eba77db 100644 --- a/templates/home.html +++ b/templates/home.html @@ -5,45 +5,134 @@ StudSight - Home + + + + +
+ Classroom graphic

Welcome to StudSight

+
Encouraging teacher collaboration to help Students' learning.
Collaboration & Insight for Modern Classrooms.
+
+
+ 👩‍🏫 + Teacher Collaboration +
Share resources, strategies, and feedback with fellow educators.
+
+
+ 📊 + Student Insights +
Track student progress and identify learning trends with ease.
+
+
+ 🔒 + Secure & Private +
All data is protected with top-tier security and privacy standards.
+
+
\ No newline at end of file From 2dfb2b25ecc1e0f5e8088f3d155662fcdaae8d6d Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 14:33:18 +0000 Subject: [PATCH 40/71] test --- templates/home.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/home.html b/templates/home.html index b2eba77db..c118d302b 100644 --- a/templates/home.html +++ b/templates/home.html @@ -15,7 +15,7 @@ justify-content: center; } .container { - background: rgba(255,255,255,0.95); + background-image: linear-gradient(to right, #7D77FF, #FF9482); padding: 2.5rem 3.5rem; border-radius: 18px; box-shadow: 0 6px 32px rgba(79,140,255,0.10), 0 1.5px 6px rgba(0,0,0,0.06); @@ -114,7 +114,7 @@
Classroom graphic

Welcome to StudSight

-
Encouraging teacher collaboration to help Students' learning.
Collaboration & Insight for Modern Classrooms.
+
Encouraging teacher collaboration to help Students' lear.
Collaboration & Insight for Modern Classrooms.
From 12058e731fbc17de33800ae4aadad43cb793bf61 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 15:18:32 +0000 Subject: [PATCH 41/71] change --- templates/home.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/home.html b/templates/home.html index c118d302b..ee4c7ff65 100644 --- a/templates/home.html +++ b/templates/home.html @@ -15,7 +15,7 @@ justify-content: center; } .container { - background-image: linear-gradient(to right, #7D77FF, #FF9482); + background-image: linear-gradient(to top, #EF3B36, #FFFFFF); padding: 2.5rem 3.5rem; border-radius: 18px; box-shadow: 0 6px 32px rgba(79,140,255,0.10), 0 1.5px 6px rgba(0,0,0,0.06); @@ -30,7 +30,7 @@ letter-spacing: 1px; } .subtitle { - color: #4f8cff; + color: #2255b3; font-size: 1.2rem; margin-bottom: 2rem; } From 574a0b9a6b889a1fa8a154393b15dc50de92f179 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 19:50:36 +0000 Subject: [PATCH 42/71] conc --- app.py | 52 +++++++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/app.py b/app.py index eeac657ac..55bf08faf 100644 --- a/app.py +++ b/app.py @@ -44,32 +44,11 @@ def login(): return redirect(authorization_url) -# @app.route("/callback") # Callback route -# def callback(): -# flow.fetch_token(authorization_response=request.url) - -# if not session["state"] == request.args["state"]: -# abort(500) # State does not match! - -# credentials = flow.credentials -# request_session = request.session() -# cached_session = cachecontrol.CacheControl(request_session) -# token_request = google.auth.transport.requests.Request(session=cached_session) - -# id_info = id_token.verify_oauth2_token( -# id_token=credentials._id_token, -# request=token_request, -# audience=GOOGLE_CLIENT_ID -# ) -# return id_info - - - -@app.route("/callback") +@app.route("/callback") # Callback route def callback(): flow.fetch_token(authorization_response=request.url) - if not session["state"] == request.args["state"]: - abort(500) + if not session["state"] == request.args["state"]: + abort(500) # State does not match!+ credentials = flow.credentials request_session = requests.session() cached_session = cachecontrol.CacheControl(request_session) @@ -79,9 +58,28 @@ def callback(): request=token_request, audience=GOOGLE_CLIENT_ID ) - session["google_id"] = id_info.get("sub") - session["email"] = id_info.get("email") - return redirect("/protected_area") + + return id_info + + + +# @app.route("/callback") +# def callback(): +# flow.fetch_token(authorization_response=request.url) +# if not session["state"] == request.args["state"]: +# abort(500) +# credentials = flow.credentials +# request_session = requests.session() +# cached_session = cachecontrol.CacheControl(request_session) +# token_request = google.auth.transport.requests.Request(session=cached_session) +# id_info = id_token.verify_oauth2_token( +# id_token=credentials._id_token, +# request=token_request, +# audience=GOOGLE_CLIENT_ID +# ) +# session["google_id"] = id_info.get("sub") +# session["email"] = id_info.get("email") +# return redirect("/protected_area") @app.route("/logout") # Logout route From a8001eb6a5f4a412a8d57ee517ce2542fc2c3972 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 20:00:27 +0000 Subject: [PATCH 43/71] comm --- app.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 55bf08faf..a509bc3dd 100644 --- a/app.py +++ b/app.py @@ -59,7 +59,19 @@ def callback(): audience=GOOGLE_CLIENT_ID ) - return id_info + # Optionally, store info in session for later use + session["google_id"] = id_info.get("sub") + session["email"] = id_info.get("email") + # Return account info as JSON for direct feedback + from flask import jsonify + return jsonify({ + "id": id_info.get("sub"), + "email": id_info.get("email"), + "name": id_info.get("name"), + "picture": id_info.get("picture"), + "locale": id_info.get("locale"), + "hd": id_info.get("hd") + }) From 22db5f4e981b07e0d664c7ca436a8537bdfd5dbb Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 20:12:26 +0000 Subject: [PATCH 44/71] bday --- app.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index a509bc3dd..9808c7078 100644 --- a/app.py +++ b/app.py @@ -19,7 +19,14 @@ # Example initialization (update with your actual client secrets file and scopes) flow = Flow.from_client_secrets_file( client_secrets_file=client_secrets_file, - scopes=["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", "openid"], + scopes=[ + "https://www.googleapis.com/auth/userinfo.profile", + "https://www.googleapis.com/auth/userinfo.email", + "openid", + "https://www.googleapis.com/auth/user.phonenumbers.read", + "https://www.googleapis.com/auth/user.gender.read", + "https://www.googleapis.com/auth/user.birthday.read" + ], redirect_uri="https://nea-studsight.onrender.com/callback" ) @@ -70,7 +77,10 @@ def callback(): "name": id_info.get("name"), "picture": id_info.get("picture"), "locale": id_info.get("locale"), - "hd": id_info.get("hd") + "hd": id_info.get("hd"), + "phone_number": id_info.get("phone_number"), + "gender": id_info.get("gender"), + "birthday": id_info.get("birthday") }) From 543363b3a5d474e01df7c4b695a8e8cce2c963d1 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 20:20:40 +0000 Subject: [PATCH 45/71] go --- app.py | 25 +++-------- test.txt | 125 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+), 19 deletions(-) create mode 100644 test.txt diff --git a/app.py b/app.py index 9808c7078..b819cab2e 100644 --- a/app.py +++ b/app.py @@ -54,34 +54,21 @@ def login(): @app.route("/callback") # Callback route def callback(): flow.fetch_token(authorization_response=request.url) + if not session["state"] == request.args["state"]: - abort(500) # State does not match!+ + abort(500) # State does not match! + credentials = flow.credentials - request_session = requests.session() + request_session = request.session() cached_session = cachecontrol.CacheControl(request_session) token_request = google.auth.transport.requests.Request(session=cached_session) + id_info = id_token.verify_oauth2_token( id_token=credentials._id_token, request=token_request, audience=GOOGLE_CLIENT_ID ) - - # Optionally, store info in session for later use - session["google_id"] = id_info.get("sub") - session["email"] = id_info.get("email") - # Return account info as JSON for direct feedback - from flask import jsonify - return jsonify({ - "id": id_info.get("sub"), - "email": id_info.get("email"), - "name": id_info.get("name"), - "picture": id_info.get("picture"), - "locale": id_info.get("locale"), - "hd": id_info.get("hd"), - "phone_number": id_info.get("phone_number"), - "gender": id_info.get("gender"), - "birthday": id_info.get("birthday") - }) + return id_info diff --git a/test.txt b/test.txt new file mode 100644 index 000000000..9808c7078 --- /dev/null +++ b/test.txt @@ -0,0 +1,125 @@ + +from flask import Flask, render_template, session, abort, redirect, url_for, request +import pathlib,os +from google.oauth2 import id_token +from google_auth_oauthlib.flow import Flow +from pip._vendor import cachecontrol +import google.auth.transport.requests +import requests + + +app = Flask("Studsight") +app.secret_key = "davidneastudsightkey.com" + +os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" + +client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") +GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" + +# Example initialization (update with your actual client secrets file and scopes) +flow = Flow.from_client_secrets_file( + client_secrets_file=client_secrets_file, + scopes=[ + "https://www.googleapis.com/auth/userinfo.profile", + "https://www.googleapis.com/auth/userinfo.email", + "openid", + "https://www.googleapis.com/auth/user.phonenumbers.read", + "https://www.googleapis.com/auth/user.gender.read", + "https://www.googleapis.com/auth/user.birthday.read" + ], + redirect_uri="https://nea-studsight.onrender.com/callback" + + ) + + +def login_is_required(function): + def wrapper(*args, **kwargs): + if "google_id" not in session: + abort(401) # Authorisation required + else: + return function() + + return wrapper + + + + +@app.route("/login") # Login route +def login(): + authorization_url, state = flow.authorization_url() + session["state"] = state + return redirect(authorization_url) + + +@app.route("/callback") # Callback route +def callback(): + flow.fetch_token(authorization_response=request.url) + if not session["state"] == request.args["state"]: + abort(500) # State does not match!+ + credentials = flow.credentials + request_session = requests.session() + cached_session = cachecontrol.CacheControl(request_session) + token_request = google.auth.transport.requests.Request(session=cached_session) + id_info = id_token.verify_oauth2_token( + id_token=credentials._id_token, + request=token_request, + audience=GOOGLE_CLIENT_ID + ) + + # Optionally, store info in session for later use + session["google_id"] = id_info.get("sub") + session["email"] = id_info.get("email") + # Return account info as JSON for direct feedback + from flask import jsonify + return jsonify({ + "id": id_info.get("sub"), + "email": id_info.get("email"), + "name": id_info.get("name"), + "picture": id_info.get("picture"), + "locale": id_info.get("locale"), + "hd": id_info.get("hd"), + "phone_number": id_info.get("phone_number"), + "gender": id_info.get("gender"), + "birthday": id_info.get("birthday") + }) + + + +# @app.route("/callback") +# def callback(): +# flow.fetch_token(authorization_response=request.url) +# if not session["state"] == request.args["state"]: +# abort(500) +# credentials = flow.credentials +# request_session = requests.session() +# cached_session = cachecontrol.CacheControl(request_session) +# token_request = google.auth.transport.requests.Request(session=cached_session) +# id_info = id_token.verify_oauth2_token( +# id_token=credentials._id_token, +# request=token_request, +# audience=GOOGLE_CLIENT_ID +# ) +# session["google_id"] = id_info.get("sub") +# session["email"] = id_info.get("email") +# return redirect("/protected_area") + + +@app.route("/logout") # Logout route +def logout(): + session.clear() + return redirect("/") + + +@app.route("/") # Home route +def home(): + return render_template("home.html") + + +@app.route("/protected_area") +@login_is_required +def protected_area(): + return render_template("protected_area.html", email=session["google_id"]) + + +if __name__ == "__main__": # Run the app + app.run(debug=True) From bb6620027bf62c781271da194c0e21da899a6522 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 20:38:17 +0000 Subject: [PATCH 46/71] CHA --- app.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app.py b/app.py index b819cab2e..2845bc987 100644 --- a/app.py +++ b/app.py @@ -22,10 +22,7 @@ scopes=[ "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", - "openid", - "https://www.googleapis.com/auth/user.phonenumbers.read", - "https://www.googleapis.com/auth/user.gender.read", - "https://www.googleapis.com/auth/user.birthday.read" + "openid" ], redirect_uri="https://nea-studsight.onrender.com/callback" From 480c872f108494094f88986b78387999bf54ed13 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 22:06:11 +0000 Subject: [PATCH 47/71] back --- app.py | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/app.py b/app.py index 2845bc987..8cfc3eefc 100644 --- a/app.py +++ b/app.py @@ -48,44 +48,44 @@ def login(): return redirect(authorization_url) -@app.route("/callback") # Callback route -def callback(): - flow.fetch_token(authorization_response=request.url) - - if not session["state"] == request.args["state"]: - abort(500) # State does not match! - - credentials = flow.credentials - request_session = request.session() - cached_session = cachecontrol.CacheControl(request_session) - token_request = google.auth.transport.requests.Request(session=cached_session) - - id_info = id_token.verify_oauth2_token( - id_token=credentials._id_token, - request=token_request, - audience=GOOGLE_CLIENT_ID - ) - return id_info - - - -# @app.route("/callback") +# @app.route("/callback") # Callback route # def callback(): # flow.fetch_token(authorization_response=request.url) -# if not session["state"] == request.args["state"]: -# abort(500) + +# if not session["state"] == request.args["state"]: +# abort(500) # State does not match! + # credentials = flow.credentials -# request_session = requests.session() +# request_session = request.session() # cached_session = cachecontrol.CacheControl(request_session) # token_request = google.auth.transport.requests.Request(session=cached_session) + # id_info = id_token.verify_oauth2_token( # id_token=credentials._id_token, # request=token_request, # audience=GOOGLE_CLIENT_ID # ) -# session["google_id"] = id_info.get("sub") -# session["email"] = id_info.get("email") -# return redirect("/protected_area") +# return id_info + + + +@app.route("/callback") +def callback(): + flow.fetch_token(authorization_response=request.url) + if not session["state"] == request.args["state"]: + abort(500) + credentials = flow.credentials + request_session = requests.session() + cached_session = cachecontrol.CacheControl(request_session) + token_request = google.auth.transport.requests.Request(session=cached_session) + id_info = id_token.verify_oauth2_token( + id_token=credentials._id_token, + request=token_request, + audience=GOOGLE_CLIENT_ID + ) + session["google_id"] = id_info.get("sub") + session["email"] = id_info.get("email") + return redirect("/protected_area") @app.route("/logout") # Logout route From 1ce01507de4d2b3053f327e9f9727e263edbe716 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Mon, 15 Sep 2025 22:23:59 +0000 Subject: [PATCH 48/71] size --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index ee4c7ff65..eabd8a0c6 100644 --- a/templates/home.html +++ b/templates/home.html @@ -1,7 +1,7 @@ - + StudSight - Home From e8d8764e86d9919a80c0a3006ee0cc930a64cf40 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Tue, 16 Sep 2025 08:11:37 +0000 Subject: [PATCH 53/71] link --- templates/home.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/home.html b/templates/home.html index b878d4e4d..54187b4b5 100644 --- a/templates/home.html +++ b/templates/home.html @@ -1,6 +1,7 @@ + StudSight - Home From 155b8891e3bf4c4d2c25afc82a644ccad95a0a98 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Tue, 16 Sep 2025 08:13:53 +0000 Subject: [PATCH 54/71] stat --- templates/home.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/home.html b/templates/home.html index 54187b4b5..49d221750 100644 --- a/templates/home.html +++ b/templates/home.html @@ -1,7 +1,7 @@ - + StudSight - Home From 495cb8e26822f2443706adbbfe80173f325cb42e Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Tue, 16 Sep 2025 08:19:15 +0000 Subject: [PATCH 55/71] dk --- static/home.css | 7 +++++++ templates/home.html | 7 +------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/static/home.css b/static/home.css index 9eddb9fdc..828df2000 100644 --- a/static/home.css +++ b/static/home.css @@ -10,6 +10,13 @@ body { box-sizing: border-box; } +.main-container { + max-width: 1200px; + width: 100%; + margin: 0 auto; + box-sizing: border-box; +} + .container { background-image: linear-gradient(to top, #EF3B36, #FFFFFF); diff --git a/templates/home.html b/templates/home.html index 49d221750..4ebd1f9a4 100644 --- a/templates/home.html +++ b/templates/home.html @@ -2,15 +2,10 @@ - + StudSight - Home - - - - -
Classroom graphic

Welcome to StudSight

From d740b8dcb62039d8f874796b523a7086746d6bce Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Wed, 17 Sep 2025 14:27:24 +0000 Subject: [PATCH 56/71] changes --- .vscode/settings.json | 4 ++++ app.py | 52 +++++++++++++++++++++++++++++++------------ static/home.css | 3 --- templates/home.html | 1 - 4 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..ba2a6c013 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python-envs.defaultEnvManager": "ms-python.python:system", + "python-envs.pythonProjects": [] +} \ No newline at end of file diff --git a/app.py b/app.py index 8cfc3eefc..d41d48c6e 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ - +# IMPOPRTS from flask import Flask, render_template, session, abort, redirect, url_for, request import pathlib,os from google.oauth2 import id_token @@ -8,15 +8,18 @@ import requests -app = Flask("Studsight") -app.secret_key = "davidneastudsightkey.com" +app = Flask("Studsight") # Initialize Flask app +app.secret_key = "davidneastudsightkey.com" # Secret key for session management + + +client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") # Path to client secrets file +GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Your Google Client ID for OAuth 2.0 + -os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" -client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") -GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Example initialization (update with your actual client secrets file and scopes) +#links to the google oauth 2.0 server for authentication flow = Flow.from_client_secrets_file( client_secrets_file=client_secrets_file, scopes=[ @@ -24,30 +27,39 @@ "https://www.googleapis.com/auth/userinfo.email", "openid" ], - redirect_uri="https://nea-studsight.onrender.com/callback" + redirect_uri="https://nea-studsight.onrender.com/callback" # Your redirect URI once authentication is complete ) + + +# Decorator to check if user is logged in before accessing certain routes def login_is_required(function): def wrapper(*args, **kwargs): + if "google_id" not in session: - abort(401) # Authorisation required + abort(401) # Authorisation required else: - return function() + return function() # Call the original function return wrapper + + @app.route("/login") # Login route def login(): - authorization_url, state = flow.authorization_url() + authorization_url, state = flow.authorization_url() # Get authorization URL and state reply from Google session["state"] = state return redirect(authorization_url) + + + # @app.route("/callback") # Callback route # def callback(): # flow.fetch_token(authorization_response=request.url) @@ -69,7 +81,9 @@ def login(): -@app.route("/callback") + + +@app.route("/callback") # Callback route to handle Google's response def callback(): flow.fetch_token(authorization_response=request.url) if not session["state"] == request.args["state"]: @@ -88,18 +102,28 @@ def callback(): return redirect("/protected_area") -@app.route("/logout") # Logout route + + + +@app.route("/logout") # Logout route to clear session def logout(): session.clear() return redirect("/") -@app.route("/") # Home route + + + +@app.route("/") # Home route, which is the landing page when the app is accessed def home(): return render_template("home.html") -@app.route("/protected_area") + + + +# Protected area route, accessible only after login. +@app.route("/protected_area") #This is where the people who have access to the app will go after logging in to view the app's main content. @login_is_required def protected_area(): return render_template("protected_area.html", email=session["google_id"]) diff --git a/static/home.css b/static/home.css index 828df2000..2412dcb66 100644 --- a/static/home.css +++ b/static/home.css @@ -1,20 +1,17 @@ body { font-family: 'Segoe UI', Arial, sans-serif; background: linear-gradient(135deg, #e0e7ff 0%, #f4f6fb 100%); - min-height: 100vh; margin: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; - box-sizing: border-box; } .main-container { max-width: 1200px; width: 100%; margin: 0 auto; - box-sizing: border-box; } diff --git a/templates/home.html b/templates/home.html index 4ebd1f9a4..d71a05343 100644 --- a/templates/home.html +++ b/templates/home.html @@ -2,7 +2,6 @@ - StudSight - Home From cde8e3a803c676bbfe448a8d057c8d65ecfce4f1 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 19 Sep 2025 09:58:28 +0100 Subject: [PATCH 57/71] Update home.css --- static/home.css | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/static/home.css b/static/home.css index 2412dcb66..8e830bdc6 100644 --- a/static/home.css +++ b/static/home.css @@ -1,30 +1,32 @@ body { font-family: 'Segoe UI', Arial, sans-serif; background: linear-gradient(135deg, #e0e7ff 0%, #f4f6fb 100%); - margin: 0; + margin-top: 5vh; display: flex; flex-direction: column; align-items: center; justify-content: center; } -.main-container { - max-width: 1200px; - width: 100%; +/* .main-container { + max-width: 1500px; + width: 1500px; margin: 0 auto; -} +} */ .container { - background-image: linear-gradient(to top, #EF3B36, #FFFFFF); + background-image: url('school2.jpg'); + background-size: cover; + background-repeat: no-repeat; padding: 2.5rem 3.5rem; border-radius: 18px; box-shadow: 0 6px 32px rgba(79,140,255,0.10), 0 1.5px 6px rgba(0,0,0,0.06); - text-align: center; + text-align: align; position: relative; z-index: 2; - max-width: 95vw; - width: 420px; + max-width: 85vw; + width: 85vw; } @@ -56,15 +58,15 @@ h1 { transform: translateY(-2px) scale(1.04); } .hero-img { - width: 180px; - max-width: 60vw; + width: max-content; + max-width: 40vw; margin-bottom: 1.5rem; filter: drop-shadow(0 4px 16px rgba(79,140,255,0.12)); } .features { display: flex; flex-wrap: wrap; - justify-content: center; + justify-content: right; gap: 2rem; margin-top: 2.5rem; width: 100%; @@ -74,9 +76,10 @@ h1 { border-radius: 12px; box-shadow: 0 1px 4px rgba(79,140,255,0.07); padding: 1.2rem 1.5rem; - width: 220px; + position: relative; + width: 10vw; max-width: 90vw; - text-align: left; + text-align: right; display: flex; flex-direction: column; align-items: flex-start; From 22447188412605daa124e38ce444600a54ed78eb Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Fri, 19 Sep 2025 09:58:51 +0100 Subject: [PATCH 58/71] Add files via upload --- static/schoolback.jpg | Bin 0 -> 63170 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/schoolback.jpg diff --git a/static/schoolback.jpg b/static/schoolback.jpg new file mode 100644 index 0000000000000000000000000000000000000000..482c1927e9e7ced589d2d631cfd116586576008d GIT binary patch literal 63170 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

RX!|tKC(K3;FnZvQ^+w$2 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 Date: Fri, 19 Sep 2025 09:59:05 +0100 Subject: [PATCH 59/71] Add files via upload --- static/school2.jpg | Bin 0 -> 38824 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/school2.jpg diff --git a/static/school2.jpg b/static/school2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..14e45aa90aa2a65261ec7af4793b6eaf46d53e9b GIT binary patch literal 38824 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 literal 0 HcmV?d00001 From e0fe0578a903737bb090a6c95ae450d9c63b1aed Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Tue, 23 Sep 2025 13:42:57 +0000 Subject: [PATCH 60/71] requuu --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index d6ab295ab..e7f67afc2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,6 @@ Flask +SQLAlchemy +PyInputPlus Gunicorn google-api-python-client google-auth From 32bfb62b10f96302aa4902a4650fbb3493d0e1b6 Mon Sep 17 00:00:00 2001 From: jxtdav3 Date: Wed, 24 Sep 2025 15:19:55 +0100 Subject: [PATCH 61/71] Update app.py --- app.py | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/app.py b/app.py index d41d48c6e..b20a58bdf 100644 --- a/app.py +++ b/app.py @@ -7,17 +7,12 @@ import google.auth.transport.requests import requests - app = Flask("Studsight") # Initialize Flask app app.secret_key = "davidneastudsightkey.com" # Secret key for session management - client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") # Path to client secrets file GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Your Google Client ID for OAuth 2.0 - - - # Example initialization (update with your actual client secrets file and scopes) #links to the google oauth 2.0 server for authentication flow = Flow.from_client_secrets_file( @@ -32,8 +27,6 @@ ) - - # Decorator to check if user is logged in before accessing certain routes def login_is_required(function): def wrapper(*args, **kwargs): @@ -45,11 +38,6 @@ def wrapper(*args, **kwargs): return wrapper - - - - - @app.route("/login") # Login route def login(): authorization_url, state = flow.authorization_url() # Get authorization URL and state reply from Google @@ -57,9 +45,6 @@ def login(): return redirect(authorization_url) - - - # @app.route("/callback") # Callback route # def callback(): # flow.fetch_token(authorization_response=request.url) @@ -81,8 +66,6 @@ def login(): - - @app.route("/callback") # Callback route to handle Google's response def callback(): flow.fetch_token(authorization_response=request.url) @@ -102,26 +85,16 @@ def callback(): return redirect("/protected_area") - - - @app.route("/logout") # Logout route to clear session def logout(): session.clear() return redirect("/") - - - @app.route("/") # Home route, which is the landing page when the app is accessed def home(): return render_template("home.html") - - - - # Protected area route, accessible only after login. @app.route("/protected_area") #This is where the people who have access to the app will go after logging in to view the app's main content. @login_is_required From bfca5957f9d6aff608a069e1aebad30ae3dd5c4c Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 09:07:40 +0100 Subject: [PATCH 62/71] Create student.py --- student.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 student.py diff --git a/student.py b/student.py new file mode 100644 index 000000000..a26901a45 --- /dev/null +++ b/student.py @@ -0,0 +1,42 @@ +import sqlite3, os, time, pyinputplus as pyip + +connection = sqlite3.connect("student.db") +cursor = connection.cursor() + +cursor.execute('''CREATE TABLE IF NOT EXISTS Students + (StudentID INTEGER PRIMARY KEY AUTOINCREMENT,Firstname TEXT, Surname TEXT, Age INTEGER, Gender TEXT, Mastery TEXT, Yeargroup INTEGER, Email TEXT)''') + + +cursor.execute('''CREATE TABLE IF NOT EXISTS Timetable + ( StudentID INTEGER, Day TEXT, Period1 TEXT, Period2 TEXT, Period3 TEXT, Period4 TEXT, Period5 TEXT, Period6 TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Student_Info + (StudentID INTEGER, Parentname TEXT, Parentnumber INTEGER, Address TEXT, Nationality TEXT, countryofbirth TEXT, Enrollmentdate TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Medical_Info + (StudentID INTEGER, Conditions TEXT, Medication TEXT, Allergies TEXT, Needs TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + + +cursor.execute('''CREATE TABLE IF NOT EXISTS Attendance + (AttendanceID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, Date TEXT, Status TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Behaviour + (BehaviourID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, Date TEXT, Housepoints INTEGER, Sanctions TEXT, Action TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Teachers + (TeacherID INTEGER PRIMARY KEY AUTOINCREMENT, Firstname TEXT, Gender TEXT, Surname TEXT, Email TEXT)''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Subjects + (SubjectID INTEGER PRIMARY KEY AUTOINCREMENT, Subjectname TEXT, TeacherID INTEGER, FOREIGN KEY(TeacherID) REFERENCES teachers(TeacherID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Scores + (ScoreID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, SubjectID INTEGER, Score INTEGER, Assessment1 FLOAT, Assessment2 FLOAT, Assessment3 FLOAT, FOREIGN KEY(StudentID) REFERENCES students(StudentID), FOREIGN KEY(SubjectID) REFERENCES subjects(SubjectID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Assessments + (AssessmentID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, SubjectID INTEGER, Type TEXT, Score FLOAT, Date TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID), FOREIGN KEY(SubjectID) REFERENCES subjects(SubjectID))''') + +cursor.execute('''CREATE TABLE IF NOT EXISTS Summaries + (SummaryID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, Week INTEGER, SummaryText TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + + +connection.commit() From a6ba9784b1eff9ddeb7ab017bc4e1d231bca3ae4 Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 09:08:48 +0100 Subject: [PATCH 63/71] Update home.html --- templates/home.html | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/templates/home.html b/templates/home.html index d71a05343..be5c7bfb9 100644 --- a/templates/home.html +++ b/templates/home.html @@ -6,10 +6,13 @@

- Classroom graphic -

Welcome to StudSight

-
Encouraging teacher collaboration to help Students' learn.
Collaboration & Insight for Modern Classrooms.
+
+ Classroom graphic +

Welcome to StudSight

+
Encouraging teacher collaboration to help Students' learn.
Collaboration & Insight for Modern Classrooms.
+
+
👩‍🏫 @@ -29,4 +32,4 @@

Welcome to StudSight

- \ No newline at end of file + From d821f29c8b4803d895011b8df8c51bb015e0a003 Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 09:09:34 +0100 Subject: [PATCH 64/71] Create protected_area.css --- static/protected_area.css | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 static/protected_area.css diff --git a/static/protected_area.css b/static/protected_area.css new file mode 100644 index 000000000..3989ce293 --- /dev/null +++ b/static/protected_area.css @@ -0,0 +1,33 @@ + +body { + background: #f5f7fa; + font-family: Arial, sans-serif; + margin: 0; + padding: 0; +} +.container { + max-width: 400px; + margin: 80px auto; + background: #fff; + border-radius: 8px; + box-shadow: 0 2px 8px rgba(0,0,0,0.08); + padding: 32px 24px; + text-align: center; +} +h1 { + color: #333; + margin-bottom: 24px; +} +.signout-btn { + background: #e74c3c; + color: #fff; + border: none; + padding: 12px 28px; + border-radius: 4px; + font-size: 16px; + cursor: pointer; + transition: background 0.2s; +} +.signout-btn:hover { + background: #c0392b; +} From 8fb167d2318efe2205cbdf359a45b57fd747dbee Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 09:10:00 +0100 Subject: [PATCH 65/71] Update home.css --- static/home.css | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/static/home.css b/static/home.css index 8e830bdc6..bfa4e1994 100644 --- a/static/home.css +++ b/static/home.css @@ -39,15 +39,21 @@ h1 { .subtitle { color: #2255b3; font-size: 1.2rem; - margin-bottom: 2rem; + margin-bottom: 3rem; } .signin-btn { background: linear-gradient(90deg, #4f8cff 60%, #6ee7b7 100%); color: #fff; + position: relative; + left: 80%; + align-items: right; + size: max-content; + height: 5vw; + width: 15vw; border: none; padding: 0.9rem 2.5rem; border-radius: 8px; - font-size: 1.1rem; + font-size: 2rem; font-weight: 600; cursor: pointer; box-shadow: 0 2px 8px rgba(79,140,255,0.10); @@ -59,10 +65,23 @@ h1 { } .hero-img { width: max-content; - max-width: 40vw; - margin-bottom: 1.5rem; + max-width: 80vw; + left: 75%; + position: relative; + align-self: right; + margin-bottom: 0rem; filter: drop-shadow(0 4px 16px rgba(79,140,255,0.12)); } + +.hero { + position: relative; + bottom: 80%; + display: flex; + flex-direction: column; + align-items: right; + text-align: right; +} + .features { display: flex; flex-wrap: wrap; From afd2d19e24603b0a8569bc5764b545984abeedc5 Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 09:12:35 +0100 Subject: [PATCH 66/71] Update app.py --- app.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/app.py b/app.py index b20a58bdf..8cfc3eefc 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -# IMPOPRTS + from flask import Flask, render_template, session, abort, redirect, url_for, request import pathlib,os from google.oauth2 import id_token @@ -7,14 +7,16 @@ import google.auth.transport.requests import requests -app = Flask("Studsight") # Initialize Flask app -app.secret_key = "davidneastudsightkey.com" # Secret key for session management -client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") # Path to client secrets file -GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Your Google Client ID for OAuth 2.0 +app = Flask("Studsight") +app.secret_key = "davidneastudsightkey.com" + +os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" + +client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") +GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Example initialization (update with your actual client secrets file and scopes) -#links to the google oauth 2.0 server for authentication flow = Flow.from_client_secrets_file( client_secrets_file=client_secrets_file, scopes=[ @@ -22,25 +24,26 @@ "https://www.googleapis.com/auth/userinfo.email", "openid" ], - redirect_uri="https://nea-studsight.onrender.com/callback" # Your redirect URI once authentication is complete + redirect_uri="https://nea-studsight.onrender.com/callback" ) -# Decorator to check if user is logged in before accessing certain routes def login_is_required(function): def wrapper(*args, **kwargs): - if "google_id" not in session: - abort(401) # Authorisation required + abort(401) # Authorisation required else: - return function() # Call the original function + return function() return wrapper + + + @app.route("/login") # Login route def login(): - authorization_url, state = flow.authorization_url() # Get authorization URL and state reply from Google + authorization_url, state = flow.authorization_url() session["state"] = state return redirect(authorization_url) @@ -66,7 +69,7 @@ def login(): -@app.route("/callback") # Callback route to handle Google's response +@app.route("/callback") def callback(): flow.fetch_token(authorization_response=request.url) if not session["state"] == request.args["state"]: @@ -85,18 +88,18 @@ def callback(): return redirect("/protected_area") -@app.route("/logout") # Logout route to clear session +@app.route("/logout") # Logout route def logout(): session.clear() return redirect("/") -@app.route("/") # Home route, which is the landing page when the app is accessed +@app.route("/") # Home route def home(): return render_template("home.html") -# Protected area route, accessible only after login. -@app.route("/protected_area") #This is where the people who have access to the app will go after logging in to view the app's main content. + +@app.route("/protected_area") @login_is_required def protected_area(): return render_template("protected_area.html", email=session["google_id"]) From 81aa5ba365a7fb6d0617ee24662a4a15948f15eb Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 09:18:41 +0100 Subject: [PATCH 67/71] Update app.py --- app.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/app.py b/app.py index 8cfc3eefc..273b99c68 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ - +# IMPORTS from flask import Flask, render_template, session, abort, redirect, url_for, request import pathlib,os from google.oauth2 import id_token @@ -13,10 +13,11 @@ os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" -client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") -GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" +client_secrets_file = os.path.join(pathlib.Path(__file__).parent, "client_secret.json") # Path to client secrets file +GOOGLE_CLIENT_ID = "771970138692-gjilmd2o08eitr81o07oiuhfe7m5ardh.apps.googleusercontent.com" # Your Google Client ID for OAuth 2.0 # Example initialization (update with your actual client secrets file and scopes) +#Links to the google oauth 2.0 server for authentication flow = Flow.from_client_secrets_file( client_secrets_file=client_secrets_file, scopes=[ @@ -24,17 +25,17 @@ "https://www.googleapis.com/auth/userinfo.email", "openid" ], - redirect_uri="https://nea-studsight.onrender.com/callback" + redirect_uri="https://nea-studsight.onrender.com/callback" # Your redirect URI once authentication is complete ) - +#Decorator to check if user is logged in before accessing certain routes def login_is_required(function): def wrapper(*args, **kwargs): if "google_id" not in session: - abort(401) # Authorisation required + abort(401) # Authorisation required else: - return function() + return function() # Call the original function return wrapper @@ -69,7 +70,7 @@ def login(): -@app.route("/callback") +@app.route("/callback") # Callback route to handle Google's response def callback(): flow.fetch_token(authorization_response=request.url) if not session["state"] == request.args["state"]: @@ -88,18 +89,18 @@ def callback(): return redirect("/protected_area") -@app.route("/logout") # Logout route +@app.route("/logout") # Logout route to clear session def logout(): session.clear() return redirect("/") -@app.route("/") # Home route +@app.route("/") # Home route which is the landing page when the app is accessed def home(): return render_template("home.html") - -@app.route("/protected_area") +#Protected area route, only accessibl after login +@app.route("/protected_area") # This is where the people who have access to the app will go to after loggin in to view the app's main content @login_is_required def protected_area(): return render_template("protected_area.html", email=session["google_id"]) From a09cab3a1d26fa763c08903840b060876cb3f30b Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 08:25:35 +0000 Subject: [PATCH 68/71] css --- static/home.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/home.css b/static/home.css index bfa4e1994..e92ec9a27 100644 --- a/static/home.css +++ b/static/home.css @@ -37,7 +37,7 @@ h1 { letter-spacing: 1px; } .subtitle { - color: #2255b3; + color: #f5981e; font-size: 1.2rem; margin-bottom: 3rem; } From 3b6d6e01032dd367f99b84591971ea3a8d95536a Mon Sep 17 00:00:00 2001 From: DA Date: Fri, 10 Oct 2025 08:58:14 +0000 Subject: [PATCH 69/71] chngs --- app.py | 3 +++ student.db | Bin 0 -> 53248 bytes student.py | 50 +++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 student.db diff --git a/app.py b/app.py index 273b99c68..27dd7fe27 100644 --- a/app.py +++ b/app.py @@ -88,6 +88,9 @@ def callback(): session["email"] = id_info.get("email") return redirect("/protected_area") +@app.route('/autho') +def autho(): + return redirect("/protected_area") @app.route("/logout") # Logout route to clear session def logout(): diff --git a/student.db b/student.db new file mode 100644 index 0000000000000000000000000000000000000000..4c03643a45eb886d218e02287e092f86692b31c5 GIT binary patch literal 53248 zcmeI#+fExt7{GBm0Sp+L+yWQ`8?xkeYb5mLOC?8zV0Y% zg}a4fvGBE`6bgm1{9BfP;cI+96W+-G#l-b_m*v8zZ+;(lvNW?)xHJFJ-^+h3{apTI z@y~_d=Km@EJ9jc$mH}P}An?HjhQBVADi0qP&$b->peI^xzpq<{u%nCR^`@q_HKnaS z-`13_51d2y&=2W(HiYlrRBI?F>vCC zSCz>Qe-PqT*p+;PH?GsR_{CA$+K;k}$>%qBn_7LVG5)k_)O}59YMWY9YpiQ6#r8kc zPK0ZtgL0|z=uz=q*-KxwZDHGeIW#+Qxs)PE1SZE&jbm|Y|I?x69=sHt6jl55L<9=0 zj%f*Hb9+~nBpbS1)o)Pe66A1TX=J}uB1hrc$XP5^?%yxITlZ^hJZ9S)xm`}t`fXEF zTlLznEgFp^E~m+f^BIG}T~*>~d>Y!uP0yyA*21RAey>%OH^n~uX`xhk@Su3+*LJ`l zzu8_v*^6oVp!GfY;Y5af7Z$Yt@IddMSBY(*caDV>&*rLs&f1{+0{5)8-6+O zr8iQ&stO`@_%C<78wy=jg-ZXVI9ex z|D3sO2+<8=*UNPD$&8oj+lrTIFiJ1eEJahCY_jdxmowaCA&};8>^T;elZ}$3deuu*_a>{Bxmu!&`4{bmzAJyR7eF zwT-?=U(BSKqWHAY`+jU~=wV)a!ZOV6(;y-L?%6pd;78X|&wiG=`#g2`#X0?4uYC4y z%~hT}Deij=_G>ve;)N|xHeYhJ8MI?=x>l;B@5CHO3uEO>LqNQ z1`Z-uT3;^PKw7CiLp>64#isU_9o=?>6;9%0G4BiAI;QXH(^b literal 0 HcmV?d00001 diff --git a/student.py b/student.py index a26901a45..27118d57a 100644 --- a/student.py +++ b/student.py @@ -4,39 +4,67 @@ cursor = connection.cursor() cursor.execute('''CREATE TABLE IF NOT EXISTS Students - (StudentID INTEGER PRIMARY KEY AUTOINCREMENT,Firstname TEXT, Surname TEXT, Age INTEGER, Gender TEXT, Mastery TEXT, Yeargroup INTEGER, Email TEXT)''') + (StudentID INTEGER PRIMARY KEY AUTOINCREMENT,Firstname TEXT, + Surname TEXT, Age INTEGER, Gender TEXT, Mastery TEXT, + Yeargroup INTEGER, Email TEXT)''') cursor.execute('''CREATE TABLE IF NOT EXISTS Timetable - ( StudentID INTEGER, Day TEXT, Period1 TEXT, Period2 TEXT, Period3 TEXT, Period4 TEXT, Period5 TEXT, Period6 TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + ( StudentID INTEGER, Day TEXT, Period1 TEXT, Period2 TEXT, + Period3 TEXT, Period4 TEXT, Period5 TEXT, Period6 TEXT, + FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Student_Info - (StudentID INTEGER, Parentname TEXT, Parentnumber INTEGER, Address TEXT, Nationality TEXT, countryofbirth TEXT, Enrollmentdate TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + (StudentID INTEGER, Parentname TEXT, Parentnumber INTEGER, + Address TEXT, Nationality TEXT, countryofbirth TEXT, Enrollmentdate TEXT, + FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Medical_Info - (StudentID INTEGER, Conditions TEXT, Medication TEXT, Allergies TEXT, Needs TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + (StudentID INTEGER, Conditions TEXT, Medication TEXT, Allergies TEXT, + Needs TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') cursor.execute('''CREATE TABLE IF NOT EXISTS Attendance - (AttendanceID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, Date TEXT, Status TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + (AttendanceID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, + Date TEXT, Status TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Behaviour - (BehaviourID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, Date TEXT, Housepoints INTEGER, Sanctions TEXT, Action TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + (BehaviourID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, + Date TEXT, Housepoints INTEGER, Sanctions TEXT, Action TEXT, + FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Teachers - (TeacherID INTEGER PRIMARY KEY AUTOINCREMENT, Firstname TEXT, Gender TEXT, Surname TEXT, Email TEXT)''') + (TeacherID INTEGER PRIMARY KEY AUTOINCREMENT, Firstname TEXT, + Gender TEXT, Surname TEXT, Email TEXT)''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Subjects - (SubjectID INTEGER PRIMARY KEY AUTOINCREMENT, Subjectname TEXT, TeacherID INTEGER, FOREIGN KEY(TeacherID) REFERENCES teachers(TeacherID))''') + (SubjectID INTEGER PRIMARY KEY AUTOINCREMENT, Subjectname TEXT, + TeacherID INTEGER, FOREIGN KEY(TeacherID) REFERENCES teachers(TeacherID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Scores - (ScoreID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, SubjectID INTEGER, Score INTEGER, Assessment1 FLOAT, Assessment2 FLOAT, Assessment3 FLOAT, FOREIGN KEY(StudentID) REFERENCES students(StudentID), FOREIGN KEY(SubjectID) REFERENCES subjects(SubjectID))''') + (ScoreID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, SubjectID INTEGER, + Score INTEGER, Assessment1 FLOAT, Assessment2 FLOAT, Assessment3 FLOAT, + FOREIGN KEY(StudentID) REFERENCES students(StudentID), + FOREIGN KEY(SubjectID) REFERENCES subjects(SubjectID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Assessments - (AssessmentID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, SubjectID INTEGER, Type TEXT, Score FLOAT, Date TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID), FOREIGN KEY(SubjectID) REFERENCES subjects(SubjectID))''') + (AssessmentID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, + SubjectID INTEGER, Type TEXT, Score FLOAT, Date TEXT, + FOREIGN KEY(StudentID) REFERENCES students(StudentID), + FOREIGN KEY(SubjectID) REFERENCES subjects(SubjectID))''') + cursor.execute('''CREATE TABLE IF NOT EXISTS Summaries - (SummaryID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, Week INTEGER, SummaryText TEXT, FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') + (SummaryID INTEGER PRIMARY KEY AUTOINCREMENT, StudentID INTEGER, + Week INTEGER, SummaryText TEXT, + FOREIGN KEY(StudentID) REFERENCES students(StudentID))''') connection.commit() From d39416f977913df24ce2555a8d3db9082612d769 Mon Sep 17 00:00:00 2001 From: DA Date: Tue, 14 Oct 2025 20:54:48 +0100 Subject: [PATCH 70/71] Add files via upload --- ...ck to school background _ Premium Vector.jpg | Bin 0 -> 32468 bytes ...ted chalkboard stationery ad background_.jpg | Bin 0 -> 35461 bytes ...olta ao fundo da escola _ Vetor Premium.jpg" | Bin 0 -> 30686 bytes ...ground Images - Free Download on Freepik.jpg | Bin 0 -> 72150 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/Back to school background _ Premium Vector.jpg create mode 100644 static/Free download of hand-painted chalkboard stationery ad background_.jpg create mode 100644 "static/M\303\243o desenhada de volta ao fundo da escola _ Vetor Premium.jpg" create mode 100644 static/School background Images - Free Download on Freepik.jpg diff --git a/static/Back to school background _ Premium Vector.jpg b/static/Back to school background _ Premium Vector.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f913d23d44bd25c7d2c085bcdad17f7fc11908f6 GIT binary patch literal 32468 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 ZXUk`FtA~cRuSUSCzF_rD%=mZx{{sXy<&gjY literal 0 HcmV?d00001 diff --git a/static/Free download of hand-painted chalkboard stationery ad background_.jpg b/static/Free download of hand-painted chalkboard stationery ad background_.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c9e97fdf9fc7c8b3be2c9c20cc8755a78f00612 GIT binary patch literal 35461 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 literal 0 HcmV?d00001 diff --git "a/static/M\303\243o desenhada de volta ao fundo da escola _ Vetor Premium.jpg" "b/static/M\303\243o desenhada de volta ao fundo da escola _ Vetor Premium.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..71f35de26f3eb531d6501e610c4b6ae901adaced GIT binary patch literal 30686 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

sRQk3*0I;k}8U%l(UE3v; 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 literal 0 HcmV?d00001 diff --git a/static/School background Images - Free Download on Freepik.jpg b/static/School background Images - Free Download on Freepik.jpg new file mode 100644 index 0000000000000000000000000000000000000000..089e15ecc091b613f4683aa154774ddd4378aec0 GIT binary patch literal 72150 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

4#f~&SPX=_`6 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 c$z?CC86lUa5<1z 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 ME`dk*6_S7d*{-bRF#rGn literal 0 HcmV?d00001 From 4a354579bdc08e5b99c899687f7de49cfe4e5f9e Mon Sep 17 00:00:00 2001 From: DA Date: Wed, 15 Oct 2025 15:27:57 +0100 Subject: [PATCH 71/71] Update app.py --- app.py | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/app.py b/app.py index 27dd7fe27..db8dfe245 100644 --- a/app.py +++ b/app.py @@ -49,27 +49,6 @@ def login(): return redirect(authorization_url) -# @app.route("/callback") # Callback route -# def callback(): -# flow.fetch_token(authorization_response=request.url) - -# if not session["state"] == request.args["state"]: -# abort(500) # State does not match! - -# credentials = flow.credentials -# request_session = request.session() -# cached_session = cachecontrol.CacheControl(request_session) -# token_request = google.auth.transport.requests.Request(session=cached_session) - -# id_info = id_token.verify_oauth2_token( -# id_token=credentials._id_token, -# request=token_request, -# audience=GOOGLE_CLIENT_ID -# ) -# return id_info - - - @app.route("/callback") # Callback route to handle Google's response def callback(): flow.fetch_token(authorization_response=request.url)