Ejemplo n.º 1
0
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)
     }
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
    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))
Ejemplo n.º 10
0
    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))
Ejemplo n.º 11
0
    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'})
Ejemplo n.º 12
0
 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),
             )
Ejemplo n.º 13
0
    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)
Ejemplo n.º 15
0
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'))