Newer
Older
from django_select2.forms import Select2Widget
from opentech.apply.funds.models import ReviewerRole
from .widgets import Select2MultiCheckboxesWidget
action = forms.ChoiceField(label='Take action')
self.user = kwargs.pop('user')
choices = list(self.instance.get_actions_for_user(self.user))
action_field = self.fields['action']
action_field.choices = choices
Erin Mullaney
committed
class ScreeningSubmissionForm(forms.ModelForm):
class Meta:
model = ApplicationSubmission
Erin Mullaney
committed
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
super().__init__(*args, **kwargs)
self.should_show = False
if (self.instance.active and self.user.is_apply_staff) or self.user.is_superuser:
self.should_show = True
Erin Mullaney
committed
class UpdateSubmissionLeadForm(forms.ModelForm):
class Meta:
model = ApplicationSubmission
fields = ('lead',)
def __init__(self, *args, **kwargs):
lead_field = self.fields['lead']
lead_field.label = f'Update lead from { self.instance.lead } to'
lead_field.queryset = lead_field.queryset.exclude(id=self.instance.lead.id)
class UpdateReviewersForm(forms.ModelForm):
class Meta:
model = ApplicationSubmission
fields: list = []
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
reviewers = User.objects.staff() | User.objects.reviewers()
for role in ReviewerRole.objects.all():
role_name = role.name.replace(" ", "_")
self.fields[role_name + '_reviewer_' + str(role.pk)] = forms.ModelChoiceField(
queryset=reviewers,
widget=Select2Widget(attrs={'data-placeholder': 'Select a reviewer'}),
required=False,
)
instance = super().save(*args, **kwargs)
# TODO loop through self.cleaned_data and save reviewers to submission
# for field_name, value in self.cleaned_data.items():
# role_pk = field_name[field_name.rindex("_")+1:]
Erin Mullaney
committed
class BatchUpdateReviewersForm(forms.Form):
staff_reviewers = forms.ModelMultipleChoiceField(
queryset=User.objects.staff(),
widget=Select2MultiCheckboxesWidget(attrs={'data-placeholder': 'Staff'}),
)
submission_ids = forms.CharField(widget=forms.HiddenInput())
def clean_submission_ids(self):
value = self.cleaned_data['submission_ids']
return [int(submission) for submission in value.split(',')]