class CompareConceptsForm(forms.Form): item_a = forms.ModelChoiceField( queryset=MDR._concept.objects.none(), empty_label="None", label=_("First item"), required=True, widget=widgets.ConceptAutocompleteSelect() ) item_b = forms.ModelChoiceField( queryset=MDR._concept.objects.none(), empty_label="None", label=_("Second item"), required=True, widget=widgets.ConceptAutocompleteSelect() ) def __init__(self, *args, **kwargs): self.user = kwargs.pop('user') self.qs = kwargs.pop('qs').visible(self.user) super().__init__(*args, **kwargs) self.fields['item_a'] = forms.ModelChoiceField( queryset=self.qs, empty_label="None", label=_("First item"), required=True, widget=widgets.ConceptAutocompleteSelect() ) self.fields['item_b']=forms.ModelChoiceField( queryset=self.qs, empty_label="None", label=_("Second item"), required=True, widget=widgets.ConceptAutocompleteSelect() )
def get_aristotle_widgets(model, ordering_field=None): _widgets = {} for f in model._meta.fields: foreign_model = model._meta.get_field(f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelect( model=foreign_model ) }) if isinstance(model._meta.get_field(f.name), DateField): _widgets.update({ f.name: BootstrapDateTimePicker(options=datePickerOptions) }) if ordering_field is not None and f.name == ordering_field: _widgets.update({ ordering_field: forms.HiddenInput() }) for f in model._meta.many_to_many: foreign_model = model._meta.get_field(f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelectMultiple( model=foreign_model ) }) return _widgets
class M2MOrderForm(forms.Form): item_to_add = forms.ModelChoiceField( queryset=self.model_to_add.objects.visible(self.request.user), label="Attach", required=False, widget=widgets.ConceptAutocompleteSelect( model=self.model_to_add))
class Meta: model = self.model_base fields = (self.model_base_field, ) widgets = { self.model_base_field: widgets.ConceptAutocompleteSelect(model=foreign_model) }
def get_aristotle_widgets(model, ordering_field=None): _widgets = {} for f in model._meta.fields: foreign_model = model._meta.get_field(f.name).related_model widget = None if foreign_model and issubclass(foreign_model, _concept): widget = widgets.ConceptAutocompleteSelect( model=foreign_model, attrs={"style": "max-width:250px"}) elif foreign_model: widget = forms.Select(attrs={"class": "form-control"}) if isinstance(model._meta.get_field(f.name), DateField): widget = BootstrapDateTimePicker( options=datePickerOptions, attrs={"style": "min-width:150px"}) if ordering_field is not None and f.name == ordering_field: widget = forms.HiddenInput() if widget is not None: _widgets[f.name] = widget for f in model._meta.many_to_many: foreign_model = model._meta.get_field(f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelectMultiple(model=foreign_model) }) return _widgets
class SupersedeForm(forms.Form): newerItem = forms.ModelChoiceField( queryset=MDR._concept.objects.all(), empty_label="None", label=_("Superseded by"), required=False, widget=widgets.ConceptAutocompleteSelect()) def __init__(self, *args, **kwargs): self.item = kwargs.pop('item') self.qs = kwargs.pop('qs') self.user = kwargs.pop('user') super(SupersedeForm, self).__init__(*args, **kwargs) self.fields['newerItem'] = forms.ModelChoiceField( queryset=self.qs, empty_label="None", label=_("Superseded by"), initial=self.item.superseded_by, required=False, widget=widgets.ConceptAutocompleteSelect( model=self.item._meta.model)) def clean_newerItem(self): item = self.cleaned_data['newerItem'] if not item: return None if self.item.id == item.id: raise forms.ValidationError("An item may not supersede itself") if not user_can_edit(self.user, item): raise forms.ValidationError( "You cannot supersede with an item that you do not have permission to edit" ) return item
def get_formset(self): _widgets = {} for f in self.model_to_add._meta.fields: foreign_model = self.model_to_add._meta.get_field( f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelect(model=foreign_model) }) for f in self.model_to_add._meta.many_to_many: foreign_model = self.model_to_add._meta.get_field( f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelectMultiple( model=foreign_model) }) from aristotle_mdr.contrib.generic.forms import HiddenOrderModelFormSet return modelformset_factory( self.model_to_add, formset=HiddenOrderModelFormSet, can_order=True, # we assign this back to the ordering field can_delete=True, exclude=[self.model_to_add_field, self.ordering_field], # fields='__all__', extra=1, widgets=_widgets)
class AddLink_SelectRelation_1(UserAwareForm, forms.Form): relation = forms.ModelChoiceField( queryset=Relation.objects.none(), widget=widgets.ConceptAutocompleteSelect(model=Relation)) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['relation'].queryset = Relation.objects.all().visible( self.user)
def __init__(self, *args, **kwargs): self.item = kwargs.pop('item') self.user = kwargs.pop('user') super().__init__(*args, **kwargs) self.fields['older_item'] = forms.ModelChoiceField( queryset=self.item._meta.model.objects.visible(self.user), empty_label=BLANK_CHOICE_DASH, label=_("Supersedes"), widget=widgets.ConceptAutocompleteSelect( model=self.item._meta.model))
def __init__(self, *args, **kwargs): self.item = kwargs.pop('item') self.qs = kwargs.pop('qs') self.user = kwargs.pop('user') super(SupersedeForm, self).__init__(*args, **kwargs) self.fields['newerItem'] = forms.ModelChoiceField( queryset=self.qs, empty_label="None", label=_("Superseded by"), initial=self.item.superseded_by, required=False, widget=widgets.ConceptAutocompleteSelect( model=self.item._meta.model))
def __init__(self, *args, **kwargs): self.item = kwargs.pop('item') self.user = kwargs.pop('user') super().__init__(*args, **kwargs) qs = self.item._meta.model.objects.visible(self.user) self.fields['older_item'] = forms.ModelChoiceField( queryset=qs, empty_label="None", label=_("Supersedes"), widget=widgets.ConceptAutocompleteSelect( model=self.item._meta.model)) self.fields['message'].widget.attrs.update( {'class': 'small-text-area'})
def __init__(self, roles, *args, **kwargs): self.roles = roles super(LinkEndEditorBase, self).__init__(*args, **kwargs) for role in self.roles: if role.multiplicity == 1: self.fields['role_' + str(role.pk)] = forms.ModelChoiceField( queryset=MDR._concept.objects.all().visible(self.user), label=role.name, widget=widgets.ConceptAutocompleteSelect(model=MDR._concept), ) else: self.fields['role_' + str(role.pk)] = forms.ModelMultipleChoiceField( queryset=MDR._concept.objects.all().visible(self.user), label=role.name, widget=widgets.ConceptAutocompleteSelectMultiple(model=MDR._concept), )
def __init__(self, *args, **kwargs): self.item = kwargs.pop('item') self.user = kwargs.pop('user') super().__init__(*args, **kwargs) qs = self.item.item._meta.model.objects.visible(self.user) self.fields['newer_item'] = forms.ModelChoiceField( queryset=qs, empty_label="None", label=_("Superseded by"), widget=widgets.ConceptAutocompleteSelect( model=self.item._meta.model)) self.fields['registration_authority'] = forms.ModelChoiceField( queryset=self.user.profile.registrarAuthorities, empty_label="None", label=_("Registration authority"), )
def one_to_many_formset_factory(model_to_add, model_to_add_field, ordering_field, extra_excludes=[]): # creates a one to many formset # model_to_add is weak entity class, model_to_add_field is the foriegn key field name _widgets = {} exclude_fields = [model_to_add_field, ordering_field] exclude_fields += extra_excludes for f in model_to_add._meta.fields: foreign_model = model_to_add._meta.get_field(f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelect(model=foreign_model) }) if isinstance(model_to_add._meta.get_field(f.name), DateField): _widgets.update( {f.name: BootstrapDateTimePicker(options=datePickerOptions)}) for f in model_to_add._meta.many_to_many: foreign_model = model_to_add._meta.get_field(f.name).related_model if foreign_model and issubclass(foreign_model, _concept): _widgets.update({ f.name: widgets.ConceptAutocompleteSelectMultiple(model=foreign_model) }) return modelformset_factory( model_to_add, formset=HiddenOrderModelFormSet, can_order=True, # we assign this back to the ordering field can_delete=True, exclude=exclude_fields, # fields='__all__', extra=1, widgets=_widgets)
class GlossarySearchForm(UserAwareForm): items = forms.ModelChoiceField( queryset=GlossaryItem.objects.all(), label=_("Glossary Item"), widget=widgets.ConceptAutocompleteSelect(model=GlossaryItem))
class GlossarySearchForm(UserAwareForm): items = forms.ModelChoiceField( queryset=GlossaryItem.objects.all(), label=_("Glossary Item"), widget=widgets.ConceptAutocompleteSelect(model=GlossaryItem)) link = forms.CharField(required=False, label=_('Link text'))