class SimpleDonationForm(forms.Form): button_label = "Je donne !" amount = AskAmountField( label="Montant du don", max_value=settings.DONATION_MAXIMUM, min_value=settings.DONATION_MINIMUM, decimal_places=2, required=True, error_messages={ "invalid": _("Indiquez le montant à donner."), "min_value": format_lazy( _("Il n'est pas possible de donner moins que {min} €."), min=settings.DONATION_MINIMUM, ), "max_value": format_lazy( _("Les dons de plus de {max} € ne peuvent être faits par carte bleue."), max=settings.DONATION_MAXIMUM, ), }, ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = "donation-form" self.helper.add_input(layout.Submit("valider", self.button_label)) self.helper.layout = Layout()
class LoanForm(SimpleDonationForm): button_label = "Je prête !" amount = AskAmountField( label="Montant du prêt", max_value=settings.LOAN_MAXIMUM, min_value=settings.LOAN_MINIMUM, decimal_places=2, required=True, error_messages={ "invalid": _("Indiquez le montant à prêter."), "min_value": format_lazy( _("Les prêts de moins de 400 € ne sont pas acceptés."), min=settings.LOAN_MINIMUM, ), "max_value": format_lazy( _("Les prêts de plus de {max} € ne peuvent être faits par carte bleue." ), max=settings.LOAN_MAXIMUM, ), }, amount_choices=[10000, 5000, 2000, 1000, 400], show_tax_credit=False, )
class AllocationSubscriptionForm(AllocationMixin, SimpleDonationForm): amount = AskAmountField( label="Montant du don mensuel", max_value=settings.MONTHLY_DONATION_MAXIMUM, min_value=settings.MONTHLY_DONATION_MINIMUM, required=True, error_messages={ "invalid": _("Indiquez le montant de votre don mensuel."), "min_value": format_lazy( _("Les dons mensuels de moins de {min} ne sont pas acceptés."), min=display_price(settings.MONTHLY_DONATION_MINIMUM), ), "max_value": format_lazy( _("Les dons mensuels de plus de {max} ne sont pas acceptés."), max=display_price(settings.MONTHLY_DONATION_MAXIMUM), ), }, by_month=True, show_tax_credit=True, ) previous_subscription = forms.ModelChoiceField( queryset=Subscription.objects.filter(status=Subscription.STATUS_ACTIVE), required=False, widget=forms.HiddenInput, ) def __init__(self, *args, user, **kwargs): super().__init__(*args, user=user, **kwargs) self.fields["amount"].amount_choices = [ 100 * 100, 50 * 100, 20 * 100, 10 * 100, 5 * 100, ] if user: self.fields["previous_subscription"].queryset = self.fields[ "previous_subscription" ].queryset.filter(person=user.person) self.helper.layout.fields.append("previous_subscription") def get_button_label(self): if self.get_initial_for_field( self.fields["previous_subscription"], "previous_subscription" ): return "Modifier ce don mensuel" return "Mettre en place le don mensuel"
def __init__(self, *args, campagne=None, **kwargs): super().__init__(*args, **kwargs) fields = [ "label", "error_messages", "required", "amount_choices", "show_tax_credit", ] self.fields["amount"] = AskAmountField( min_value=campagne.get("min_value", settings.LOAN_MINIMUM), max_value=campagne.get("max_value", settings.LOAN_MAXIMUM), **{f: getattr(self.fields["amount"], f) for f in fields}, )
class LoanForm(SimpleDonationForm): button_label = "Je prête !" amount = AskAmountField( label="Montant du prêt", max_value=settings.LOAN_MAXIMUM, min_value=settings.LOAN_MINIMUM, required=True, error_messages={ "invalid": _("Indiquez le montant à prêter."), "min_value": format_lazy( _("Les prêts de moins de {min} ne sont pas acceptés."), min=display_price(settings.LOAN_MINIMUM), ), "max_value": format_lazy( _("Les prêts de plus de {max} ne peuvent être faits par carte bleue." ), max=display_price(settings.LOAN_MAXIMUM), ), }, amount_choices=[ 10000 * 100, 5000 * 100, 2000 * 100, 1000 * 100, 400 * 100 ], show_tax_credit=False, ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = "donation-form" self.helper.add_input(layout.Submit("valider", self.button_label)) self.helper.layout = Layout()