from django import forms from .models import ApplicationSubmission class ProgressSubmissionForm(forms.ModelForm): action = forms.ChoiceField() class Meta: model = ApplicationSubmission fields = [] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) choices = [(action, action) for action in self.instance.phase.action_names] self.fields['action'].choices = choices self.fields['action'].label = self.instance.phase.name self.should_show = bool(choices) def save(self, *args, **kwargs): new_phase = self.instance.workflow.process(self.instance.phase, self.cleaned_data['action']) self.instance.status = str(new_phase) return super().save(*args, **kwargs)