Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import os | |
| import json | |
| from datetime import datetime | |
| # Load domain descriptions | |
| def load_domain_descriptions(): | |
| try: | |
| with open('domain_descriptions.json', 'r') as f: | |
| return json.load(f) | |
| except FileNotFoundError: | |
| return {} | |
| # Load projects data | |
| def load_projects(): | |
| try: | |
| with open('projects.json', 'r') as f: | |
| return json.load(f) | |
| except FileNotFoundError: | |
| return {} | |
| # Load students data | |
| def load_students(): | |
| try: | |
| with open('students.json', 'r') as f: | |
| return json.load(f) | |
| except FileNotFoundError: | |
| return [] | |
| def get_domain_stats(): | |
| projects = load_projects() | |
| students = load_students() | |
| domains = load_domain_descriptions() | |
| total_projects = len(projects) | |
| total_students = len(students) | |
| total_domains = len(domains) | |
| return f""" | |
| ### Project Management System Statistics | |
| - **Total Domains:** {total_domains} | |
| - **Total Projects:** {total_projects} | |
| - **Total Students:** {total_students} | |
| """ | |
| def get_domain_list(): | |
| domains = load_domain_descriptions() | |
| projects = load_projects() | |
| domain_list = [] | |
| for domain_id, description in domains.items(): | |
| domain_projects = [p for p in projects.values() if p.get('domain') == domain_id] | |
| project_count = len(domain_projects) | |
| domain_list.append(f""" | |
| ### Domain {domain_id} | |
| {description} | |
| **Projects:** {project_count} | |
| """) | |
| return "\n".join(domain_list) | |
| def get_project_list(): | |
| projects = load_projects() | |
| students = load_students() | |
| project_list = [] | |
| for project_id, project in projects.items(): | |
| assigned_students = [s for s in students if project_id in s.get('projects', [])] | |
| student_names = ", ".join([s['name'] for s in assigned_students]) | |
| project_list.append(f""" | |
| ### {project['name']} | |
| **Domain:** {project['domain']} | |
| **Type:** {'Hardware' if project.get('type') == 'H' else 'Software'} | |
| **Description:** {project.get('description', 'No description available')} | |
| **Assigned Students:** {student_names if student_names else 'None'} | |
| """) | |
| return "\n".join(project_list) | |
| def get_student_list(): | |
| students = load_students() | |
| projects = load_projects() | |
| student_list = [] | |
| for student in students: | |
| student_projects = [projects.get(pid) for pid in student.get('projects', [])] | |
| project_names = ", ".join([p['name'] for p in student_projects if p]) | |
| student_list.append(f""" | |
| ### {student['name']} | |
| **ID:** {student['id']} | |
| **Email:** {student['email']} | |
| **Projects:** {project_names if project_names else 'None'} | |
| """) | |
| return "\n".join(student_list) | |
| # Create Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# Project Management System") | |
| with gr.Tab("Home"): | |
| gr.Markdown(get_domain_stats()) | |
| with gr.Tab("Domains"): | |
| gr.Markdown(get_domain_list()) | |
| with gr.Tab("Projects"): | |
| gr.Markdown(get_project_list()) | |
| with gr.Tab("Students"): | |
| gr.Markdown(get_student_list()) | |
| # Launch the interface | |
| if __name__ == "__main__": | |
| demo.launch(server_name="0.0.0.0", server_port=7860) |