class BulkAbstractJudgmentForm(AbstractJudgmentFormBase): judgment = HiddenEnumField(enum=AbstractAction, skip={AbstractAction.change_tracks}) abstract_id = HiddenFieldList() submitted = HiddenField() def __init__(self, *args, **kwargs): self.event = kwargs.pop('event') super(BulkAbstractJudgmentForm, self).__init__(*args, **kwargs) self.duplicate_of.excluded_abstract_ids = set(kwargs['abstract_id']) self.merged_into.excluded_abstract_ids = set(kwargs['abstract_id']) if kwargs['judgment']: self._remove_unused_fields(kwargs['judgment']) def _remove_unused_fields(self, judgment): for field in list(self): validator = next( (v for v in field.validators if isinstance(v, HiddenUnless) and v.field == 'judgment'), None) if validator is None: continue if not any(v.name == judgment for v in validator.value): delattr(self, field.name) def is_submitted(self): return super(BulkAbstractJudgmentForm, self).is_submitted() and 'submitted' in request.form
class BulkPaperJudgmentForm(PaperJudgmentFormBase): judgment = HiddenEnumField(enum=PaperAction) contribution_id = HiddenFieldList() submitted = HiddenField() def __init__(self, *args, **kwargs): self.event = kwargs.pop('event') super(BulkPaperJudgmentForm, self).__init__(*args, **kwargs) def is_submitted(self): return super(BulkPaperJudgmentForm, self).is_submitted() and 'submitted' in request.form
class BulkAbstractJudgmentForm(AbstractJudgmentFormBase): _order = ('judgment', 'accepted_track', 'override_contrib_type', 'accepted_contrib_type', 'session', 'duplicate_of', 'merged_into', 'merge_persons', 'judgment_comment', 'send_notifications') judgment = HiddenEnumField(enum=AbstractAction, skip={AbstractAction.change_tracks}) abstract_id = HiddenFieldList() submitted = HiddenField() override_contrib_type = BooleanField(_("Override contribution type"), [HiddenUnless('judgment', AbstractAction.accept)], widget=SwitchWidget(), description=_("Override the contribution type for all selected abstracts")) def __init__(self, *args, **kwargs): self.event = kwargs.pop('event') super(BulkAbstractJudgmentForm, self).__init__(*args, **kwargs) if self.accepted_track: self.accepted_track.description = _("The abstracts will be accepted in this track") if self.accepted_contrib_type: self.accepted_contrib_type.description = _("The abstracts will be converted into a contribution of this " "type") else: del self.override_contrib_type if self.session: self.session.description = _("The generated contributions will be allocated in this session") self.duplicate_of.description = _("The selected abstracts will be marked as duplicate of the specified " "abstract") self.merged_into.description = _("The selected abstracts will be merged into the specified abstract") self.merge_persons.description = _("Authors and speakers of the selected abstracts will be added to the " "specified abstract") self.duplicate_of.excluded_abstract_ids = set(kwargs['abstract_id']) self.merged_into.excluded_abstract_ids = set(kwargs['abstract_id']) if kwargs['judgment']: self._remove_unused_fields(kwargs['judgment']) def _remove_unused_fields(self, judgment): for field in list(self): validator = next((v for v in field.validators if isinstance(v, HiddenUnless) and v.field == 'judgment'), None) if validator is None: continue if not any(v.name == judgment for v in validator.value): delattr(self, field.name) def is_submitted(self): return super(BulkAbstractJudgmentForm, self).is_submitted() and 'submitted' in request.form @classmethod def _add_contrib_type_hidden_unless(cls): # In the bulk form we need to hide/disable the contrib type selector unless we want to # override the type specified in the abstract. However, multiple HiddenUnless validators # are not supported in the client-side JS so we only add it to this form - it removes # inactive fields on the server side so it still works (the JavaScript picks up the last # HiddenUnless validator) inject_validators(BulkAbstractJudgmentForm, 'accepted_contrib_type', [HiddenUnless('override_contrib_type')])
class BulkPaperJudgmentForm(IndicoForm): judgment = HiddenEnumField(enum=PaperAction) contribution_id = HiddenFieldList() submitted = HiddenField() judgment_comment = TextAreaField(_("Comment"), render_kw={'placeholder': _("Leave a comment for the submitter..."), 'class': 'grow'}) def __init__(self, *args, **kwargs): self.event = kwargs.pop('event') super().__init__(*args, **kwargs) def is_submitted(self): return super().is_submitted() and 'submitted' in request.form