def test_remove_keys(self): dict_of_dicts = { 'foo': { 'bar': { 'baz': 1, 'fizz': 2 } }, 'flat': 0 } flat_dict = { 'foo': 1, 'bar': 2, 'baz': 3 } flat_dict_no_foo = flat_dict.copy() del flat_dict_no_foo['foo'] self.assertDictEqual(remove_keys(flat_dict, ('foo',)), flat_dict_no_foo) dict_of_dicts_no_fizz = deepcopy(dict_of_dicts) del dict_of_dicts_no_fizz['foo']['bar']['fizz'] self.assertDictEqual(remove_keys(dict_of_dicts, {'foo': {'bar': ('fizz',)}}), dict_of_dicts_no_fizz) del dict_of_dicts_no_fizz['flat'] self.assertDictEqual(remove_keys(dict_of_dicts, {'foo': {'bar': ('fizz',)}, '': ('flat',)}), dict_of_dicts_no_fizz)
def test_remove_keys(self): dict_of_dicts = { 'foo': { 'bar': { 'baz': 1, 'fizz': 2 } }, 'burp': { 'baz': 1, }, 'flat': 0 } flat_dict = {'foo': 1, 'bar': 2, 'baz': 3} flat_dict_no_foo = flat_dict.copy() del flat_dict_no_foo['foo'] self.assertDictEqual(remove_keys(flat_dict, ('foo', )), flat_dict_no_foo) dict_of_dicts_no_fizz = deepcopy(dict_of_dicts) del dict_of_dicts_no_fizz['foo']['bar']['fizz'] self.assertDictEqual( remove_keys(dict_of_dicts, {'foo': { 'bar': ('fizz', ) }}), dict_of_dicts_no_fizz) del dict_of_dicts_no_fizz['flat'] self.assertDictEqual( remove_keys(dict_of_dicts, { 'foo': { 'bar': ('fizz', ) }, '': ('flat', ) }), dict_of_dicts_no_fizz)
def get_data(self): courses = permissions.get_user_course_permissions(self.request.user) if not courses: # The user is probably not a course administrator and should not be using this application. raise PermissionDenied enable_course_filters = switch_is_active('enable_course_filters') presenter = CourseSummariesPresenter() summaries, _ = presenter.get_course_summaries(courses) if not summaries: # Instead of returning a useless blank CSV, return a 404 error raise Http404 # Exclude specified fields from each summary entry summaries = [remove_keys(summary, self.exclude_fields) for summary in summaries] if enable_course_filters: # Add list of associated program IDs to each summary entry programs_presenter = ProgramsPresenter() programs = programs_presenter.get_programs(course_ids=courses) for summary in summaries: summary_programs = [program for program in programs if summary['course_id'] in program['course_ids']] summary['program_ids'] = ' | '.join([program['program_id'] for program in summary_programs]) summary['program_titles'] = ' | '.join([program['program_title'] for program in summary_programs]) summaries_csv = self.renderer.render(summaries) return summaries_csv
def get_data(self): courses = permissions.get_user_course_permissions(self.request.user) if not courses: # The user is probably not a course administrator and should not be using this application. raise PermissionDenied presenter = CourseSummariesPresenter() summaries, _ = presenter.get_course_summaries(courses) if not summaries: # Instead of returning a useless blank CSV, return a 404 error raise Http404 # Exclude specified fields from each summary entry and render them to a CSV summaries = [ remove_keys(summary, self.exclude_fields) for summary in summaries ] summaries_csv = self.renderer.render(summaries) return summaries_csv