Adds SpeakerCondition, SpeakerDiscount, and SpeakerFlag

This commit is contained in:
Christopher Neugebauer 2016-09-04 12:36:20 +10:00
parent 1333fcdea1
commit 63fe8196e2

View file

@ -8,6 +8,8 @@ from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from model_utils.managers import InheritanceManager
from symposion import proposals
# Condition Types
@ -77,6 +79,30 @@ class IncludedProductCondition(models.Model):
)
class SpeakerCondition(models.Model):
''' Conditions that are met if a user is a presenter, or copresenter,
of a specific of presentation. '''
class Meta:
abstract = True
is_presenter = models.BooleanField(
blank=True,
help_text=_("This condition is met if the user is the primary "
"presenter of a presentation."),
)
is_copresenter = models.BooleanField(
blank=True,
help_text=_("This condition is met if the user is a copresenter of a "
"presentation."),
)
proposal_kind = models.ManyToManyField(
proposals.models.ProposalKind,
help_text=_("The types of proposals that these users may be "
"presenters of."),
)
# Discounts
@python_2_unicode_compatible
@ -276,6 +302,29 @@ class IncludedProductDiscount(IncludedProductCondition, DiscountBase):
verbose_name_plural = _("discounts (product inclusions)")
class SpeakerDiscount(SpeakerCondition, DiscountBase):
''' Discounts that are enabled because the user is a presenter or
co-presenter of a kind of presentation.
Attributes:
is_presenter (bool): The condition should be met if the user is a
presenter of a presentation.
is_copresenter (bool): The condition should be met if the user is a
copresenter of a presentation.
proposal_kind ([symposion.proposals.models.ProposalKind, ...]): The
kinds of proposals that the user may be a presenter or
copresenter of for this condition to be met.
'''
class Meta:
app_label = "registrasion"
verbose_name = _("discount (speaker)")
verbose_name_plural = _("discounts (speaker)")
class RoleDiscount(object):
''' Discounts that are enabled because the active user has a specific
role. This is for e.g. volunteers who can get a discount ticket. '''
@ -445,6 +494,29 @@ class VoucherFlag(VoucherCondition, FlagBase):
return "Enabled by voucher: %s" % self.voucher
class SpeakerFlag(SpeakerCondition, FlagBase):
''' Conditions that are enabled because the user is a presenter or
co-presenter of a kind of presentation.
Attributes:
is_presenter (bool): The condition should be met if the user is a
presenter of a presentation.
is_copresenter (bool): The condition should be met if the user is a
copresenter of a presentation.
proposal_kind ([symposion.proposals.models.ProposalKind, ...]): The
kinds of proposals that the user may be a presenter or
copresenter of for this condition to be met.
'''
class Meta:
app_label = "registrasion"
verbose_name = _("flag (speaker)")
verbose_name_plural = _("flags (speaker)")
# @python_2_unicode_compatible
class RoleFlag(object):
''' The condition is met because the active user has a particular Role.