bendahmane-ustomb commited on
Commit
79f65d5
·
1 Parent(s): 5c02cc2

Delete app2.py

Browse files
Files changed (1) hide show
  1. app2.py +0 -150
app2.py DELETED
@@ -1,150 +0,0 @@
1
- import gradio as gr
2
- import uvicorn
3
- from fastapi import FastAPI, Request
4
- from fastapi.responses import RedirectResponse
5
- from starlette.middleware.sessions import SessionMiddleware
6
- import firebase
7
- from exercises import ExercisesBuilder, user_html, custom_css, exo1_data, exo2_data, exo3_data
8
- from conn import *
9
- from time import time
10
- import nbformat
11
-
12
-
13
- app = FastAPI()
14
- fbapp = firebase.initialize_app(config)
15
- auth = fbapp.auth(client_secret=client_secret_config)
16
- db = fbapp.database()
17
- user = None
18
- exo = ExercisesBuilder()
19
-
20
-
21
- @app.middleware("http")
22
- async def check_authentication(request: Request, call_next):
23
- global user
24
- if request.url.path.startswith('/login') or request.url.path.startswith('/auth'):
25
- return await call_next(request)
26
-
27
- user = request.session.get("user")
28
- if not user:
29
- return RedirectResponse(url="/login")
30
- elif int(user["expiresAt"]) < time():
31
- request.session.pop('user', None)
32
- return RedirectResponse(url="/login")
33
-
34
- return await call_next(request)
35
-
36
-
37
- @app.get('/login')
38
- def login(request: Request):
39
- loginurl = auth.authenticate_login_with_google()
40
- return RedirectResponse(loginurl)
41
-
42
-
43
- @app.get('/auth')
44
- async def autht(request: Request):
45
- global exo
46
- user = auth.sign_in_with_oauth_credential(str(request.url))
47
- request.session['user'] = {k: user[k]
48
- for k in ["email", "firstName", "fullName", "lastName", "photoUrl", "displayName", "idToken", "refreshToken", "expiresAt", "localId"]
49
- if k in user}
50
- # print(user)
51
- # print(request.session.get("user"))
52
- exo.notebook = None
53
- return RedirectResponse(url='/')
54
-
55
-
56
- @app.get('/logout')
57
- async def logout(request: Request):
58
- request.session.pop('user', None)
59
- return RedirectResponse(url='/')
60
-
61
-
62
- def send_rep():
63
- notebook = exo.get_notebook()
64
- if notebook:
65
- notebook_str = nbformat.writes(notebook)
66
- if user:
67
- try:
68
- db.child("reports").child(user["localId"]).set(
69
- {"report": notebook_str}, user['idToken'])
70
- gr.Info("Reported sended")
71
- except Exception as e:
72
- raise gr.Error(f"Writing Error! Try to logout and login again")
73
- # print(e)
74
- else:
75
- raise gr.Error(f"Generate the report first!")
76
-
77
-
78
- def gen_rep(ln1, fn1, em1, op1, gr1, ln2, fn2, em2, op2, gr2, *vals):
79
- return exo.generate_report(ln1, fn1, em1, op1, gr1, ln2, fn2, em2, op2, gr2, *vals)
80
-
81
-
82
- def get_user():
83
- str_show = user_html(user["email"], user["photoUrl"], user["expiresAt"])
84
- return str_show, user["lastName"], user["firstName"], user["email"]
85
-
86
-
87
- ###################################################################
88
- with gr.Blocks(theme=gr.themes.Soft(), css=custom_css) as demo:
89
- gr.Markdown(
90
- "# USTO-MB Modeling and Simulation Lab Final Report Submission")
91
- user = gr.HTML("No user")
92
- gr.Markdown(
93
- f"""
94
- Copy your responses to the exercises here. Please avoid displaying or printing unasked/unnecessary details, as it will make the report size larger, and sending the report may fail. <br/>
95
- إنسخ إجاباتك للتمارين هنا. يرجى تجنب عرض أو طباعة تفاصيل غير مطلوبة، حيث ستجعل حجم التقرير أكبر، وقد يؤدي ذلك إلى فشل إرسال التقرير.
96
- """
97
- )
98
- exo.create_exercise_tab("Exercise 1", "Exercise4 (Lab1)", exo1_data)
99
- exo.create_exercise_tab("Exercise 2", "Exercise2 (Lab2)", exo2_data)
100
- exo.create_exercise_tab("Exercise 3", "Exercise2 (Lab3)", exo3_data)
101
-
102
- with gr.Tab("Generate & Submit report"):
103
- with gr.Column(scale=1):
104
- # gr.Markdown("#### Student 1 & 2 informations")
105
- with gr.Row():
106
- gr.Markdown("#### Student1:", elem_classes="student")
107
- ln1 = gr.Textbox(placeholder="Last Name (اللقب)",
108
- show_label=False, scale=2)
109
- fn1 = gr.Textbox(placeholder="First Name (الاسم)",
110
- show_label=False, scale=2)
111
- em1 = gr.Textbox(placeholder="Email (بريد إلكتروني)",
112
- show_label=False, scale=2)
113
- op1 = gr.Dropdown(["Option", "IAA", "RSID", "SID"], value="Option",
114
- interactive=True, show_label=False, scale=0, min_width=130)
115
- gr1 = gr.Dropdown(["Group", "G1", "G2", "G3", "G4"], value="Group",
116
- interactive=True, show_label=False, scale=0, min_width=130)
117
-
118
- with gr.Row():
119
- gr.Markdown("#### Student2:", elem_classes="student")
120
- ln2 = gr.Textbox(placeholder="Last Name (اللقب)",
121
- show_label=False, scale=2)
122
- fn2 = gr.Textbox(placeholder="First Name (الاسم)",
123
- show_label=False, scale=2)
124
- em2 = gr.Textbox(
125
- placeholder="Email (بريد إلكتروني)", show_label=False, scale=2)
126
- op2 = gr.Dropdown(["Option", "IAA", "RSID", "SID"], value="Option",
127
- interactive=True, show_label=False, scale=0, min_width=130)
128
- gr2 = gr.Dropdown(["Group", "G1", "G2", "G3", "G4"], value="Group",
129
- interactive=True, show_label=False, scale=0, min_width=130)
130
-
131
- with gr.Row():
132
- generate_button = gr.Button(
133
- value="Generate Report", elem_classes="button")
134
- send_button = gr.Button(
135
- value="Send Report", elem_classes="button")
136
- resultHTML = gr.HTML(elem_classes="htm")
137
-
138
- generate_button.click(gen_rep,
139
- inputs=[ln1, fn1, em1, op1, gr1, ln2, fn2,
140
- em2, op2, gr2, *exo.exercises["components"]],
141
- outputs=[resultHTML])
142
- send_button.click(send_rep)
143
-
144
- demo.load(get_user, inputs=None, outputs=[user, ln1, fn1, em1])
145
- ##############################################################################
146
-
147
- gradio_app = gr.mount_gradio_app(app, demo, "/")
148
- app.add_middleware(SessionMiddleware, secret_key="##@!secret")
149
- #server = uvicorn.Server(config=uvicorn.Config(app))
150
- #await server.serve()