Skip to content

Commit

Permalink
feat: add default enrollment models
Browse files Browse the repository at this point in the history
Adds two models, `DefaultEnterpriseEnrollmentIntention` and
`DefaultEnterpriseEnrollmentRealization`. The former defines, for a customer,
a course/run that associated users should be automatically enrolled into.
The latter represents the relationship between that intention record
and a realized EnterpriseCourseEnrollment; persisting realized enrollments
in this way will help to make read operations related to default enrollments
much more efficient.
ENT-9577
  • Loading branch information
iloveagent57 committed Oct 7, 2024
1 parent 4ff2441 commit b08ec62
Showing 1 changed file with 56 additions and 0 deletions.
56 changes: 56 additions & 0 deletions enterprise/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2461,6 +2461,62 @@ class LicensedEnterpriseCourseEnrollment(EnterpriseFulfillmentSource):
)


class DefaultEnterpriseEnrollmentIntention(TimeStampedModel):
"""
Specific to an enterprise customer, this model defines a course or course run
that should be auto-enrolled for any enterprise customer user linked to the customer.
"""
uuid = models.UUIDField(
primary_key=True,
editable=False,
)
enterprise_customer = models.ForeignKey(
EnterpriseCustomer,
blank=False,
null=False,
related_name="default_course_enrollments",
on_delete=models.deletion.CASCADE,
help_text=_(
"The customer for which this default enrollment will be realized.",
)
)
content_key = models.CharField(
max_length=255,
blank=False,
null=False,
help_text=_(
"A course or course run that related users should be automatically enrolled into."
)
)
realized_enrollments = models.ManyToManyField(
EnterpriseCourseEnrollment,
through='RealizedDefaultEnterpriseEnrollment',
through_fields=("intended_enrollment", "realized_enrollment"),
)

@property
def current_course_run_key(self): # pragma: no cover
"""
The current run to use for realized course enrollments.
"""
raise NotImplementedError


class DefaultEnterpriseEnrollmentRealization(TimeStampedModel):
"""
Represents the relationship between a `DefaultEnterpriseEnrollmentIntention`
and a realized course enrollment that exists because of that intention record.
"""
intended_enrollment = models.ForeignKey(
DefaultEnterpriseEnrollmentIntention,
on_delete=models.CASCADE,
)
realized_enrollment = models.ForignKey(
EnterpriseCourseEnrollment,
on_delete=models.CASCADE,
)


class EnterpriseCatalogQuery(TimeStampedModel):
"""
Stores a re-usable catalog query.
Expand Down

0 comments on commit b08ec62

Please sign in to comment.