Adds SpeakerCondition, SpeakerDiscount, and SpeakerFlag
This commit is contained in:
parent
1333fcdea1
commit
63fe8196e2
1 changed files with 72 additions and 0 deletions
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue