Files
edx-platform/openedx/features/discounts/models.py
2019-10-23 12:00:34 -04:00

57 lines
1.9 KiB
Python

"""
DiscountRestrictionConfig Models
"""
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from openedx.core.djangoapps.config_model_utils.models import StackedConfigurationModel
@python_2_unicode_compatible
class DiscountRestrictionConfig(StackedConfigurationModel):
"""
A ConfigurationModel used to manage restrictons for lms-controlled discounts
"""
STACKABLE_FIELDS = ('disabled',)
# Since this config disables a feature, it seemed it would be clearer to use a disabled flag instead of enabled.
# The enabled field still exists but is not used or shown in the admin.
disabled = models.NullBooleanField(default=None, verbose_name=_("Disabled"))
@classmethod
def disabled_for_course_stacked_config(cls, course):
"""
Return whether lms-controlled discounts are disabled for this course.
Checks if discounts are disabled for attributes of this course like Site, Partner, Course or Course Run.
Arguments:
course: The CourseOverview of the course being queried.
"""
current_config = cls.current(course_key=course.id)
return current_config.disabled
def __str__(self):
return "DiscountRestrictionConfig(disabled={!r})".format(
self.disabled
)
@python_2_unicode_compatible
class DiscountPercentageConfig(StackedConfigurationModel):
"""
A ConfigurationModel to configure the discount percentage for the first purchase discount
"""
STACKABLE_FIELDS = ('percentage',)
percentage = models.PositiveIntegerField()
def __str__(self):
return "DiscountPercentageConfig(enabled={!r},percentage={!r})".format(
self.enabled,
self.percentage
)