Пример #1
0
 def _build_student_data(self, data, students, course_structure, student_states, filter_types, csvwriter):
     """
         Create list of list to make csv report
     """
     url_base = data['base_url']
     course_id = data['course']
     is_resumen = data['format']
     course_key = CourseKey.from_string(course_id)
     if is_resumen:
         header = ['Titulo', 'Username', 'Email', 'Run', 'Seccion', 'SubSeccion', 'Unidad', 'Intentos', 'Pts Ganados', 'Pts Posibles', 'Url', 'block_id']
     else:
         header = ['Titulo', 'Username', 'Email', 'Run', 'Seccion', 'SubSeccion', 'Unidad', 'Pregunta', 'Respuesta Estudiante', 'Resp. Correcta', 'Intentos', 'Pts Ganados', 'Pts Posibles', 'Pts Total Componente', 'Url', 'block_id']
     csvwriter.writerow(_get_utf8_encoded_rows(header))
     max_count = None
     store = modulestore()
     list_blocks = self.process_data_course(course_structure, filter_types, [], iteri=[1,1,1])
     for block in list_blocks:
         with store.bulk_operations(course_key):
             block_key = UsageKey.from_string(block['block_id'])
             if filter_types is not None and block_key.block_type not in filter_types:
                 continue
             block_item = store.get_item(block_key)
             generated_report_data = defaultdict(list)
             if not is_resumen:
                 generated_report_data = self.get_report_xblock(block_key, student_states[block['block_id']], block_item)
             if generated_report_data is None:
                 continue
             jumo_to_url = url_base + reverse('jump_to',kwargs={
                         'course_id': course_id,
                         'location': block['block_id']})
             for response in student_states[block['block_id']]:
                 if response['username'] not in students:
                     continue
                 if is_resumen:
                     if block_key.block_type != 'problem':
                         pass
                     else:
                         responses = self.set_data_is_resumen(
                             block_item.display_name, 
                             block['block_id'],
                             response,
                             block['section'],
                             block['subsection'],
                             block['unit'],
                             students, jumo_to_url
                             )
                         if responses:
                             csvwriter.writerow(_get_utf8_encoded_rows(responses))
                 else:
                     # A human-readable location for the current block
                     # A machine-friendly location for the current block
                     # A block that has a single state per user can contain multiple responses
                     # within the same state.
                     if block_key.block_type != 'problem':
                         pass
                     else:
                         user_states = generated_report_data.get(response['username'])
                         if user_states:
                             responses = self.set_data_is_all(
                                     block_item.display_name, 
                                     block['block_id'],
                                     response,
                                     block['section'],
                                     block['subsection'],
                                     block['unit'],
                                     students,
                                     user_states, jumo_to_url
                                     )
                             if responses:
                                 csvwriter.writerows(ReportStore()._get_utf8_encoded_rows(responses))
     return csvwriter