Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions course_discovery/apps/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ class Meta(MinimalOrganizationSerializer.Meta):
'marketing_url',
'slug',
'banner_image_url',
'enterprise_subscription_inclusion',
'enterprise_subscription_inclusion', 'b2c_subscription_inclusion',
)
read_only_fields = ('slug',)

Expand Down Expand Up @@ -1075,6 +1075,7 @@ class CourseRunSerializer(MinimalCourseRunSerializer):
estimated_hours = serializers.SerializerMethodField()
enterprise_subscription_inclusion = serializers.BooleanField(required=False)

b2c_subscription_inclusion = serializers.BooleanField(required=False)
@classmethod
def prefetch_queryset(cls, queryset=None):
queryset = super().prefetch_queryset(queryset=queryset)
Expand Down Expand Up @@ -1102,11 +1103,11 @@ class Meta(MinimalCourseRunSerializer.Meta):
'level_type', 'mobile_available', 'hidden', 'reporting_type', 'eligible_for_financial_aid',
'first_enrollable_paid_seat_price', 'has_ofac_restrictions', 'ofac_comment',
'enrollment_count', 'recent_enrollment_count', 'expected_program_type', 'expected_program_name',
'course_uuid', 'estimated_hours', 'content_language_search_facet_name', 'enterprise_subscription_inclusion',
'course_uuid', 'estimated_hours', 'content_language_search_facet_name', 'enterprise_subscription_inclusion', 'b2c_subscription_inclusion',
'transcript_languages_search_facet_names', 'ai_languages'
)
read_only_fields = ('enrollment_count', 'recent_enrollment_count', 'content_language_search_facet_name',
'enterprise_subscription_inclusion', 'ai_languages')
'enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'ai_languages')

def get_instructors(self, obj): # pylint: disable=unused-argument
# This field is deprecated. Use the staff field.
Expand Down Expand Up @@ -1217,6 +1218,7 @@ class MinimalCourseSerializer(FlexFieldsSerializerMixin, TimestampModelSerialize
course_type = serializers.SerializerMethodField()
enterprise_subscription_inclusion = serializers.BooleanField(required=False)
course_run_statuses = serializers.ReadOnlyField()
b2c_subscription_inclusion = serializers.BooleanField(required=False)

@classmethod
def prefetch_queryset(cls, queryset=None, course_runs=None):
Expand Down Expand Up @@ -1257,7 +1259,7 @@ def prefetch_course_runs(cls, serializer_class, course_runs=None):
class Meta:
model = Course
fields = ('key', 'uuid', 'title', 'course_runs', 'entitlements', 'owners', 'image',
'short_description', 'type', 'url_slug', 'course_type', 'enterprise_subscription_inclusion',
'short_description', 'type', 'url_slug', 'course_type', 'enterprise_subscription_inclusion', 'b2c_subscription_inclusion',
'excluded_from_seo', 'excluded_from_search', 'course_run_statuses')


Expand Down Expand Up @@ -1361,6 +1363,7 @@ class CourseSerializer(TaggitSerializer, MinimalCourseSerializer):
skills = serializers.SerializerMethodField()
enterprise_subscription_inclusion = serializers.BooleanField(required=False)
geolocation = GeoLocationSerializer(required=False, allow_null=True)
b2c_subscription_inclusion = serializers.BooleanField(required=False)
location_restriction = CourseLocationRestrictionSerializer(required=False)
in_year_value = ProductValueSerializer(required=False)
product_source = SlugRelatedFieldWithReadSerializer(
Expand Down Expand Up @@ -1435,10 +1438,10 @@ class Meta(MinimalCourseSerializer.Meta):
'enrollment_count', 'recent_enrollment_count', 'topics', 'partner', 'key_for_reruns', 'url_slug',
'url_slug_history', 'url_redirects', 'course_run_statuses', 'editors', 'collaborators', 'skill_names',
'skills', 'organization_short_code_override', 'organization_logo_override_url',
'enterprise_subscription_inclusion', 'geolocation', 'location_restriction', 'in_year_value',
'enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'geolocation', 'location_restriction', 'in_year_value',
'product_source', 'data_modified_timestamp', 'excluded_from_search', 'excluded_from_seo', 'watchers',
)
read_only_fields = ('enterprise_subscription_inclusion', 'product_source', 'data_modified_timestamp')
read_only_fields = ('enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'product_source', 'data_modified_timestamp')
extra_kwargs = {
'partner': {'write_only': True}
}
Expand Down Expand Up @@ -2252,6 +2255,7 @@ class ProgramSerializer(MinimalProgramSerializer):
topics = serializers.SerializerMethodField()
enterprise_subscription_inclusion = serializers.BooleanField()
geolocation = GeoLocationSerializer(required=False, allow_null=True)
b2c_subscription_inclusion = serializers.BooleanField(required=False)
location_restriction = ProgramLocationRestrictionSerializer(read_only=True)
is_2u_degree_program = serializers.BooleanField()
in_year_value = ProductValueSerializer(required=False)
Expand Down Expand Up @@ -2333,11 +2337,11 @@ class Meta(MinimalProgramSerializer.Meta):
'faq', 'credit_backing_organizations', 'corporate_endorsements', 'job_outlook_items',
'individual_endorsements', 'languages', 'transcript_languages', 'subjects', 'price_ranges',
'staff', 'credit_redemption_overview', 'applicable_seat_types', 'instructor_ordering',
'enrollment_count', 'topics', 'credit_value', 'enterprise_subscription_inclusion', 'geolocation',
'enrollment_count', 'topics', 'credit_value', 'enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'geolocation',
'location_restriction', 'is_2u_degree_program', 'in_year_value', 'skill_names', 'skills',
'product_source', 'excluded_from_search', 'excluded_from_seo',
)
read_only_fields = ('enterprise_subscription_inclusion', 'product_source',)
read_only_fields = ('enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'product_source',)


class PathwaySerializer(BaseModelSerializer):
Expand Down
6 changes: 3 additions & 3 deletions course_discovery/apps/course_metadata/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ class CourseRunAdmin(SimpleHistoryAdmin):
ordering = ('key',)
raw_id_fields = ('course', 'draft_version',)
readonly_fields = [
'enrollment_count', 'recent_enrollment_count', 'hidden', 'key', 'enterprise_subscription_inclusion',
'enrollment_count', 'recent_enrollment_count', 'hidden', 'key', 'enterprise_subscription_inclusion', 'b2c_subscription_inclusion',
'variant_id', 'fixed_price_usd', 'ai_languages'
]
search_fields = ('uuid', 'key', 'title_override', 'course__title', 'slug', 'external_key', 'variant_id')
Expand Down Expand Up @@ -451,7 +451,7 @@ class ProgramAdmin(DjangoObjectActions, SimpleHistoryAdmin):
ordering = ('uuid', 'title', 'status')
readonly_fields = (
'uuid', 'custom_course_runs_display', 'excluded_course_runs', 'enrollment_count', 'recent_enrollment_count',
'enterprise_subscription_inclusion', 'ofac_comment', 'data_modified_timestamp'
'enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'ofac_comment', 'data_modified_timestamp'
)
raw_id_fields = ('video',)
autocomplete_fields = (
Expand All @@ -470,7 +470,7 @@ class ProgramAdmin(DjangoObjectActions, SimpleHistoryAdmin):
'corporate_endorsements', 'faq', 'individual_endorsements', 'job_outlook_items', 'expected_learning_items',
'instructor_ordering', 'enrollment_count', 'recent_enrollment_count', 'credit_value',
'organization_short_code_override', 'organization_logo_override', 'primary_subject_override',
'level_type_override', 'language_override', 'enterprise_subscription_inclusion', 'in_year_value', 'labels',
'level_type_override', 'language_override', 'enterprise_subscription_inclusion', 'b2c_subscription_inclusion', 'in_year_value', 'labels',
'geolocation', 'program_duration_override', 'has_ofac_restrictions', 'ofac_comment', 'data_modified_timestamp',
'excluded_from_search', 'excluded_from_seo'
)
Expand Down
19 changes: 19 additions & 0 deletions course_discovery/apps/course_metadata/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,10 @@ class Organization(ManageHistoryMixin, CachedMixin, TimeStampedModel):
default=False,
help_text=_('This field signifies if any of this org\'s courses are in the enterprise subscription catalog'),
)
b2c_subscription_inclusion = models.BooleanField(
default=False,
help_text=_('This field signifies if any of this org\'s courses are in the B2C subscription catalog'),
)
organization_hex_color = models.CharField(
help_text=_("""The 6 character-hex-value of the orgnization theme color,
all related course under same organization will use this color as theme color.
Expand Down Expand Up @@ -1564,6 +1568,11 @@ class Course(ManageHistoryMixin, DraftModelMixin, PkSearchableMixin, CachedMixin
help_text=_('This field signifies if this course is in the enterprise subscription catalog'),
)

b2c_subscription_inclusion = models.BooleanField(
null=True,
help_text=_('This field signifies if this course is in the B2C subscription catalog'),
)

excluded_from_search = models.BooleanField(
null=True,
blank=True,
Expand Down Expand Up @@ -2399,6 +2408,11 @@ class CourseRun(ManageHistoryMixin, DraftModelMixin, CachedMixin, TimeStampedMod
help_text=_('This calculated field signifies if this course run is in the enterprise subscription catalog'),
)

b2c_subscription_inclusion = models.BooleanField(
default=False,
help_text=_('This calculated field signifies if this course run is in the B2C subscription catalog'),
)

variant_id = models.UUIDField(
blank=True, null=True, editable=True,
help_text=_(
Expand Down Expand Up @@ -3509,6 +3523,11 @@ class Program(ManageHistoryMixin, PkSearchableMixin, TimeStampedModel):
in_year_value = models.ForeignKey(
ProductValue, models.SET_NULL, related_name='programs', default=None, null=True, blank=True
)
b2c_subscription_inclusion = models.BooleanField(
null=True,
help_text=_('This field signifies if this course is in the B2C subscription catalog'),
)

excluded_from_search = models.BooleanField(
null=True,
blank=True,
Expand Down
Loading