capradeepgujaran commited on
Commit
f74ec38
·
verified ·
1 Parent(s): 4690b28

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +128 -0
app.py CHANGED
@@ -730,6 +730,134 @@ def create_quiz_interface():
730
  gr.update(visible=True)
731
  ]
732
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
733
  # Event Handlers
734
  generate_btn.click(
735
  fn=on_generate_questions,
 
730
  gr.update(visible=True)
731
  ]
732
 
733
+ def on_submit(questions, answers, current_idx, current_answer):
734
+ """Handle quiz submission with proper HTML rendering"""
735
+ final_answers = list(answers)
736
+ if 0 <= current_idx < len(final_answers):
737
+ final_answers[current_idx] = current_answer
738
+
739
+ if not all(a is not None for a in final_answers[:len(questions)]):
740
+ return [
741
+ gr.Markdown("⚠️ Please answer all questions before submitting."),
742
+ gr.update(visible=True),
743
+ 0,
744
+ "",
745
+ gr.update(visible=True),
746
+ gr.update(visible=True),
747
+ gr.update(visible=False),
748
+ gr.update(visible=False),
749
+ gr.update(visible=False)
750
+ ]
751
+
752
+ score, passed, feedback = quiz_app.calculate_score(final_answers[:len(questions)])
753
+
754
+ # Create feedback content using proper HTML rendering
755
+ feedback_content = f"""# Assessment Results
756
+
757
+ {' '.join(['✅' if f.is_correct else '❌' for f in feedback])} Score: {score:.1f}%
758
+
759
+ """
760
+
761
+ for i, (q, f) in enumerate(zip(questions, feedback)):
762
+ feedback_content += f"""### Question {i+1}
763
+ {q.question}
764
+
765
+ {'✅' if f.is_correct else '❌'} Your answer: **{f.selected or 'No answer'}**
766
+ {' ' if f.is_correct else f' \nCorrect answer: **{f.correct_answer}**'}
767
+
768
+ """
769
+
770
+ # Add summary box
771
+ if passed:
772
+ feedback_content += """
773
+ ---
774
+ ### 🎉 Congratulations!
775
+ You passed the assessment! Click the "View Certificate" button below to get your certificate.
776
+ """
777
+ else:
778
+ feedback_content += """
779
+ ---
780
+ ### Try Again
781
+ You need 80% or higher to pass. Click "Reset Quiz" to try again.
782
+ """
783
+
784
+ return [
785
+ gr.Markdown(feedback_content), # feedback_box
786
+ gr.update(visible=True), # results_group
787
+ score, # score_display
788
+ "🎉 Passed!" if passed else "Please try again", # result_message
789
+ gr.update(visible=False), # question_box
790
+ gr.update(visible=not passed), # reset_btn
791
+ gr.update(visible=passed), # view_cert_btn
792
+ gr.update(visible=True), # back_to_assessment
793
+ gr.update(visible=False) # profile_tab
794
+ ]
795
+
796
+ def create_quiz_interface():
797
+ if not os.getenv("GROQ_API_KEY"):
798
+ raise EnvironmentError("Please set your GROQ_API_KEY environment variable")
799
+
800
+ quiz_app = QuizApp(os.getenv("GROQ_API_KEY"))
801
+
802
+ with gr.Blocks(title="CertifyMe AI", theme=gr.themes.Soft()) as demo:
803
+ # State management
804
+ current_questions = gr.State([])
805
+ current_question_idx = gr.State(0)
806
+ answer_state = gr.State([None] * 5)
807
+
808
+ with gr.Tabs() as tabs:
809
+ # Profile Setup Tab
810
+ with gr.Tab(id=1, label="📋 Step 1: Profile Setup"):
811
+ # ... (previous profile setup code remains the same)
812
+ pass
813
+
814
+ # Assessment Tab
815
+ with gr.Tab(id=2, label="📝 Step 2: Take Assessment") as assessment_tab:
816
+ with gr.Column() as main_container:
817
+ # Questions Section
818
+ with gr.Column(visible=True) as question_box:
819
+ question_display = gr.Markdown("")
820
+ current_options = gr.Radio(
821
+ choices=[],
822
+ label="Select your answer:",
823
+ visible=False
824
+ )
825
+
826
+ with gr.Row():
827
+ prev_btn = gr.Button("← Previous", variant="secondary")
828
+ question_counter = gr.Markdown("Question 1")
829
+ next_btn = gr.Button("Next →", variant="secondary")
830
+
831
+ submit_btn = gr.Button(
832
+ "Submit Assessment",
833
+ variant="primary",
834
+ size="lg"
835
+ )
836
+
837
+ # Results Section
838
+ with gr.Column(visible=False) as results_group:
839
+ feedback_box = gr.Markdown("")
840
+ with gr.Row():
841
+ reset_btn = gr.Button(
842
+ "Reset Quiz",
843
+ variant="secondary",
844
+ size="lg",
845
+ visible=False
846
+ )
847
+ view_cert_btn = gr.Button(
848
+ "View Certificate",
849
+ variant="primary",
850
+ size="lg",
851
+ visible=False
852
+ )
853
+
854
+ # Certification Tab
855
+ with gr.Tab(id=3, label="🎓 Step 3: Get Certified"):
856
+ score_display = gr.Number(label="Your Score", visible=False)
857
+ certificate_display = gr.Image(label="Your Certificate")
858
+
859
+
860
+
861
  # Event Handlers
862
  generate_btn.click(
863
  fn=on_generate_questions,