learning-credentials 0.4.1rc1__tar.gz → 0.4.1rc3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {learning_credentials-0.4.1rc1/learning_credentials.egg-info → learning_credentials-0.4.1rc3}/PKG-INFO +1 -1
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/generators.py +9 -3
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3/learning_credentials.egg-info}/PKG-INFO +1 -1
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/pyproject.toml +1 -1
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/tests/test_generators.py +24 -6
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/CHANGELOG.rst +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/LICENSE.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/MANIFEST.in +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/README.rst +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/__init__.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/admin.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/__init__.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/urls.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/v1/__init__.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/v1/permissions.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/v1/urls.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/v1/views.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/apps.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/compat.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/conf/locale/config.yaml +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/exceptions.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0001_initial.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0002_migrate_to_learning_credentials.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0003_rename_certificates_to_credentials.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0004_replace_course_keys_with_learning_context_keys.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0005_rename_processors_and_generators.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0006_cleanup_openedx_certificates_tables.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/0007_migrate_to_text_elements_format.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/migrations/__init__.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/models.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/processors.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/settings/__init__.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/settings/common.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/settings/production.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/tasks.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/templates/learning_credentials/base.html +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/templates/learning_credentials/edx_ace/certificate_generated/email/body.html +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/templates/learning_credentials/edx_ace/certificate_generated/email/body.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/templates/learning_credentials/edx_ace/certificate_generated/email/from_name.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/templates/learning_credentials/edx_ace/certificate_generated/email/head.html +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/templates/learning_credentials/edx_ace/certificate_generated/email/subject.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/urls.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials.egg-info/SOURCES.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials.egg-info/dependency_links.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials.egg-info/entry_points.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials.egg-info/requires.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials.egg-info/top_level.txt +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/setup.cfg +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/tests/test_migrations.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/tests/test_models.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/tests/test_processors.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/tests/test_tasks.py +0 -0
- {learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/tests/test_views.py +0 -0
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/generators.py
RENAMED
|
@@ -276,6 +276,9 @@ def _write_text_on_template(
|
|
|
276
276
|
# Build and render text elements.
|
|
277
277
|
elements = _build_text_elements(options)
|
|
278
278
|
|
|
279
|
+
if elements['context']:
|
|
280
|
+
elements['context']['text'] = elements['context']['text'].replace(';', '\n')
|
|
281
|
+
|
|
279
282
|
for config in elements.values():
|
|
280
283
|
_render_text_element(pdf_canvas, template_width, config, placeholders)
|
|
281
284
|
|
|
@@ -375,11 +378,14 @@ def generate_pdf_credential(
|
|
|
375
378
|
log.info("Starting credential generation for user %s", user.id)
|
|
376
379
|
|
|
377
380
|
username = _get_user_name(user)
|
|
378
|
-
context_name = get_learning_context_name(learning_context_key)
|
|
379
|
-
template_path = options.get('template')
|
|
380
381
|
|
|
381
382
|
# Handle multiline context name (semicolon separator for backward compatibility).
|
|
382
|
-
context_name =
|
|
383
|
+
context_name = get_learning_context_name(learning_context_key).replace(';', '\n')
|
|
384
|
+
custom_context_text_element = options.get('text_elements', {}).get('context', {})
|
|
385
|
+
if isinstance(custom_context_text_element, dict):
|
|
386
|
+
context_name = custom_context_text_element.get('text', '').replace(';', '\n') or context_name
|
|
387
|
+
|
|
388
|
+
template_path = options.get('template')
|
|
383
389
|
if '\n' in context_name:
|
|
384
390
|
template_path = options.get('template_multiline', template_path)
|
|
385
391
|
|
|
@@ -474,16 +474,34 @@ def test_save_credential(mock_contentfile: Mock, mock_token_hex: Mock, storage:
|
|
|
474
474
|
("context_name", "options", "expected_template_slug", "expected_context_name"),
|
|
475
475
|
[
|
|
476
476
|
# Default.
|
|
477
|
-
('Test Course', {'template': 'default'}, 'default', 'Test Course'),
|
|
477
|
+
('Test Course', {'template': 'default', 'template_multiline': 'multiline'}, 'default', 'Test Course'),
|
|
478
478
|
# Specify a different template for multiline course names and replace \n with newline.
|
|
479
479
|
('Test\nCourse', {'template': 'default', 'template_multiline': 'multiline'}, 'multiline', 'Test\nCourse'),
|
|
480
|
-
('Test\\nCourse', {'template_multiline': 'multiline'}, 'multiline', 'Test\nCourse'),
|
|
481
480
|
# Backward compatibility with semicolon separator.
|
|
482
|
-
('Test;
|
|
483
|
-
# Mixed semicolon and newline separators.
|
|
484
|
-
('Te\nst\\nCourse;', {'template_multiline': 'multiline'}, 'multiline', 'Te\nst\nCourse\n'),
|
|
481
|
+
('Test\nCourse;', {'template_multiline': 'multiline'}, 'multiline', 'Test\nCourse\n'),
|
|
485
482
|
# Ensure that the default template is used when no multiline template is specified.
|
|
486
|
-
('Test
|
|
483
|
+
('Test\nCourse', {'template': 'default'}, 'default', 'Test\nCourse'),
|
|
484
|
+
# Custom context text with newlines uses multiline template.
|
|
485
|
+
(
|
|
486
|
+
'Single Line',
|
|
487
|
+
{'template_multiline': 'multiline', 'text_elements': {'context': {'text': 'Line 1\nLine 2'}}},
|
|
488
|
+
'multiline',
|
|
489
|
+
'Line 1\nLine 2',
|
|
490
|
+
),
|
|
491
|
+
# Custom context text with semicolon uses multiline template.
|
|
492
|
+
(
|
|
493
|
+
'Single Line',
|
|
494
|
+
{'template_multiline': 'multiline', 'text_elements': {'context': {'text': 'Line 1;Line 2'}}},
|
|
495
|
+
'multiline',
|
|
496
|
+
'Line 1\nLine 2',
|
|
497
|
+
),
|
|
498
|
+
# Disabled context element falls back to learning context name for template selection.
|
|
499
|
+
(
|
|
500
|
+
'Multi\nLine',
|
|
501
|
+
{'template_multiline': 'multiline', 'text_elements': {'context': False}},
|
|
502
|
+
'multiline',
|
|
503
|
+
'Multi\nLine',
|
|
504
|
+
),
|
|
487
505
|
],
|
|
488
506
|
)
|
|
489
507
|
@patch(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/__init__.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/admin.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/__init__.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/urls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/v1/urls.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/api/v1/views.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/apps.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/compat.py
RENAMED
|
File without changes
|
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/models.py
RENAMED
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/processors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{learning_credentials-0.4.1rc1 → learning_credentials-0.4.1rc3}/learning_credentials/urls.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|