def formfield_for_dbfield(self, db_field, **kwargs):
     formfield = super(RelatedWidgetWrapperBase, self).formfield_for_dbfield(db_field, **kwargs)
     if (formfield and
         isinstance(formfield.widget, admin.widgets.RelatedFieldWidgetWrapper) and
         not isinstance(formfield.widget.widget, SelectMultiple)):
         request = kwargs.pop('request', None)
         related_modeladmin = self.admin_site._registry.get(db_field.rel.to)
         can_change_related = bool(related_modeladmin and
                                   related_modeladmin.has_change_permission(request))
         can_delete_related = bool(related_modeladmin and
                                   related_modeladmin.has_delete_permission(request))
         widget = RelatedFieldWidgetWrapper.from_contrib_wrapper(formfield.widget,
                                                                 can_change_related,
                                                                 can_delete_related)
         formfield.widget = widget
     return formfield
Пример #2
0
 def __init__(self, *args, **kwargs):
     super(ObjecttypeAdminForm, self).__init__(*args, **kwargs)
     rel = ManyToOneRel(Objecttype, 'id')
     self.fields['parent'].widget = RelatedFieldWidgetWrapper(
         self.fields['parent'].widget, rel, self.admin_site)
Пример #3
0
 def test_no_can_add_related(self):
     rel = models.Inventory._meta.get_field('parent').rel
     w = AdminRadioSelect()
     # Used to fail with a name error.
     w = RelatedFieldWidgetWrapper(w, rel, admin.site)
     self.assertFalse(w.can_add_related)
Пример #4
0
 def __init__(self, widget, rel, admin_site, can_add_related=None):
     RelatedFieldWidgetWrapper.__init__(self, widget, rel, admin_site,
         can_add_related=False)
Пример #5
0
 def __init__(self, *args, **kwargs):
     super(EntryAdminForm, self).__init__(*args, **kwargs)
     rel = ManyToManyRel(Category, 'id')
     self.fields['categories'].widget = RelatedFieldWidgetWrapper(
         self.fields['categories'].widget, rel, self.admin_site)
     self.fields['sites'].initial = [Site.objects.get_current()]
Пример #6
0
 def __init__(self, *args, **kwargs):
     super(CategoryAdminForm, self).__init__(*args, **kwargs)
     rel = ManyToOneRel(Category._meta.get_field('tree_id'), Category, 'id')
     self.fields['parent'].widget = RelatedFieldWidgetWrapper(
         self.fields['parent'].widget, rel, self.admin_site)
Пример #7
0
def add_related_field_wrapper(form, col_name):
    rel_model = form.Meta.model
    rel = rel_model._meta.get_field(col_name).rel
    form.fields[col_name].widget = RelatedFieldWidgetWrapper(
        form.fields[col_name].widget, rel, admin.site, can_add_related=True)
Пример #8
0
    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
                 initial=None, error_class=ErrorList, label_suffix=':',
                 empty_permitted=False, instance=None):

        if instance:
            if initial:
                initial.update({'equipamento': instance.equipamento})
            else:
                initial = {'equipamento': instance.equipamento}

            initial.update({'patrimonio': instance.patrimonio})
            initial.update({'form_filhos': [(p.id, p.apelido, p.ns, p.descricao)
                                            for p in Patrimonio.objects.filter(patrimonio=instance)]})
            if instance.pagamento_id:
                initial.update({'termo': instance.pagamento.protocolo.termo})

        super(PatrimonioAdminForm, self).__init__(data, files, auto_id, prefix, initial,
                                                  error_class, label_suffix, empty_permitted, instance)

        pg = self.fields['pagamento']
        if data and 'termo' in data and data['termo']:
            t = data['termo']
            t = Termo.objects.get(id=t)
            pg.queryset = Pagamento.objects.filter(protocolo__termo=t)
        elif instance and instance.pagamento:
            pg.choices = [(p.id, p.__unicode__()) for p in Pagamento.objects.filter(id=instance.pagamento.id)]
        else:
            pg.queryset = Pagamento.objects.filter(id__lte=0)

        pt = self.fields['patrimonio']
        if data and 'patrimonio' in data and data['patrimonio']:
            pt.choices = [(p.id, p.__unicode__()) for p in Patrimonio.objects.filter(id=data['patrimonio'])]
        elif instance and instance.patrimonio:
            pt.choices = [(p.id, p.__unicode__()) for p in Patrimonio.objects.filter(id=instance.patrimonio.id)]
        else:
            pt.queryset = Patrimonio.objects.filter(id__lte=0)

        # Configurando a relação entre Patrimonio e Equipamento para aparecer o botão de +
        # O self.admin_site foi declarado no admin.py
        if django.VERSION[0:2] >= (1, 6):
            rel = ManyToOneRel(field=Patrimonio._meta.get_field('equipamento'), to=Equipamento, field_name='id')  # @UndefinedVariable
        else:
            rel = ManyToOneRel(Equipamento, 'id')

        self.fields['equipamento'].widget = RelatedFieldWidgetWrapper(self.fields['equipamento'].widget, rel,
                                                                      self.admin_site)

        # Configurando a relação entre Equipamento e Entidade para aparecer o botão de +
        # O self.admin_site foi declarado no admin.py
        if django.VERSION[0:2] >= (1, 6):
            rel = ManyToOneRel(field=Patrimonio._meta.get_field('entidade_procedencia'), to=Entidade, field_name='id')  # @UndefinedVariable
        else:
            rel = ManyToOneRel(Entidade, 'id')

        procedencia_field = self.fields['entidade_procedencia']
        procedencia_field.widget = RelatedFieldWidgetWrapper(procedencia_field.widget, rel, self.admin_site)

        """
        et = self.fields['entidade_procedencia']
        if data and data['entidade_procedencia']:
            t = data['entidade_procedencia']
            et.queryset = Entidade.objects.filter(pk=t)
        elif instance and instance.entidade_procedencia:
            et.choices = [(p.id, p.__unicode__()) for p in Entidade.objects.filter(id=instance.entidade_procedencia.id)]
        else:
            # ************ROGERIO: MODIFICAR PARA UM FILTRO POR ATRIBUTO/ FLAG
            #entidadeHistoricoList = EntidadeHistorico.objects.filter(tipo__nome= 'Fabricante')
            .values_list('entidade_id', flat=True)
            #et.queryset = Entidade.objects.filter(id__in=entidadeHistoricoList)
            et.queryset = Entidade.objects.all()
        """
        # Exibe a quantidade de patrimonios filhos no label
        self.fields['form_filhos'].label = u'Patrimônios contidos (%s)' % \
                                           Patrimonio.objects.filter(patrimonio=instance).count()

        filtro_widget = self.fields['filtro_equipamento'].widget
        if instance:
            if instance.equipamento:
                filtro_widget = forms.TextInput(attrs={'onkeydown': 'if (event.keyCode == 13) {$(\'#id_equipamento\')'
                                                                    '.focus(); return false;}',
                                                       'onchange': 'ajax_filter_equipamento(this.value, "%s", "%s");' %
                                                                   (instance.id, instance.equipamento.id)})
            else:
                filtro_widget = forms.TextInput(attrs={'onkeydown': 'if (event.keyCode == 13) {$(\'#id_equipamento\')'
                                                                    '.focus(); return false;}',
                                                       'onchange': 'ajax_filter_equipamento(this.value, "%s");' %
                                                                   instance.id})
        else:
            filtro_widget = forms.TextInput(attrs={'onkeydown': 'if (event.keyCode == 13) {$(\'#id_equipamento\')'
                                                                '.focus(); return false;}',
                                                   'onchange': 'ajax_filter_equipamento(this.value, "");'})
Пример #9
0
 def __init__(self, *args, **kwargs):
     super(NewsEntryAdminForm, self).__init__(*args, **kwargs)
     self.fields['categories'].widget = RelatedFieldWidgetWrapper(
         self.fields['categories'].widget,
         NewsEntry.categories.field.rel,
         self.admin_site)
Пример #10
0
 def __init__(self, *args, **kwargs):
     super(CategoryAdminForm, self).__init__(*args, **kwargs)
     self.fields['parent'].widget = RelatedFieldWidgetWrapper(
         self.fields['parent'].widget, Category.parent.field.remote_field,
         self.admin_site)