Files
goodtimes/manage_subscriptions/forms.py

74 lines
2.1 KiB
Python
Raw Normal View History

2024-02-29 13:25:50 +05:30
from django import forms
from accounts.models import IAmPrincipalType
2024-07-31 13:12:17 +05:30
from manage_subscriptions.models import (
PrincipalSubscription,
StripeProduct,
Subscription,
Plan,
)
2024-02-29 13:25:50 +05:30
class PlanForm(forms.ModelForm):
class Meta:
model = Plan
fields = ["title", "days"] # Include all fields you want from the model
# You can add custom validation for Plan fields here if needed
# Example:
# def clean_title(self):
# title = self.cleaned_data.get('title')
# # Add your validation logic here
# return title
class SubscriptionForm(forms.ModelForm):
class Meta:
model = Subscription
fields = [
"title",
2024-07-31 15:50:35 +05:30
"stripe_product",
2024-02-29 13:25:50 +05:30
"plan",
2024-04-10 14:53:30 +05:30
"high_amount",
2024-02-29 13:25:50 +05:30
"amount",
2024-04-10 14:53:30 +05:30
"short_description",
2024-04-10 15:34:04 +05:30
# "long_description",
# "image",
2024-04-07 16:45:22 +05:30
"principal_types",
2024-04-24 13:45:16 +05:30
"referral_percentage",
2024-06-04 16:12:52 +05:30
"active",
"deleted",
"is_free",
]
def __init__(self, *args, **kwargs):
super(SubscriptionForm, self).__init__(*args, **kwargs)
event_user = IAmPrincipalType.objects.get(name="event_user")
event_manager = IAmPrincipalType.objects.get(name="event_manager")
self.fields["principal_types"].queryset = IAmPrincipalType.objects.filter(
id__in=[event_user.id, event_manager.id]
)
2024-02-29 13:25:50 +05:30
class PrincipalSubscriptionForm(forms.ModelForm):
class Meta:
model = PrincipalSubscription
fields = "__all__" # Includes all fields from the model
widgets = {
2024-03-15 15:57:09 +05:30
"start_date": forms.DateInput(attrs={"type": "date"}),
"end_date": forms.DateInput(attrs={"type": "date"}),
"grace_period_end_date": forms.DateInput(attrs={"type": "date"}),
"cancelled_date_time": forms.DateTimeInput(attrs={"type": "datetime"}),
2024-02-29 13:25:50 +05:30
}
2024-07-31 13:12:17 +05:30
class StripeProductForm(forms.ModelForm):
class Meta:
model = StripeProduct
fields = [
"title",
"description",
]
widgets = {
"description": forms.Textarea(attrs={"rows": 3}),
}