Files changed (1) hide show
  1. app.py +52 -18
app.py CHANGED
@@ -4,6 +4,8 @@ import os
4
  import shutil
5
  import time
6
  import traceback
 
 
7
 
8
  import gradio as gr
9
  from dotenv import load_dotenv
@@ -106,13 +108,19 @@ def start_grading(history):
106
 
107
 
108
  def start_downloading():
109
- files = glob.glob("output/*.csv")
110
- if files:
111
- file = files[0]
112
- return gr.outputs.File(file)
113
- else:
114
- return "File not found"
115
-
 
 
 
 
 
 
116
 
117
  def get_first_message(history):
118
  global grader_qa
@@ -168,16 +176,28 @@ def enable_fields(url_status, canvas_api_key_status, submit_status, grade_status
168
  canvas_api_key.placeholder = "Data already ingested"
169
 
170
 
171
- def reset_data(history):
172
  # Use shutil.rmtree() to delete output, docs, and vector_stores folders, reset grader and grader_qa, and get_grading_status, reset and return history
173
  global grader, grader_qa
174
- reset_folder('output')
175
- reset_folder('docs')
176
- reset_folder('vector_stores')
177
- grader = None
178
- grader_qa = None
179
- history = [(None, 'Data reset successfully')]
180
- return history
 
 
 
 
 
 
 
 
 
 
 
 
181
 
182
 
183
  def get_output_dir(orig_name):
@@ -207,6 +227,10 @@ def upload_grading_results(file, history):
207
  def bot(history):
208
  return history
209
 
 
 
 
 
210
 
211
  with gr.Blocks() as demo:
212
  gr.Markdown(f"<h2><center>{'Canvas Discussion Grading With Feedback'}</center></h2>")
@@ -222,10 +246,16 @@ with gr.Blocks() as demo:
222
  placeholder="Enter your Canvas API Key", type="password"
223
  )
224
 
225
- with gr.Row():
226
  submit = gr.Button(value="Submit", variant="secondary", )
 
 
 
 
 
 
227
  grade = gr.Button(value="Grade", variant="secondary")
228
  download = gr.Button(value="Download", variant="secondary")
 
229
  reset = gr.Button(value="Reset", variant="secondary")
230
 
231
  chatbot = gr.Chatbot([], label="Chat with grading results", elem_id="chatbot", height=400)
@@ -240,6 +270,10 @@ with gr.Blocks() as demo:
240
  ask = gr.Button(value="Ask", variant="secondary", scale=1)
241
 
242
  chatbot.value = get_first_message([])
 
 
 
 
243
  submit.click(ingest, inputs=[url, canvas_api_key, chatbot], outputs=[chatbot, url, canvas_api_key, submit, grade],
244
  postprocess=False).then(
245
  bot, chatbot, chatbot
@@ -250,7 +284,7 @@ with gr.Blocks() as demo:
250
  bot, chatbot, chatbot
251
  )
252
 
253
- download.click(start_downloading, inputs=[], outputs=[chatbot], postprocess=False).then(
254
  bot, chatbot, chatbot
255
  )
256
 
@@ -262,7 +296,7 @@ with gr.Blocks() as demo:
262
  bot, chatbot, chatbot
263
  )
264
 
265
- reset.click(reset_data, inputs=[chatbot], outputs=[chatbot], postprocess=False, show_progress=True, ).success(
266
  bot, chatbot, chatbot)
267
 
268
  upload.upload(upload_grading_results, inputs=[upload, chatbot], outputs=[chatbot], postprocess=False, ).then(
 
4
  import shutil
5
  import time
6
  import traceback
7
+ import pandas as pd
8
+ import utils
9
 
10
  import gradio as gr
11
  from dotenv import load_dotenv
 
108
 
109
 
110
  def start_downloading():
111
+ # files = glob.glob("output/*.csv")
112
+ # if files:
113
+ # file = files[0]
114
+ # return gr.outputs.File(file)
115
+ # else:
116
+ # return "File not found"
117
+ print(grader.csv)
118
+ return grader.csv, gr.update(visible=True), gr.update(value=process_csv_text(), visible=True)
119
+
120
+ def get_headers():
121
+ df = process_csv_text()
122
+ return list(df.columns)
123
+
124
 
125
  def get_first_message(history):
126
  global grader_qa
 
176
  canvas_api_key.placeholder = "Data already ingested"
177
 
178
 
179
+ def reset_data():
180
  # Use shutil.rmtree() to delete output, docs, and vector_stores folders, reset grader and grader_qa, and get_grading_status, reset and return history
181
  global grader, grader_qa
182
+ #If there's data in docs/output folder during grading
183
+ if os.path.isdir('output') and len(glob.glob("output/*.csv")) > 0 and len(glob.glob("docs/*.json")) > 0 and len(
184
+ glob.glob("docs/*.html")) > 0:
185
+ reset_folder('output')
186
+ reset_folder('docs')
187
+ grader = None
188
+ grader_qa = None
189
+ history = [(None, 'Data reset successfully')]
190
+ return history
191
+ # If there's data in docs folder
192
+ elif len(glob.glob("docs/*.json")) > 0 and len(glob.glob("docs/*.html")):
193
+ reset_folder('docs')
194
+ history = [(None, 'Data reset successfully')]
195
+ return history
196
+ #If there's data in vector_stores folder
197
+ elif len(glob.glob("vector_stores/*.faiss")) > 0 or len(glob.glob("vector_stores/*.pkl")) > 0:
198
+ reset_folder('vector_stores')
199
+ history = [(None, 'Data reset successfully')]
200
+ return history
201
 
202
 
203
  def get_output_dir(orig_name):
 
227
  def bot(history):
228
  return history
229
 
230
+ def process_csv_text():
231
+ file_path = utils.get_csv_file_name()
232
+ df = pd.read_csv(file_path)
233
+ return df
234
 
235
  with gr.Blocks() as demo:
236
  gr.Markdown(f"<h2><center>{'Canvas Discussion Grading With Feedback'}</center></h2>")
 
246
  placeholder="Enter your Canvas API Key", type="password"
247
  )
248
 
 
249
  submit = gr.Button(value="Submit", variant="secondary", )
250
+ with gr.Row():
251
+ table = gr.Dataframe(label ='Canvas CSV Output', type="pandas", overflow_row_behaviour="paginate", visible = False, wrap=True)
252
+
253
+
254
+ with gr.Row():
255
+
256
  grade = gr.Button(value="Grade", variant="secondary")
257
  download = gr.Button(value="Download", variant="secondary")
258
+ file = gr.components.File(label="CSV Output", container=False, visible=False).style(height=100)
259
  reset = gr.Button(value="Reset", variant="secondary")
260
 
261
  chatbot = gr.Chatbot([], label="Chat with grading results", elem_id="chatbot", height=400)
 
270
  ask = gr.Button(value="Ask", variant="secondary", scale=1)
271
 
272
  chatbot.value = get_first_message([])
273
+
274
+ with gr.Row():
275
+ table = gr.Dataframe(label ='Canvas CSV Output', type="pandas", overflow_row_behaviour="paginate", visible = False, wrap=True)
276
+
277
  submit.click(ingest, inputs=[url, canvas_api_key, chatbot], outputs=[chatbot, url, canvas_api_key, submit, grade],
278
  postprocess=False).then(
279
  bot, chatbot, chatbot
 
284
  bot, chatbot, chatbot
285
  )
286
 
287
+ download.click(start_downloading, inputs=[], outputs=[file, file, table]).then(
288
  bot, chatbot, chatbot
289
  )
290
 
 
296
  bot, chatbot, chatbot
297
  )
298
 
299
+ reset.click(reset_data, inputs=[], outputs=[], postprocess=False, show_progress=True, ).success(
300
  bot, chatbot, chatbot)
301
 
302
  upload.upload(upload_grading_results, inputs=[upload, chatbot], outputs=[chatbot], postprocess=False, ).then(