Files
goodtimes/manage_subscriptions/forms.py

72 lines
2.2 KiB
Python

from django import forms
from accounts.models import IAmPrincipalType
from manage_subscriptions.models import (
PrincipalSubscription,
Subscription,
)
class SubscriptionForm(forms.ModelForm):
class Meta:
model = Subscription
fields = [
"title",
"short_description",
"long_description",
"interval",
"interval_count",
"high_amount",
"amount",
"principal_types",
"referral_percentage",
"active",
"is_free",
]
exclude = []
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]
)
if self.instance:
# If there is an instance (i.e. we're editing an existing subscription)
# Use a dictionary comprehension to create a new dictionary of fields
# that excludes the readonly fields
self.fields = {
field_name: field
for field_name, field in self.fields.items()
if field_name not in [
"interval",
"interval_count",
"amount",
"high_amount",
"principal_types",
]
}
class PrincipalSubscriptionForm(forms.ModelForm):
class Meta:
model = PrincipalSubscription
fields = [
"subscription",
"principal",
"status",
"start_date",
"end_date",
"grace_period_end_date",
"comments",
"coupon_code"
] # Includes all fields from the model
widgets = {
"start_date": forms.DateInput(attrs={"type": "date"}),
"end_date": forms.DateInput(attrs={"type": "date"}),
"grace_period_end_date": forms.DateInput(attrs={"type": "date"}),
}