from django import forms from django.contrib.auth.models import AbstractBaseUser from membershipworks.models import EventExt class EventInvoiceForm(forms.Form): reviewed_invoice = forms.BooleanField( label="I have reviewed this invoice and confirm that the course information, materials fee, course fees, enrollment information, invoice amount and all other details are correct.", help_text='Please contact us at info@claremontmakerspace.org if corrections are required.', required=True, ) verified_payment_and_contact = forms.BooleanField( label="I have verified my contact and payment information.", help_text='You can change your payment information here. It may take up to an hour for your changes to take effect.', required=True, ) def __init__(self, *args, event: EventExt, user: AbstractBaseUser, **kwargs): self.event = event self.user = user super().__init__(*args, **kwargs) def clean(self): if hasattr(self.event, "invoice"): raise forms.ValidationError("An invoice was already created!") if not self.event.ready_for_invoice: raise forms.ValidationError( "Event missing required information to generate invoice" ) if not self.event.user_is_instructor(self.user): raise forms.ValidationError( "You are not the listed as the instructor for this event" ) if hasattr(self.event, "eventinvoice"): raise forms.ValidationError("Invoice already exists for this event") return super().clean()