Files
edx-platform/openedx/core/djangoapps/programs/models.py
Ahtisham Shahid 75d8448ef5 refactor: Moved ProgramDiscussion/Live Configuration Models to program's app (#29871)
refactor: Moved ProgramDiscussion/Live Configuration Models to program's app
2022-02-09 15:43:22 +05:00

80 lines
2.3 KiB
Python

"""Models providing Programs support for the LMS and Studio."""
from config_models.models import ConfigurationModel
from django.db import models
from django.utils.translation import gettext_lazy as _
from simple_history.models import HistoricalRecords
from lti_consumer.models import LtiConfiguration
from model_utils.models import TimeStampedModel
class ProgramsApiConfig(ConfigurationModel):
"""
This model no longer fronts an API, but now sets a few config-related values for the idea of programs in general.
A rename to ProgramsConfig would be more accurate, but costly in terms of developer time.
.. no_pii:
"""
class Meta:
app_label = "programs"
marketing_path = models.CharField(
max_length=255,
blank=True,
help_text=_(
'Path used to construct URLs to programs marketing pages (e.g., "/foo").'
)
)
class AbstractProgramLTIConfiguration(TimeStampedModel):
"""
Associates a program with a LTI provider and configuration
"""
class Meta:
abstract = True
program_uuid = models.CharField(
primary_key=True,
db_index=True,
max_length=50,
verbose_name=_("Program UUID"),
)
enabled = models.BooleanField(
default=True,
help_text=_("If disabled, the LTI in the associated program will be disabled.")
)
lti_configuration = models.ForeignKey(
LtiConfiguration,
on_delete=models.SET_NULL,
blank=True,
null=True,
help_text=_("The LTI configuration data for this program/provider."),
)
provider_type = models.CharField(
blank=False,
max_length=50,
verbose_name=_("LTI provider"),
help_text=_("The LTI provider's id"),
)
def __str__(self):
return f"Configuration(uuid='{self.program_uuid}', provider='{self.provider_type}', enabled={self.enabled})"
@classmethod
def get(cls, program_uuid):
"""
Lookup a program discussion configuration by program uuid.
"""
return cls.objects.filter(
program_uuid=program_uuid
).first()
class ProgramLiveConfiguration(AbstractProgramLTIConfiguration):
history = HistoricalRecords()
class ProgramDiscussionsConfiguration(AbstractProgramLTIConfiguration):
history = HistoricalRecords()