Skip to content
Snippets Groups Projects
Commit 0c376e57 authored by stvn's avatar stvn
Browse files

Merge PR #25913 origin/bd03/model/is_enabled

* Commits:
  Add get-accessor helper for discussions plugins
  Add is_enabled helper for discussions plugins
parents a03bb134 c7a4f97b
No related merge requests found
"""
Provide django models to back the discussions app
"""
from __future__ import annotations
from django.core.exceptions import ValidationError
from django.db import models
from django.utils.translation import ugettext_lazy as _
......@@ -67,3 +69,24 @@ class DiscussionsConfiguration(TimeStampedModel):
provider=self.provider_type,
enabled=self.enabled,
)
@classmethod
def is_enabled(cls, context_key) -> bool:
"""
Check if there is an active configuration for a given course key
Default to False, if no configuration exists
"""
configuration = cls.get(context_key)
return configuration.enabled
@classmethod
def get(cls, context_key) -> cls:
"""
Lookup a model by context_key
"""
try:
configuration = cls.objects.get(context_key=context_key)
except cls.DoesNotExist:
configuration = cls(context_key=context_key, enabled=False)
return configuration
......@@ -82,3 +82,57 @@ class DiscussionsConfigurationModelTest(TestCase):
assert configuration.lti_configuration is None
assert configuration.plugin_configuration['url'] == 'http://localhost'
assert configuration.provider_type == 'cs_comments_service'
def test_is_enabled_nonexistent(self):
"""
Assert that discussions are disabled, when no configuration exists
"""
is_enabled = DiscussionsConfiguration.is_enabled(self.course_key_without_config)
assert not is_enabled
def test_is_enabled_default(self):
"""
Assert that discussions are enabled by default, when a configuration exists
"""
is_enabled = DiscussionsConfiguration.is_enabled(self.course_key_with_defaults)
assert is_enabled
def test_is_enabled_explicit(self):
"""
Assert that discussions can be explitly disabled
"""
is_enabled = DiscussionsConfiguration.is_enabled(self.course_key_with_values)
assert not is_enabled
def test_get_nonexistent(self):
"""
Assert we get an "empty" model back for nonexistent records
"""
configuration = DiscussionsConfiguration.get(self.course_key_without_config)
assert configuration is not None
assert not configuration.enabled
assert not configuration.lti_configuration
assert not configuration.plugin_configuration
assert not configuration.provider_type
def test_get_defaults(self):
"""
Assert we can lookup a record with default values
"""
configuration = DiscussionsConfiguration.get(self.course_key_with_defaults)
assert configuration is not None
assert configuration.enabled
assert not configuration.lti_configuration
assert not configuration.plugin_configuration
assert not configuration.provider_type
def test_get_explicit(self):
"""
Assert we can lookup a record with explicitly-set values
"""
configuration = DiscussionsConfiguration.get(self.course_key_with_values)
assert configuration is not None
assert not configuration.enabled
assert not configuration.lti_configuration
assert configuration.plugin_configuration
assert configuration.provider_type == 'cs_comments_service'
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment