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
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)
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)
def __init__(self, widget, rel, admin_site, can_add_related=None): RelatedFieldWidgetWrapper.__init__(self, widget, rel, admin_site, can_add_related=False)
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()]
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)
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)
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, "");'})
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)
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)