From 09f0406ec3568fe811bffa70e431e6bb6f765b61 Mon Sep 17 00:00:00 2001 From: Andrii Date: Wed, 21 May 2025 15:28:37 +0300 Subject: [PATCH 1/4] feat: add org_image_url to course_discovery index --- cms/djangoapps/contentstore/courseware_index.py | 3 ++- cms/envs/common.py | 6 ++++++ openedx/core/lib/courses.py | 9 +++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cms/djangoapps/contentstore/courseware_index.py b/cms/djangoapps/contentstore/courseware_index.py index d3b6f811d5..b7b7499203 100644 --- a/cms/djangoapps/contentstore/courseware_index.py +++ b/cms/djangoapps/contentstore/courseware_index.py @@ -14,7 +14,7 @@ from search.search_engine_base import SearchEngine from cms.djangoapps.contentstore.course_group_config import GroupConfiguration from common.djangoapps.course_modes.models import CourseMode -from openedx.core.lib.courses import course_image_url +from openedx.core.lib.courses import course_image_url, course_organization_image_url from xmodule.annotator_mixin import html_to_text # lint-amnesty, pylint: disable=wrong-import-order from xmodule.library_tools import normalize_key_for_search # lint-amnesty, pylint: disable=wrong-import-order from xmodule.modulestore import ModuleStoreEnum # lint-amnesty, pylint: disable=wrong-import-order @@ -612,6 +612,7 @@ class CourseAboutSearchIndexer(CoursewareSearchIndexer): 'course': course_id, 'content': {}, 'image_url': course_image_url(course), + 'org_image_url': course_organization_image_url(course), } # load data for all of the 'about' blocks for this course into a dictionary diff --git a/cms/envs/common.py b/cms/envs/common.py index 85af0063d4..86cf6bdff9 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -2913,3 +2913,9 @@ SOCIAL_MEDIA_LOGO_URLS = { 'linkedin': 'http://email-media.s3.amazonaws.com/edX/2021/social_3_linkedin.png', 'facebook': 'http://email-media.s3.amazonaws.com/edX/2021/social_1_fb.png', } + +# .. setting_name: DEFAULT_ORG_LOGO_URL +# .. setting_default: organization_logos/_placeholder.png # FIXME: change to correct placeholder +# .. setting_description: The default logo URL for organizations that do not have a logo set. +# .. setting_warning: This URL is used as a placeholder for organizations that do not have a logo set. +DEFAULT_ORG_LOGO_URL = 'organization_logos/_placeholder.png' # FIXME: change to correct placeholder diff --git a/openedx/core/lib/courses.py b/openedx/core/lib/courses.py index ea18ec0347..b77f232cdd 100644 --- a/openedx/core/lib/courses.py +++ b/openedx/core/lib/courses.py @@ -8,6 +8,7 @@ from django.http import Http404 from opaque_keys import InvalidKeyError from opaque_keys.edx.locator import CourseKey +from organizations.models import Organization from xmodule.assetstore.assetmgr import AssetManager from xmodule.contentstore.content import StaticContent from xmodule.contentstore.django import contentstore @@ -38,6 +39,14 @@ def course_image_url(course, image_key='course_image'): return url +def course_organization_image_url(course): + """Return the course organization image URL or the default image URL.""" + default_logo_url = settings.MEDIA_URL + settings.DEFAULT_ORG_LOGO_URL + + org = Organization.objects.filter(short_name=course.id.org).first() + return org.logo.url if org and org.logo else default_logo_url + + def create_course_image_thumbnail(course, dimensions): """Create a course image thumbnail and return the URL. From 66c03afdb24fa178cc71f935c75d0bb529d35f90 Mon Sep 17 00:00:00 2001 From: Andrii Date: Wed, 18 Jun 2025 18:56:40 +0300 Subject: [PATCH 2/4] refactor: change placeholder variable_name + url and add placeholder image --- cms/envs/common.py | 10 +++++----- lms/static/images/org_placeholder.png | Bin 0 -> 6427 bytes openedx/core/lib/courses.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 lms/static/images/org_placeholder.png diff --git a/cms/envs/common.py b/cms/envs/common.py index 86cf6bdff9..19e740facc 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -2914,8 +2914,8 @@ SOCIAL_MEDIA_LOGO_URLS = { 'facebook': 'http://email-media.s3.amazonaws.com/edX/2021/social_1_fb.png', } -# .. setting_name: DEFAULT_ORG_LOGO_URL -# .. setting_default: organization_logos/_placeholder.png # FIXME: change to correct placeholder -# .. setting_description: The default logo URL for organizations that do not have a logo set. -# .. setting_warning: This URL is used as a placeholder for organizations that do not have a logo set. -DEFAULT_ORG_LOGO_URL = 'organization_logos/_placeholder.png' # FIXME: change to correct placeholder +# .. setting_name: DEFAULT_ORG_LOGO_PATH +# .. setting_default: 'images/org_placeholder.png' +# .. setting_description: The default logo path for organizations that do not have a logo set. +# .. setting_warning: This path is used as a placeholder for organizations that do not have a logo set. +DEFAULT_ORG_LOGO_PATH = 'images/org_placeholder.png' diff --git a/lms/static/images/org_placeholder.png b/lms/static/images/org_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..839429ea7f0316315647d9fe13770efb8ba6d010 GIT binary patch literal 6427 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 literal 0 HcmV?d00001 diff --git a/openedx/core/lib/courses.py b/openedx/core/lib/courses.py index b77f232cdd..969504eba5 100644 --- a/openedx/core/lib/courses.py +++ b/openedx/core/lib/courses.py @@ -41,7 +41,7 @@ def course_image_url(course, image_key='course_image'): def course_organization_image_url(course): """Return the course organization image URL or the default image URL.""" - default_logo_url = settings.MEDIA_URL + settings.DEFAULT_ORG_LOGO_URL + default_logo_url = settings.STATIC_URL + settings.DEFAULT_ORG_LOGO_PATH org = Organization.objects.filter(short_name=course.id.org).first() return org.logo.url if org and org.logo else default_logo_url From 50fdf8446fa228467ac93ca3d88909c88bd16153 Mon Sep 17 00:00:00 2001 From: Andrii Date: Thu, 19 Jun 2025 16:24:02 +0300 Subject: [PATCH 3/4] refactor: use default logo as placehodler for organization --- cms/envs/common.py | 4 ++-- lms/static/images/org_placeholder.png | Bin 6427 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 lms/static/images/org_placeholder.png diff --git a/cms/envs/common.py b/cms/envs/common.py index 19e740facc..6db6dc13e2 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -2915,7 +2915,7 @@ SOCIAL_MEDIA_LOGO_URLS = { } # .. setting_name: DEFAULT_ORG_LOGO_PATH -# .. setting_default: 'images/org_placeholder.png' +# .. setting_default: 'images/logo.png' # .. setting_description: The default logo path for organizations that do not have a logo set. # .. setting_warning: This path is used as a placeholder for organizations that do not have a logo set. -DEFAULT_ORG_LOGO_PATH = 'images/org_placeholder.png' +DEFAULT_ORG_LOGO_PATH = 'images/logo.png' diff --git a/lms/static/images/org_placeholder.png b/lms/static/images/org_placeholder.png deleted file mode 100644 index 839429ea7f0316315647d9fe13770efb8ba6d010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6427 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 From 04febf07610a8a80b8d5c2ced2cda2fca0800422 Mon Sep 17 00:00:00 2001 From: Andrii Date: Mon, 23 Jun 2025 19:12:26 +0300 Subject: [PATCH 4/4] refactor: change logo_path to logo_url --- cms/envs/common.py | 10 +++++----- openedx/core/lib/courses.py | 4 +--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/cms/envs/common.py b/cms/envs/common.py index 6db6dc13e2..38117b4e4a 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -2914,8 +2914,8 @@ SOCIAL_MEDIA_LOGO_URLS = { 'facebook': 'http://email-media.s3.amazonaws.com/edX/2021/social_1_fb.png', } -# .. setting_name: DEFAULT_ORG_LOGO_PATH -# .. setting_default: 'images/logo.png' -# .. setting_description: The default logo path for organizations that do not have a logo set. -# .. setting_warning: This path is used as a placeholder for organizations that do not have a logo set. -DEFAULT_ORG_LOGO_PATH = 'images/logo.png' +# .. setting_name: DEFAULT_ORG_LOGO_URL +# .. setting_default: Derived(lambda settings: settings.STATIC_URL + 'images/logo.png') +# .. setting_description: The default logo url for organizations that do not have a logo set. +# .. setting_warning: This url is used as a placeholder for organizations that do not have a logo set. +DEFAULT_ORG_LOGO_URL = Derived(lambda settings: settings.STATIC_URL + 'images/logo.png') diff --git a/openedx/core/lib/courses.py b/openedx/core/lib/courses.py index 969504eba5..98321abfef 100644 --- a/openedx/core/lib/courses.py +++ b/openedx/core/lib/courses.py @@ -41,10 +41,8 @@ def course_image_url(course, image_key='course_image'): def course_organization_image_url(course): """Return the course organization image URL or the default image URL.""" - default_logo_url = settings.STATIC_URL + settings.DEFAULT_ORG_LOGO_PATH - org = Organization.objects.filter(short_name=course.id.org).first() - return org.logo.url if org and org.logo else default_logo_url + return org.logo.url if org and org.logo else settings.DEFAULT_ORG_LOGO_URL def create_course_image_thumbnail(course, dimensions):