| import gradio as gr |
| import requests |
| import pandas as pd |
| import ast |
|
|
| import boto3 |
| import re |
| import time |
|
|
| df= pd.DataFrame() |
|
|
| def _connect(): |
| ''' |
| Creates and returns the s3 connection by passing the access key and secret key to boto3.client |
| ''' |
| s3 = boto3.client("s3",aws_access_key_id='AKIA2BAL5ERM4EL4HRAE',aws_secret_access_key='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') |
| return s3 |
|
|
| def _upload(s3, tmp_filepath, s3_filepath, acl="public-read", content_type=None): |
| |
| ''' |
| This function uploads the files to specified bucket in s3 and returns the file url |
| ''' |
| S3_LOCATION = 'https://{}.s3.ap-south-1.amazonaws.com/'.format('edwisely-academic-materials-v2') |
| _content_type = content_type |
| try: |
| with open(tmp_filepath, 'rb') as data: |
| |
| s3.upload_fileobj(data, 'edwisely-academic-materials-v2', s3_filepath, |
| ExtraArgs={ |
| "ACL": acl, |
| "ContentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" |
| }) |
| return "{}{}".format(S3_LOCATION, s3_filepath) |
| except Exception as e: |
| print("Something Happened: ", e) |
| raise |
|
|
|
|
| def upload_file(tmp_filepath, faculty_name): |
| s3_obj = _connect() |
| s3_filepath = "{}/{}/{}.xlsx".format('q_gen', 'test',int(time.time())) |
| s3_uploaded_path = _upload(s3_obj, tmp_filepath, s3_filepath) |
| return s3_uploaded_path |
|
|
| def q_gen(topics_list, count, difficulty): |
| url = "https://d5cdtgvt04.execute-api.ap-south-1.amazonaws.com/test/q_gen" |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| topics_list = topics_list.split(",") |
| grand_topics, topics, sub_topics = "","","" |
| for i in topics_list: |
| if len(i.split("T")) == 2: |
| temp = i.strip() |
| if grand_topics != "": |
| grand_topics = grand_topics+","+temp |
| else: |
| grand_topics = i |
| elif len(i.split("T")) == 3: |
| temp = i.strip() |
| if topics != "": |
| topics = topics+","+temp |
| else: |
| topics = temp |
| elif len(i.split("T")) == 4: |
| temp = i.strip() |
| if sub_topics != "": |
| sub_topics = sub_topics+","+temp |
| else: |
| sub_topics = temp |
| params = { |
| "grand_topic_ids": grand_topics, |
| "topic_ids": topics, |
| "sub_topic_ids": sub_topics, |
| "count":count, |
| "difficulty":difficulty, |
| "test_id":1, |
| "faculty_id":1 |
| |
| } |
| df = pd.DataFrame() |
| path = "" |
| try: |
| response = requests.get(url, params=params) |
| response.raise_for_status() |
| |
| |
| content = response.text |
| df = pd.DataFrame(ast.literal_eval(content)) |
| if df.columns[0] == "Not enough questions": |
| return "Not enough questions", df |
| options_df = pd.DataFrame(df['questions_options']) |
| columns_shape = pd.DataFrame(df['questions_options'].tolist()).shape[1] |
| for i in range(columns_shape): |
| options_df[f"option_{i+1}"] = pd.DataFrame(df['questions_options'].tolist())[i].apply(pd.Series)['name'] |
| |
| df['com'] = range(df.shape[0]) |
| options_df['com'] = range(df.shape[0]) |
| df = pd.merge(df, options_df, on=['com']) |
| df = df[['id','name', 'media','blooms_level','type_name', 'type_code', 'option_1', 'option_2', 'option_3', 'option_4']] |
| df.to_excel('temp.xlsx') |
| file_path = "temp.xlsx" |
| path = upload_file(file_path, 'krushna') |
| |
| except requests.exceptions.RequestException as e: |
| print("Error occurred:", e) |
| return path, df |
|
|
| demo = gr.Interface(fn=q_gen, inputs=[ |
| gr.Textbox(value="D04B01GT02,D12B190GT12, D13B10GT06T03,D13B10GT07T02, D12B190GT21T01ST02", label = "topics"), |
| gr.Textbox(value="10", label = "Count"), |
| gr.Textbox(value="8", label = "Difficulty")], outputs=["text","dataframe"]) |
| demo.launch() |