def classes(request, school_id): user = AuthService.get_current_user(request) token = token_service.get_access_token(constant.Resources.MSGraph, user.o365_user_id) education_service = EducationService(user.tenant_id, token) me = education_service.get_me() role = get_user_role(user, me) education_service = EducationService(user.tenant_id, token) school = education_service.get_school(school_id) my_classes = education_service.get_my_classes(school_id) all_classes, classesnextlink = education_service.get_classes(school_id, 12) for c in all_classes: my_class = next((mc for mc in my_classes if c.id == mc.id), None) c.custom_data['is_my'] = my_class != None if my_class != None: c.members = my_class.members context = { 'user': user, 'school': school, 'classesnextlink': classesnextlink, 'classes': all_classes, 'myclasses': my_classes, 'school_id': school_id, 'is_in_a_school': True, 'me': me, 'role':role } return render(request, 'schools/classes.html', context)
def class_details(request, school_id, class_id): user = AuthService.get_current_user(request) token = token_service.get_access_token(constant.Resources.MSGraph, user.o365_user_id) education_service = EducationService(user.tenant_id, token) me = education_service.get_me() role = get_user_role(user, me) token = token_service.get_access_token(constant.Resources.MSGraph, user.o365_user_id) education_service = EducationService(user.tenant_id, token) school = education_service.get_school(school_id) current_class = education_service.get_class(class_id) members = education_service.get_class_members(class_id) teachers = [m for m in members if m.primary_role == 'teacher'] students = [m for m in members if m.primary_role == 'student'] # set favorite colors and seating positions for student in students: favorite_color = user_service.get_favorite_color_by_o365_user_id(student.id) if favorite_color: student.custom_data['favorite_color'] = favorite_color seating_position = user_service.get_seating_position(student.id, class_id) if not seating_position: seating_position = 0 student.custom_data['position'] = seating_position assignments = education_service.get_assignments(class_id) for assignment in assignments: if assignment.dueDateTime !=None: assignment.dueDateTimeLocal = datetime_from_utc_to_local(datetime.strptime(assignment.dueDateTime, '%Y-%m-%dT%H:%M:%SZ')).strftime("%m/%d/%Y") all_teachers = education_service.get_teachers(school.number) filtered_teachers = [t for t in all_teachers if all(t.id != i.id for i in teachers)] # set seatrange seatrange = range(1, 37) ms_token = token_service.get_access_token(constant.Resources.MSGraph, user.o365_user_id) ms_graph_service = MSGraphService(ms_token) documents = ms_graph_service.get_documents(class_id) documents_root = ms_graph_service.get_documents_root(class_id) conversations = ms_graph_service.get_conversations(class_id) for conversation in conversations: conversation.custom_data['url'] = ms_graph_service.get_conversations_url(conversation.id, current_class.mail_nickname) conversations_root = ms_graph_service.get_conversations_root(current_class.mail_nickname) favorite_color = user_service.get_favorite_color_by_o365_user_id(user.o365_user_id) context = { 'user': user, 'me': me, 'role':role, 'is_student':me.is_student, 'school': school, 'class': current_class, 'teachers': teachers, 'students': students, 'documents': documents, 'documents_root': documents_root, 'conversations': conversations, 'conversations_root': conversations_root, 'seatrange': seatrange, 'school_id': school_id, 'class_id': class_id, 'is_in_a_school': True, 'favorite_color': favorite_color, 'filtered_teachers': filtered_teachers, 'assignments' : assignments } return render(request, 'schools/classdetails.html', context)