Skip to content

Commit

Permalink
Expose remaining filters in Discount/Bonus serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
bogdanpetrea committed Jan 14, 2025
1 parent cacdd31 commit 9663c55
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
26 changes: 26 additions & 0 deletions silver/api/serializers/bonus_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ class CustomerBonusSerializer(AutoCleanSerializerMixin,

only_for_subscriptions = SerializerMethodField()
only_for_plans = SerializerMethodField()
only_for_product_codes = SerializerMethodField()
only_for_annotations = SerializerMethodField()

class Meta:
model = Bonus
Expand All @@ -48,6 +50,8 @@ class Meta:
"duration_interval",
"only_for_subscriptions",
"only_for_plans",
"only_for_product_codes",
"only_for_annotations",
]

def get_only_for_subscriptions(self, bonus):
Expand All @@ -70,6 +74,15 @@ def get_only_for_plans(self, bonus):
).distinct()
]

def get_only_for_product_codes(self, bonus):
return [
product_code.value
for product_code in bonus.filter_product_codes.all()
]

def get_only_for_annotations(self, bonus):
return bonus.filter_annotations


class SubscriptionBonusSerializer(AutoCleanSerializerMixin,
HyperlinkedModelSerializer):
Expand All @@ -80,6 +93,8 @@ class SubscriptionBonusSerializer(AutoCleanSerializerMixin,

period_applied_to_subscription = SerializerMethodField()
is_active_for_subscription = SerializerMethodField()
only_for_product_codes = SerializerMethodField()
only_for_annotations = SerializerMethodField()

class Meta:
model = Bonus
Expand All @@ -90,6 +105,8 @@ class Meta:
"amount",
"amount_percentage",
"applies_to",
"only_for_product_codes",
"only_for_annotations",
"enabled",
"start_date",
"end_date",
Expand All @@ -114,3 +131,12 @@ def get_is_active_for_subscription(self, bonus):
return None

return bonus.is_active_for_subscription(subscription)

def get_only_for_product_codes(self, bonus):
return [
product_code.value
for product_code in bonus.filter_product_codes.all()
]

def get_only_for_annotations(self, bonus):
return bonus.filter_annotations
16 changes: 16 additions & 0 deletions silver/api/serializers/discount_serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class CustomerDiscountSerializer(AutoCleanSerializerMixin,

only_for_subscriptions = SerializerMethodField()
only_for_plans = SerializerMethodField()
only_for_product_codes = SerializerMethodField()

class Meta:
model = Discount
Expand All @@ -49,6 +50,7 @@ class Meta:
"duration_interval",
"only_for_subscriptions",
"only_for_plans",
"only_for_product_codes",
]

def get_only_for_subscriptions(self, discount):
Expand All @@ -69,6 +71,12 @@ def get_only_for_plans(self, discount):
for plan in discount.filter_plans.filter(Q(private=False) | Q(subscription__customer_id=customer_id))
]

def get_only_for_product_codes(self, discount):
return [
product_code.value
for product_code in discount.filter_product_codes.all()
]


class SubscriptionDiscountSerializer(AutoCleanSerializerMixin,
HyperlinkedModelSerializer):
Expand All @@ -79,6 +87,7 @@ class SubscriptionDiscountSerializer(AutoCleanSerializerMixin,

period_applied_to_subscription = SerializerMethodField()
is_active_for_subscription = SerializerMethodField()
only_for_product_codes = SerializerMethodField()

class Meta:
model = Discount
Expand All @@ -88,6 +97,7 @@ class Meta:
"product_code",
"percentage",
"applies_to",
"only_for_product_codes",
"document_entry_behavior",
"discount_stacking_type",
"enabled",
Expand All @@ -114,3 +124,9 @@ def get_is_active_for_subscription(self, discount):
return None

return discount.is_active_for_subscription(subscription)

def get_only_for_product_codes(self, discount):
return [
product_code.value
for product_code in discount.filter_product_codes.all()
]

0 comments on commit 9663c55

Please sign in to comment.