From 70d807220e91a35603bd87bbf132e61c50eb29fe Mon Sep 17 00:00:00 2001 From: bobbyvish Date: Fri, 23 Aug 2024 17:25:08 +0530 Subject: [PATCH 1/2] fix: age-group filter, url redirect --- accounts/views.py | 13 ++++++++++++- manage_events/api/filters.py | 7 ++++++- manage_subscriptions/models.py | 2 +- manage_subscriptions/views.py | 4 ++-- manage_wallets/api/views.py | 2 +- .../principal_subscription_add.html | 2 +- 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/accounts/views.py b/accounts/views.py index 490ef43..24f052f 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -797,8 +797,18 @@ class CustomerUpdateView(LoginRequiredMixin, generic.View): return render(request, self.template_name, context=context) class CustomerDetailView(LoginRequiredMixin, generic.DetailView): + page_name = resource_action.RESOURCE_MANAGE_CUSTOMER + resource = resource_action.RESOURCE_MANAGE_CUSTOMER + action = resource_action.ACTION_READ template_name = 'accounts/customer/customer_detail.html' + def get_context_data(self, **kwargs): + context = { + "page_name": self.page_name, + } + context.update(kwargs) # Include any additional context data passed to the view + return context + def get(self, request, *args, **kwargs): principal_obj = IAmPrincipal.objects.get(pk=kwargs.get("pk")) try: @@ -806,7 +816,8 @@ class CustomerDetailView(LoginRequiredMixin, generic.DetailView): except Exception as e: principal_preference = None principal_subscription = PrincipalSubscription.objects.filter(principal=principal_obj).order_by("-start_date").first() - return render(request, self.template_name, locals()) + context = self.get_context_data(principal_obj=principal_obj,principal_preference=principal_preference,principal_subscription=principal_subscription) + return render(request, self.template_name, context=context) class CustomerListView(LoginRequiredMixin, generic.ListView): page_name = resource_action.RESOURCE_MANAGE_CUSTOMER diff --git a/manage_events/api/filters.py b/manage_events/api/filters.py index cb88f8c..e4adacb 100644 --- a/manage_events/api/filters.py +++ b/manage_events/api/filters.py @@ -14,7 +14,7 @@ class EventFilter(filters.FilterSet): # end_date = filters.DateFilter(field_name="end_date", lookup_expr="lte") price_from = filters.NumberFilter(field_name="entry_fee", lookup_expr="gte") price_to = filters.NumberFilter(field_name="entry_fee", lookup_expr="lte") - age_group = filters.CharFilter(field_name="age_group", lookup_expr="icontains") + age_group = filters.CharFilter(method="filter_age_group") class Meta: model = Event @@ -32,6 +32,11 @@ class EventFilter(filters.FilterSet): def filter_category(self, queryset, name, value): category = value.split(',') return queryset.filter(category__title__in=category) + + def filter_age_group(self, queryset, name, value): + age_group = value.split(',') + return queryset.filter(age_group__in=age_group) + # def filter_queryset(self, queryset): # queryset = super().filter_queryset(queryset) diff --git a/manage_subscriptions/models.py b/manage_subscriptions/models.py index b14e238..9c929fa 100644 --- a/manage_subscriptions/models.py +++ b/manage_subscriptions/models.py @@ -72,7 +72,7 @@ class Subscription(BaseModel): # Create new product and price price = StripeService.create_price( product_data={ - "name": self.txitle, + "name": self.title, "description": self.short_description, }, unit_amount=int(self.amount * 100), diff --git a/manage_subscriptions/views.py b/manage_subscriptions/views.py index ab5f782..5c582dc 100644 --- a/manage_subscriptions/views.py +++ b/manage_subscriptions/views.py @@ -178,8 +178,8 @@ class SubscriptionDeleteView(LoginRequiredMixin, generic.View): class PrincipalSubscriptionCreateOrUpdateView(LoginRequiredMixin, generic.View): # Set the page_name and resource - page_name = resource_action.RESOURCE_MANAGE_SUBSCRIPTIONS - resource = resource_action.RESOURCE_MANAGE_SUBSCRIPTIONS + page_name = resource_action.RESOURCE_PRINCIPAL_SUBSCRIPTIONS + resource = resource_action.RESOURCE_PRINCIPAL_SUBSCRIPTIONS # Initialize the action as ACTION_CREATE (can change based on logic) action = resource_action.ACTION_CREATE # Default action diff --git a/manage_wallets/api/views.py b/manage_wallets/api/views.py index f477a22..931bbcb 100644 --- a/manage_wallets/api/views.py +++ b/manage_wallets/api/views.py @@ -146,7 +146,7 @@ class TransactionView(APIView): models.TransactionStatus.SUCCESS, models.TransactionStatus.FAIL, ], - ) + ).order_by("-created_on") serializer = serializers.TransactionSerializer(queryset, many=True) response = { diff --git a/templates/manage_subscriptions/principal_subscription_add.html b/templates/manage_subscriptions/principal_subscription_add.html index 8da8df6..d524ae8 100644 --- a/templates/manage_subscriptions/principal_subscription_add.html +++ b/templates/manage_subscriptions/principal_subscription_add.html @@ -16,7 +16,7 @@
-

{{operation}} {{page_name}}

+

{{operation}} Customer Subscription

-

Plan: {{ subscription.plan.title }}

-

Price ID: {{ subscription.price_id|default:"Not a Stripe Subscription" }}

-

Stripe Product: {{ subscription.stripe_product|default:"None" }}

+

Customer type : + {% for principal_type in subscription.principal_types.all %} + {{ principal_type.name }} + {% endfor %} +

+

Plan: {{subscription.interval_count}} {{ subscription.interval }}

+

Stripe Price ID: {{ subscription.price_id|default:"Not a Stripe Subscription" }}

+

Stripe Product ID: {{ subscription.product_id|default:"None" }}

Amount: ${{ subscription.amount }}

High Amount: ${{ subscription.high_amount }}

Referral Percentage: {{ subscription.referral_percentage }}%

@@ -49,26 +54,11 @@

Short Description: {{ subscription.short_description|default:"Not Provided" }}

Long Description:

-

{{ subscription.long_description|default:"Not Provided" }}

+

{{ subscription.long_description.html|default:"Not Provided"|safe }}

- -
-
-
-
Principal Types
-
-
-
    - {% for principal_type in subscription.principal_types.all %} -
  • {{ principal_type.name }}
  • - {% endfor %} -
-
-
-
diff --git a/templates/manage_subscriptions/subscription_list.html b/templates/manage_subscriptions/subscription_list.html index ee40a60..c2a59d7 100644 --- a/templates/manage_subscriptions/subscription_list.html +++ b/templates/manage_subscriptions/subscription_list.html @@ -84,6 +84,26 @@ diff --git a/templates/stripe_html/index.html b/templates/stripe_html/index.html index 61bc410..0adc577 100644 --- a/templates/stripe_html/index.html +++ b/templates/stripe_html/index.html @@ -98,49 +98,45 @@ {% for subscription in subscriptions %}
-
- -
{{ subscription.title }} -
- {% if subscription.image %} - {{ subscription.title }} - {% endif %} -
-
- {% if subscription.short_description %} -

{{ subscription.short_description }}

- {% endif %} - {% if subscription.long_description %} -

{{ subscription.long_description|truncatewords:20 }}

- {% endif %} -
Subscription Amount
- {% if subscription.high_amount and subscription.high_amount > subscription.amount %} -

£ {{ subscription.high_amount }} £ {{ subscription.amount }} +

{{subscription.title}}

+ {% if subscription.high_amount and subscription.high_amount > subscription.amount %} +

+ £{{subscription.high_amount}} + £{{subscription.amount}} + {% if subscription.interval_count == 1 %} + / {{ subscription.interval| capfirst }} + {% else %} + / {{ subscription.interval_count }} {{ subscription.interval | capfirst }}s + {% endif %}

- {% else %} -

£ {{ subscription.amount }}

- {% endif %} -

Subscription Cycle: {{subscription.interval_count}} {{ subscription.interval | capfirst }}

- -
-
- {% comment %} {% endcomment %} - -
- - -
- - - - -
+ {% else %} +

+ £{{subscription.amount}} + {% if interval_count == 1 %} + / {{ subscription.interval }} + {% else %} + / {{ subscription.interval_count }} {{ subscription.interval | capfirst }}s + {% endif %} +

+ {% endif %} + {% if subscription.short_description %} +

{{ subscription.short_description }}

+ {% endif %} + {% if subscription.long_description %} +

{{ subscription.long_description.html|safe }}

+ {% endif %} +
+ + +
+ +
{% endfor %} - + @@ -551,8 +547,6 @@ return result.json(); }) .then((data) => { - console.log("data: ", data); - console.log("data.sessionId: ", data.sessionId); // Redirects to Stripe Checkout return stripe.redirectToCheckout({ sessionId: data.sessionId