Skip to content

Commit 82dab62

Browse files
committed
feat: Add new fields to csv exporter
1 parent 0c74ae2 commit 82dab62

File tree

3 files changed

+21
-19
lines changed

3 files changed

+21
-19
lines changed

openedx/core/djangoapps/content_tagging/api.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,17 @@ def generate_csv_rows(object_id, buffer) -> Iterator[str]:
230230

231231
# Iterate over the blocks and yield the rows
232232
for item, level in iterate_with_level(tagged_content):
233+
block_key = get_content_key_from_string(item.block_id)
234+
block_id = None
235+
if isinstance(block_key, CourseKey):
236+
block_id = block_key
237+
else:
238+
block_id = block_key.block_id
239+
233240
block_data = {
234241
"name": level * " " + item.display_name,
235242
"type": item.category,
236-
"id": item.block_id,
243+
"id": block_id,
237244
}
238245

239246
# Add the tags for each taxonomy

openedx/core/djangoapps/content_tagging/tests/test_api.py

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -284,27 +284,24 @@ class TestExportTags(TaggedCourseMixin):
284284
def setUp(self):
285285
super().setUp()
286286
self.expected_csv = (
287-
'"Name","Type","ID","1-taxonomy-1","2-taxonomy-2"\r\n'
288-
'"Test Course","course","course-v1:orgA+test_course+test_run","Tag 1.1",""\r\n'
289-
'" test sequential","sequential","block-v1:orgA+test_course+test_run+type@sequential+block@test_'
290-
'sequential","Tag 1.1, Tag 1.2","Tag 2.1"\r\n'
291-
'" test vertical1","vertical","block-v1:orgA+test_course+test_run+type@vertical+block@test_'
292-
'vertical1","","Tag 2.2"\r\n'
293-
'" test vertical2","vertical","block-v1:orgA+test_course+test_run+type@vertical+block@test_'
294-
'vertical2","",""\r\n'
295-
'" test html","html","block-v1:orgA+test_course+test_run+type@html+block@test_html","","Tag 2.1"\r\n'
296-
'" untagged sequential","sequential","block-v1:orgA+test_course+test_run+type@sequential+block@untagged_'
297-
'sequential","",""\r\n'
298-
'" untagged vertical","vertical","block-v1:orgA+test_course+test_run+type@vertical+block@untagged_'
299-
'vertical","",""\r\n'
287+
'"Name","Type","ID","1-taxonomy-1","2-taxonomy-2"\n'
288+
'"Test Course","course","course-v1:orgA+test_course+test_run","Tag 1.1",""\n'
289+
'" test sequential","sequential","test_sequential","Tag 1.1, Tag 1.2","Tag 2.1"\n'
290+
'" test vertical1","vertical","test_vertical1","","Tag 2.2"\n'
291+
'" test vertical2","vertical","test_vertical2","",""\n'
292+
'" test html","html","test_html","","Tag 2.1"\n'
293+
'" untagged sequential","sequential","untagged_sequential","",""\n'
294+
'" untagged vertical","vertical","untagged_vertical","",""\n'
300295
)
301296

302297
def test_generate_csv_rows(self) -> None:
303298
buffer = io.StringIO()
304299
list(api.generate_csv_rows(str(self.course.id), buffer))
305300
buffer.seek(0)
306301
csv_content = buffer.getvalue()
307-
assert csv_content == self.expected_csv
302+
cleaned_content = csv_content.replace('\r\n', '\n')
303+
304+
assert cleaned_content == self.expected_csv
308305

309306
def test_export_tags_in_csv_file(self) -> None:
310307
file_dir_name = tempfile.mkdtemp()
@@ -320,7 +317,4 @@ def test_export_tags_in_csv_file(self) -> None:
320317
with open(file_path, 'r') as f:
321318
content = f.read()
322319

323-
cleaned_content = content.replace('\r\n', '\n')
324-
cleaned_expected_csv = self.expected_csv.replace('\r\n', '\n')
325-
326-
self.assertEqual(cleaned_content, cleaned_expected_csv)
320+
self.assertEqual(content, self.expected_csv)

xmodule/modulestore/xml_exporter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ def process_extra(self, root, courselike, root_courselike_dir, xml_centric_cours
291291

292292
tags_count = get_object_tag_counts(block_id_pattern)
293293

294+
# TODO Verify with course, sections and subsections
294295
if tags_count:
295296
export_tags_in_csv_file(courselike_key_str, export_fs, 'tags.csv')
296297

0 commit comments

Comments
 (0)