def editar_nota(request, id): nota = get_object_or_404(Notas, id=id) NotaFormSet = generic_inlineformset_factory(Imagen, extra=5, max_num=5) Nota2FormSet = generic_inlineformset_factory(Documentos, extra=5, max_num=5) form2 = NotaFormSet(instance=nota) form3 = Nota2FormSet(instance=nota) if not nota.user == request.user and not request.user.is_superuser: return HttpResponse("Usted no puede editar esta nota") if request.method == 'POST': form = NotasForms(request.POST, instance=nota) form2 = NotaFormSet(data=request.POST, files=request.FILES, instance=nota) form3 = Nota2FormSet(data=request.POST, files=request.FILES, instance=nota) if form.is_valid() and form2.is_valid() and form3.is_valid(): nota.titulo = request.POST['titulo'] nota.contenido = request.POST['contenido'] nota.fecha = datetime.datetime.now() nota.user = request.user nota.save() #salvando inline form2.save() form3.save() return HttpResponseRedirect('%s?shva=ok' % nota.get_absolute_url()) else: form = NotasForms(instance=nota) form2 = NotaFormSet(instance=nota) form3 = Nota2FormSet(instance=nota) return render_to_response('notas/editar_nota.html', locals(), context_instance=RequestContext(request))
def test_generic_inline_formsets(self): GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1) formset = GenericFormSet() self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), """<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text" name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50" /></p> <p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label> <input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE" id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /><input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id" id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>""") formset = GenericFormSet(instance=Animal()) self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), """<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text" name="generic_relations-taggeditem-content_type-object_id-0-tag" maxlength="50" /></p> <p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label> <input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE" id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /><input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id" id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p>""") platypus = Animal.objects.create( common_name="Platypus", latin_name="Ornithorhynchus anatinus" ) platypus.tags.create(tag="shiny") GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1) formset = GenericFormSet(instance=platypus) tagged_item_id = TaggedItem.objects.get( tag='shiny', object_id=platypus.id ).id self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), """<p><label for="id_generic_relations-taggeditem-content_type-object_id-0-tag">Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-0-tag" type="text" name="generic_relations-taggeditem-content_type-object_id-0-tag" value="shiny" maxlength="50" /></p> <p><label for="id_generic_relations-taggeditem-content_type-object_id-0-DELETE">Delete:</label> <input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-0-DELETE" id="id_generic_relations-taggeditem-content_type-object_id-0-DELETE" /><input type="hidden" name="generic_relations-taggeditem-content_type-object_id-0-id" value="%s" id="id_generic_relations-taggeditem-content_type-object_id-0-id" /></p><p><label for="id_generic_relations-taggeditem-content_type-object_id-1-tag">Tag:</label> <input id="id_generic_relations-taggeditem-content_type-object_id-1-tag" type="text" name="generic_relations-taggeditem-content_type-object_id-1-tag" maxlength="50" /></p> <p><label for="id_generic_relations-taggeditem-content_type-object_id-1-DELETE">Delete:</label> <input type="checkbox" name="generic_relations-taggeditem-content_type-object_id-1-DELETE" id="id_generic_relations-taggeditem-content_type-object_id-1-DELETE" /><input type="hidden" name="generic_relations-taggeditem-content_type-object_id-1-id" id="id_generic_relations-taggeditem-content_type-object_id-1-id" /></p>""" % tagged_item_id) lion = Animal.objects.create(common_name="Lion", latin_name="Panthera leo") formset = GenericFormSet(instance=lion, prefix='x') self.assertHTMLEqual(''.join(form.as_p() for form in formset.forms), """<p><label for="id_x-0-tag">Tag:</label> <input id="id_x-0-tag" type="text" name="x-0-tag" maxlength="50" /></p> <p><label for="id_x-0-DELETE">Delete:</label> <input type="checkbox" name="x-0-DELETE" id="id_x-0-DELETE" /><input type="hidden" name="x-0-id" id="id_x-0-id" /></p>""")
def editar_aporte(request, aporte_id): aporte = get_object_or_404(Aportes, id=aporte_id) AporteImgFormSet = generic_inlineformset_factory(Imagen, extra=5, max_num=5) AporteDocuFormSet = generic_inlineformset_factory(Documentos, extra=5, max_num=5) AporteVideoFormSet = generic_inlineformset_factory(Videos, extra=5, max_num=5) AporteAudioFormSet = generic_inlineformset_factory(Audios, extra=5, max_num=5) form2 = AporteImgFormSet(instance=aporte) form3 = AporteDocuFormSet(instance=aporte) form4 = AporteVideoFormSet(instance=aporte) form5 = AporteAudioFormSet(instance=aporte) if not aporte.user == request.user and not request.user.is_superuser: return HttpResponse("Usted no puede editar este Foro") if request.method == 'POST': form = AporteForm(request.POST, instance=aporte) form2 = AporteImgFormSet(data=request.POST, files=request.FILES, instance=aporte) form3 = AporteDocuFormSet(data=request.POST, files=request.FILES, instance=aporte) form4 = AporteVideoFormSet(data=request.POST, files=request.FILES, instance=aporte) form5 = AporteAudioFormSet(data=request.POST, files=request.FILES, instance=aporte) if form.is_valid() and form2.is_valid() and form3.is_valid( ) and form4.is_valid() and form5.is_valid(): form_uncommited = form.save(commit=False) form_uncommited.contraparte = request.user form_uncommited.save() form2.save() form3.save() form4.save() form5.save() return HttpResponseRedirect('/foros') else: form = AporteForm(instance=aporte) form2 = AporteImgFormSet(instance=aporte) form3 = AporteDocuFormSet(instance=aporte) form4 = AporteVideoFormSet(instance=aporte) form5 = AporteAudioFormSet(instance=aporte) return render_to_response('foros/editar_aporte.html', RequestContext(request, locals()))
def editar_foro(request, id): foro = get_object_or_404(Foros, id=id) ForoImgFormSet = generic_inlineformset_factory(Imagen, extra=5, max_num=5) ForoDocuFormSet = generic_inlineformset_factory(Documentos, extra=5, max_num=5) ForoVideoFormSet = generic_inlineformset_factory(Videos, extra=5, max_num=5) ForoAudioFormSet = generic_inlineformset_factory(Audios, extra=5, max_num=5) form2 = ForoImgFormSet(instance=foro) form3 = ForoDocuFormSet(instance=foro) form4 = ForoVideoFormSet(instance=foro) form5 = ForoAudioFormSet(instance=foro) if not foro.contraparte == request.user and not request.user.is_superuser: return HttpResponse("Usted no puede editar este Foro") if request.method == 'POST': form = ForosForm(request.POST, instance=foro) form2 = ForoImgFormSet(data=request.POST, files=request.FILES, instance=foro) form3 = ForoDocuFormSet(data=request.POST, files=request.FILES, instance=foro) form4 = ForoVideoFormSet(data=request.POST, files=request.FILES, instance=foro) form5 = ForoAudioFormSet(data=request.POST, files=request.FILES, instance=foro) if form.is_valid() and form2.is_valid() and form3.is_valid( ) and form4.is_valid() and form5.is_valid(): form_uncommited = form.save(commit=False) form_uncommited.contraparte = request.user form_uncommited.save() form2.save() form3.save() form4.save() form5.save() return HttpResponseRedirect('/foros/ver/' + id + '/?b=editado') else: form = ForosForm(instance=foro) form2 = ForoImgFormSet(instance=foro) form3 = ForoDocuFormSet(instance=foro) form4 = ForoVideoFormSet(instance=foro) form5 = ForoAudioFormSet(instance=foro) return render_to_response('foros/crear_foro.html', RequestContext(request, locals()))
def get_context_data(self, **kwargs): context = super(AdCreateView, self).get_context_data(**kwargs) if self.request.POST: PictureFormset = generic_inlineformset_factory(AdPicture, form=self.ad_picture_form, extra=4, max_num=4) context['picture_formset'] = PictureFormset(self.request.POST, self.request.FILES) else: PictureFormset = generic_inlineformset_factory(AdPicture, form=self.ad_picture_form, extra=4, max_num=4) context['picture_formset'] = PictureFormset() return context
def get_context_data(self, **kwargs): context = super(AdCreateView, self).get_context_data(**kwargs) if self.request.POST: PictureFormset = generic_inlineformset_factory( AdPicture, form=self.ad_picture_form, extra=4, max_num=4) context['picture_formset'] = PictureFormset( self.request.POST, self.request.FILES) else: PictureFormset = generic_inlineformset_factory( AdPicture, form=self.ad_picture_form, extra=4, max_num=4) context['picture_formset'] = PictureFormset() return context
def get_formset(self, request, obj=None): if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields(request, obj)) exclude = exclude or None def _formfield_callback(field, *args): if field.name == 'permission': ct = ContentType.objects.get_for_model(self.parent_model) return field.formfield( queryset=Permission.objects.filter(content_type=ct)) return field.formfield() defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": _formfield_callback, "formset": self.formset, "extra": self.extra, "can_delete": self.can_delete, "can_order": False, "fields": fields, "max_num": self.max_num, "exclude": exclude } return generic.generic_inlineformset_factory(self.model, **defaults)
class FuncionariosMobileForm(forms.ModelForm): TelefoneFormSet = generic_inlineformset_factory(Telefone, TelefoneMobileForm, extra=1, can_delete=False) def __init__(self, data=None, prefix=None, instance=None, *args, **kwargs): super(FuncionariosMobileForm, self).__init__(data, prefix=prefix, instance=instance, *args, **kwargs) self.telefones = self.TelefoneFormSet(data, prefix=prefix, instance=instance) def is_valid(self): return self.telefones.is_valid() and super(FuncionariosMobileForm, self).is_valid() def save(self, commit=True): self.telefones.save(commit) return super(FuncionariosMobileForm, self).save(commit) class Meta: model = Funcionario fields = ('nome', 'email', 'cargo', 'funcao', 'tempo_de_servico', 'sexo')
def editar_agenda(request, id): agenda = get_object_or_404(Agendas, id=id) #agenda_type = ContentType.objects.get(app_label="foros",model="documentos") #docu = agenda_type.get_object_for_this_type(object_id=id) AgendaFormSet = generic_inlineformset_factory(Documentos, extra=2) form1 = AgendaFormSet(instance=agenda) if not agenda.user.userprofile.contraparte == request.user.userprofile.contraparte: return HttpResponse("Usted no puede editar esta Agenda") if request.method == 'POST': form = AgendaForm(request.POST, instance=agenda) form1 = AgendaFormSet(data=request.POST, files=request.FILES, instance=agenda) if form.is_valid() and form1.is_valid(): form_uncommited = form.save(commit=False) form_uncommited.user = request.user form_uncommited.save() #form1_uncommitd = form1.save(commit=False) #form1_uncommitd.content_object = form_uncommited #form1_uncommitd.save() form1.save() return HttpResponseRedirect('/agendas/calendario/?shva=editada') else: form = AgendaForm(instance=agenda) form1 = AgendaFormSet(instance=agenda) return render_to_response('agendas/crear_agenda.html', locals(), context_instance=RequestContext(request))
def get_tag_formset(obj=None, data=None, show_labels=False, labels=None, jquery=True): if obj and Tag.get_tags(obj): extra = 0 else: extra = 1 if jquery: tagInlineForm = TagInlineForm else: tagInlineForm = TagInlineFormNoJQuery Formset = generic.generic_inlineformset_factory( Tag, form=tagInlineForm, formset=TagInlineFormset, extra=extra, ) formset = Formset(instance=obj, data=data) formset.show_labels = show_labels formset.item_type_label = 'Item type' formset.field_label = 'Field' formset.value_label = 'Value' if labels: formset.item_type_label = labels.get('item_type', 'Item type') formset.field_label = labels.get('field', 'Field') formset.value_label = labels.get('value', 'Value') for label in labels: field = formset.form.base_fields.get(label) if field: field.label = labels[label] return formset
def get_formset(self, **kwargs): if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields()) if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude: # Take the custom ModelForm's Meta.exclude into account only if the # GenericInlineModelAdmin doesn't define its own. exclude.extend(self.form._meta.exclude) exclude = exclude or None can_delete = self.can_delete and self.has_delete_permission() defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, "can_delete": can_delete, "can_order": False, "max_num": self.max_num, "exclude": exclude, 'fields': forms.ALL_FIELDS } defaults.update(kwargs) return generic_inlineformset_factory(self.model, **defaults)
def editar_agenda(request, id): agenda = get_object_or_404(Agendas, id=id) #agenda_type = ContentType.objects.get(app_label="foros",model="documentos") #docu = agenda_type.get_object_for_this_type(object_id=id) AgendaFormSet = generic_inlineformset_factory(Documentos, extra=2) form1 = AgendaFormSet(instance=agenda) if not agenda.user.userprofile.contraparte == request.user.userprofile.contraparte: return HttpResponse("Usted no puede editar esta Agenda") if request.method == 'POST': form = AgendaForm(request.POST, instance = agenda) form1 = AgendaFormSet(data=request.POST, files=request.FILES, instance = agenda) if form.is_valid() and form1.is_valid(): form_uncommited = form.save(commit=False) form_uncommited.user = request.user form_uncommited.save() #form1_uncommitd = form1.save(commit=False) #form1_uncommitd.content_object = form_uncommited #form1_uncommitd.save() form1.save() return HttpResponseRedirect('/agendas/calendario/?shva=editada') else: form = AgendaForm(instance=agenda) form1 = AgendaFormSet(instance=agenda) return render_to_response('comunicacion/agendas/crear_agenda.html', locals(), context_instance=RequestContext(request))
def get_formset(self): """ Returns the final formset class from the inline formset factory """ result = generic_inlineformset_factory(self.inline_model, **self.get_factory_kwargs()) return result
def get_tag_formset(obj=None, data=None, show_labels=False, labels=None, jquery=True): if obj and Tag.get_tags(obj): extra = 0 else: extra = 1 if jquery: tagInlineForm = TagInlineForm else: tagInlineForm = TagInlineFormNoJQuery Formset = generic.generic_inlineformset_factory( Tag, form=tagInlineForm, formset=TagInlineFormset, extra=extra, ) formset = Formset(instance=obj, data=data) formset.show_labels = show_labels formset.item_type_label = 'Item type' formset.field_label = 'Field' formset.value_label = 'Value' if labels: formset.item_type_label = labels.get('item_type', 'Item type') formset.field_label = labels.get('field', 'Field') formset.value_label = labels.get('value', 'Value') for label in labels: field = formset.form.base_fields.get(label) if field: field.label = labels[label] return formset
def get_formset(self, request, obj=None, **kwargs): """ Overwritten ``GenericStackedInline.get_formset`` to restore two options: - Add a ``exclude_unchecked`` field, that allows adding fields like the ``_ptr`` fields. - Restore the ``kwargs`` option. """ if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields(request, obj)) if self.exclude_unchecked: exclude.extend(self.exclude_unchecked) defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "formset": self.formset, "extra": self.extra, "can_delete": self.can_delete, "can_order": False, "fields": fields, "max_num": self.max_num, "exclude": exclude } defaults.update(kwargs) # Give the kwargs back return generic_inlineformset_factory(self.model, **defaults)
def test_save_new_uses_form_save(self): """ Regression for #16260: save_new should call form.save() """ class SaveTestForm(forms.ModelForm): def save(self, *args, **kwargs): self.instance.saved_by = "custom method" return super(SaveTestForm, self).save(*args, **kwargs) Formset = generic_inlineformset_factory( ForProxyModelModel, fields='__all__', form=SaveTestForm) instance = ProxyRelatedModel.objects.create() data = { 'form-TOTAL_FORMS': '1', 'form-INITIAL_FORMS': '0', 'form-MAX_NUM_FORMS': '', 'form-0-title': 'foo', } formset = Formset(data, instance=instance, prefix='form') self.assertTrue(formset.is_valid()) new_obj = formset.save()[0] self.assertEqual(new_obj.saved_by, "custom method")
def get_formset(self, request, obj=None, **kwargs): """ Overwritten ``GenericStackedInline.get_formset`` to restore two options: - Add a ``exclude_unchecked`` field, that allows adding fields like the ``_ptr`` fields. - Restore the ``kwargs`` option. """ if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields(request, obj)) if self.exclude_unchecked: exclude.extend(self.exclude_unchecked) defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": curry(self.formfield_for_dbfield, request=request), "formset": self.formset, "extra": self.extra, "can_delete": self.can_delete, "can_order": False, "fields": fields, "max_num": self.max_num, "exclude": exclude } defaults.update(kwargs) # Give the kwargs back return generic_inlineformset_factory(self.model, **defaults)
def get_formset(self, **kwargs): if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields()) if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude: # Take the custom ModelForm's Meta.exclude into account only if the # GenericInlineModelAdmin doesn't define its own. exclude.extend(self.form._meta.exclude) exclude = exclude or None can_delete = self.can_delete and self.has_delete_permission() defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, "can_delete": can_delete, "can_order": False, "max_num": self.max_num, "exclude": exclude } defaults.update(kwargs) return generic_inlineformset_factory(self.model, **defaults)
def test_save_new_uses_form_save(self): """ Regression for #16260: save_new should call form.save() """ class SaveTestForm(forms.ModelForm): def save(self, *args, **kwargs): self.instance.saved_by = "custom method" return super(SaveTestForm, self).save(*args, **kwargs) Formset = generic_inlineformset_factory(ForProxyModelModel, fields='__all__', form=SaveTestForm) instance = ProxyRelatedModel.objects.create() data = { 'form-TOTAL_FORMS': '1', 'form-INITIAL_FORMS': '0', 'form-MAX_NUM_FORMS': '', 'form-0-title': 'foo', } formset = Formset(data, instance=instance, prefix='form') self.assertTrue(formset.is_valid()) new_obj = formset.save()[0] self.assertEqual(new_obj.saved_by, "custom method")
def testGenericInlineFormsetFactory(self): # Regression test for #10522. inline_formset = generic_inlineformset_factory(Media, exclude=("url",)) # Regression test for #12340. e = Episode.objects.get(name="This Week in Django") formset = inline_formset(instance=e) self.failUnless(formset.get_queryset().ordered)
def edit_photos(request,slug): musician = get_object_or_404(Musician,slug=slug) PhotosFormset = generic.generic_inlineformset_factory(Photo, extra=1) if request.method == 'POST': formset = PhotosFormset(request.POST, request.FILES,instance=musician) if formset.is_valid(): formset.save() return HttpResponseRedirect(musician.get_absolute_url())
def edit_links(request,slug): manufacturer = get_object_or_404(Manufacturer,slug=slug) LinksFormset = generic.generic_inlineformset_factory(Link, extra=1) if request.method == 'POST': formset = LinksFormset(request.POST, request.FILES,instance=manufacturer) if formset.is_valid(): formset.save() return HttpResponseRedirect(manufacturer.get_absolute_url())
def edit_photos(request, id): musiciangear = get_object_or_404(MusicianGear, id=id) PhotosFormset = generic.generic_inlineformset_factory(Photo, extra=1) if request.method == "POST": formset = PhotosFormset(request.POST, request.FILES, instance=musiciangear) if formset.is_valid(): formset.save() return HttpResponseRedirect(musiciangear.get_absolute_url())
def test_generic_inlineformset_factory(self): """ Regression for #14572: Using base forms with widgets defined in Meta should not raise errors. """ Formset = generic_inlineformset_factory(TaggedItem, TaggedItemForm) form = Formset().forms[0] self.assertIsInstance(form['tag'].field.widget, CustomWidget)
def testGenericInlineFormsetFactory(self): # Regression test for #10522. inline_formset = generic_inlineformset_factory(Media, exclude=('url',)) # Regression test for #12340. e = Episode.objects.get(name='This Week in Django') formset = inline_formset(instance=e) self.assertTrue(formset.get_queryset().ordered)
def testGenericInlineFormsetFactory(self): # Regression test for #10522. inline_formset = generic_inlineformset_factory(Media, exclude=('url', )) # Regression test for #12340. e = Episode.objects.get(name='This Week in Django') formset = inline_formset(instance=e) self.assertTrue(formset.get_queryset().ordered)
def get_formset(self, request, obj=None, **kwargs): if not obj: pks = None elif isinstance(obj, Organization): pks = Location.objects.filter(located__organization=obj).values_list('pk', flat=True) elif isinstance(obj, Person): pks = [obj.location.pk] if obj.location else [] pks += Location.objects.filter(located__organization__members=obj).values_list('pk', flat=True) else: pks = None return generic_inlineformset_factory(Contact, form=make_contact_form(pks, self.admin_site, request))
def testGenericInlineFormset(self): EpisodeMediaFormSet = generic_inlineformset_factory( Media, can_delete=False, exclude=["description", "keywords"], extra=3 ) e = Episode.objects.get(name="This Week in Django") # Works with no queryset formset = EpisodeMediaFormSet(instance=e) self.assertEqual(len(formset.forms), 5) self.assertHTMLEqual( formset.forms[0].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-0-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-0-url" type="url" name="generic_inline_admin-media-content_type-object_id-0-url" value="http://example.com/podcast.mp3" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-0-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-0-id" /></p>' % self.mp3_media_pk, ) self.assertHTMLEqual( formset.forms[1].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-1-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-1-url" type="url" name="generic_inline_admin-media-content_type-object_id-1-url" value="http://example.com/logo.png" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-1-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-1-id" /></p>' % self.png_media_pk, ) self.assertHTMLEqual( formset.forms[2].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-2-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-2-url" type="url" name="generic_inline_admin-media-content_type-object_id-2-url" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-2-id" id="id_generic_inline_admin-media-content_type-object_id-2-id" /></p>', ) # A queryset can be used to alter display ordering formset = EpisodeMediaFormSet(instance=e, queryset=Media.objects.order_by("url")) self.assertEqual(len(formset.forms), 5) self.assertHTMLEqual( formset.forms[0].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-0-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-0-url" type="url" name="generic_inline_admin-media-content_type-object_id-0-url" value="http://example.com/logo.png" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-0-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-0-id" /></p>' % self.png_media_pk, ) self.assertHTMLEqual( formset.forms[1].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-1-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-1-url" type="url" name="generic_inline_admin-media-content_type-object_id-1-url" value="http://example.com/podcast.mp3" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-1-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-1-id" /></p>' % self.mp3_media_pk, ) self.assertHTMLEqual( formset.forms[2].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-2-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-2-url" type="url" name="generic_inline_admin-media-content_type-object_id-2-url" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-2-id" id="id_generic_inline_admin-media-content_type-object_id-2-id" /></p>', ) # Works with a queryset that omits items formset = EpisodeMediaFormSet(instance=e, queryset=Media.objects.filter(url__endswith=".png")) self.assertEqual(len(formset.forms), 4) self.assertHTMLEqual( formset.forms[0].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-0-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-0-url" type="url" name="generic_inline_admin-media-content_type-object_id-0-url" value="http://example.com/logo.png" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-0-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-0-id" /></p>' % self.png_media_pk, ) self.assertHTMLEqual( formset.forms[1].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-1-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-1-url" type="url" name="generic_inline_admin-media-content_type-object_id-1-url" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-1-id" id="id_generic_inline_admin-media-content_type-object_id-1-id" /></p>', )
def editar_aporte(request, aporte_id): aporte = get_object_or_404(Aportes, id=aporte_id) AporteImgFormSet = generic_inlineformset_factory(Imagen, extra=5, max_num=5) AporteDocuFormSet = generic_inlineformset_factory(Documentos, extra=5, max_num=5) AporteVideoFormSet = generic_inlineformset_factory(Videos, extra=5, max_num=5) AporteAudioFormSet = generic_inlineformset_factory(Audios, extra=5, max_num=5) form2 = AporteImgFormSet(instance=aporte) form3 = AporteDocuFormSet(instance=aporte) form4 = AporteVideoFormSet(instance=aporte) form5 = AporteAudioFormSet(instance=aporte) if not aporte.user == request.user and not request.user.is_superuser: return HttpResponse("Usted no puede editar este Foro") if request.method == "POST": form = AporteForm(request.POST, instance=aporte) form2 = AporteImgFormSet(data=request.POST, files=request.FILES, instance=aporte) form3 = AporteDocuFormSet(data=request.POST, files=request.FILES, instance=aporte) form4 = AporteVideoFormSet(data=request.POST, files=request.FILES, instance=aporte) form5 = AporteAudioFormSet(data=request.POST, files=request.FILES, instance=aporte) if form.is_valid() and form2.is_valid() and form3.is_valid() and form4.is_valid() and form5.is_valid(): form_uncommited = form.save(commit=False) form_uncommited.contraparte = request.user form_uncommited.save() form2.save() form3.save() form4.save() form5.save() return HttpResponseRedirect("/foros") else: form = AporteForm(instance=aporte) form2 = AporteImgFormSet(instance=aporte) form3 = AporteDocuFormSet(instance=aporte) form4 = AporteVideoFormSet(instance=aporte) form5 = AporteAudioFormSet(instance=aporte) return render_to_response("foros/editar_aporte.html", RequestContext(request, locals()))
def testGenericInlineFormset(self): EpisodeMediaFormSet = generic_inlineformset_factory( Media, can_delete=False, exclude=['description', 'keywords'], extra=3) e = Episode.objects.get(name='This Week in Django') # Works with no queryset formset = EpisodeMediaFormSet(instance=e) self.assertEqual(len(formset.forms), 5) self.assertHTMLEqual( formset.forms[0].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-0-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-0-url" type="text" name="generic_inline_admin-media-content_type-object_id-0-url" value="http://example.com/podcast.mp3" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-0-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-0-id" /></p>' % self.mp3_media_pk) self.assertHTMLEqual( formset.forms[1].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-1-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-1-url" type="text" name="generic_inline_admin-media-content_type-object_id-1-url" value="http://example.com/logo.png" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-1-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-1-id" /></p>' % self.png_media_pk) self.assertHTMLEqual( formset.forms[2].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-2-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-2-url" type="text" name="generic_inline_admin-media-content_type-object_id-2-url" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-2-id" id="id_generic_inline_admin-media-content_type-object_id-2-id" /></p>' ) # A queryset can be used to alter display ordering formset = EpisodeMediaFormSet(instance=e, queryset=Media.objects.order_by('url')) self.assertEqual(len(formset.forms), 5) self.assertHTMLEqual( formset.forms[0].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-0-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-0-url" type="text" name="generic_inline_admin-media-content_type-object_id-0-url" value="http://example.com/logo.png" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-0-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-0-id" /></p>' % self.png_media_pk) self.assertHTMLEqual( formset.forms[1].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-1-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-1-url" type="text" name="generic_inline_admin-media-content_type-object_id-1-url" value="http://example.com/podcast.mp3" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-1-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-1-id" /></p>' % self.mp3_media_pk) self.assertHTMLEqual( formset.forms[2].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-2-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-2-url" type="text" name="generic_inline_admin-media-content_type-object_id-2-url" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-2-id" id="id_generic_inline_admin-media-content_type-object_id-2-id" /></p>' ) # Works with a queryset that omits items formset = EpisodeMediaFormSet( instance=e, queryset=Media.objects.filter(url__endswith=".png")) self.assertEqual(len(formset.forms), 4) self.assertHTMLEqual( formset.forms[0].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-0-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-0-url" type="text" name="generic_inline_admin-media-content_type-object_id-0-url" value="http://example.com/logo.png" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-0-id" value="%s" id="id_generic_inline_admin-media-content_type-object_id-0-id" /></p>' % self.png_media_pk) self.assertHTMLEqual( formset.forms[1].as_p(), '<p><label for="id_generic_inline_admin-media-content_type-object_id-1-url">Url:</label> <input id="id_generic_inline_admin-media-content_type-object_id-1-url" type="text" name="generic_inline_admin-media-content_type-object_id-1-url" maxlength="200" /><input type="hidden" name="generic_inline_admin-media-content_type-object_id-1-id" id="id_generic_inline_admin-media-content_type-object_id-1-id" /></p>' )
def editar_foro(request, id): foro = get_object_or_404(Foros, id=id) ForoImgFormSet = generic_inlineformset_factory(Imagen, extra=5, max_num=5) ForoDocuFormSet = generic_inlineformset_factory(Documentos, extra=5, max_num=5) ForoVideoFormSet = generic_inlineformset_factory(Videos, extra=5, max_num=5) ForoAudioFormSet = generic_inlineformset_factory(Audios, extra=5, max_num=5) form2 = ForoImgFormSet(instance=foro) form3 = ForoDocuFormSet(instance=foro) form4 = ForoVideoFormSet(instance=foro) form5 = ForoAudioFormSet(instance=foro) if not foro.contraparte == request.user and not request.user.is_superuser: return HttpResponse("Usted no puede editar este Foro") if request.method == "POST": form = ForosForm(request.POST, instance=foro) form2 = ForoImgFormSet(data=request.POST, files=request.FILES, instance=foro) form3 = ForoDocuFormSet(data=request.POST, files=request.FILES, instance=foro) form4 = ForoVideoFormSet(data=request.POST, files=request.FILES, instance=foro) form5 = ForoAudioFormSet(data=request.POST, files=request.FILES, instance=foro) if form.is_valid() and form2.is_valid() and form3.is_valid() and form4.is_valid() and form5.is_valid(): form_uncommited = form.save(commit=False) form_uncommited.contraparte = request.user form_uncommited.save() form2.save() form3.save() form4.save() form5.save() return HttpResponseRedirect("/foros/ver/" + id + "/?b=editado") else: form = ForosForm(instance=foro) form2 = ForoImgFormSet(instance=foro) form3 = ForoDocuFormSet(instance=foro) form4 = ForoVideoFormSet(instance=foro) form5 = ForoAudioFormSet(instance=foro) return render_to_response("foros/crear_foro.html", RequestContext(request, locals()))
def get(self, request, requestion): DocumentFormset = generic_inlineformset_factory(EvidienceDocument, form=DocumentForm, exclude=['confirmed', ], extra=1) # нужны только документы для льгот formset = DocumentFormset( instance=requestion, queryset=EvidienceDocument.objects.filter( template__destination=BENEFIT_DOCUMENT)) return self.render_to_response({ 'formset': formset, 'requestion': requestion, 'confirmed': EvidienceDocument.objects.documents_for_object( requestion).confirmed(), })
def get_tag_formset(obj=None, data=None): if obj and Tag.get_tags(obj): extra = 0 else: extra = 1 Formset = generic.generic_inlineformset_factory( Tag, form=TagInlineForm, formset=TagInlineFormset, extra=extra, ) formset = Formset(instance=obj, data=data) return formset
def generate_bird_inline_form(username, nbr_extra=1): # Generic formset to bind BirdList to Lablog from django.contrib.contenttypes.generic import generic_inlineformset_factory from birdlist.models import Activity from birdlist.forms.activity_forms import ActivityFormAddExperimentFromLablog GenericFormSet = generic_inlineformset_factory( Activity, form=ActivityFormAddExperimentFromLablog, extra=nbr_extra, can_delete=False) return GenericFormSet
def _create_generic_inlineformsets(post_data=None, object=None): """Generate formsets for all generically related models.""" generic_models = [EmailAddress, StreetAddress, PhoneNumber, Website, IMAccount, Note] formset_classes = [] for generic_model in generic_models: formset_classes.append(generic_inlineformset_factory( generic_model, extra=1, exclude=('date_added', 'date_modified'))) formsets = [] for formset_class in formset_classes: formsets.append(formset_class(post_data, instance=object)) return formsets
def test_generic_inline_formsets_initial(self): """ Test for #17927 Initial values support for BaseGenericInlineFormSet. """ quartz = Mineral.objects.create(name="Quartz", hardness=7) GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1) ctype = ContentType.objects.get_for_model(quartz) initial_data = [{ 'tag': 'lizard', 'content_type': ctype.pk, 'object_id': quartz.pk, }] formset = GenericFormSet(initial=initial_data) self.assertEqual(formset.forms[0].initial, initial_data[0])
def inline_permissions_form_factory(model, extra=1): """ Returns a modelformset for ObjectPermission linked to <model> InlinePermissionForm = inline_permissions_form_factory(MyModel) # myobject is an instance of MyModel form = MyModelForm(instance=myobject) formset = InlinePermissionForm(instance=myobject) """ def formfield_callback(field, *args): ct = ContentType.objects.get_for_model(model) if field.name == 'permission': return field.formfield( queryset=Permission.objects.filter(content_type=ct)) return field.formfield() return generic_inlineformset_factory( ObjectPermission, extra=extra, formfield_callback=formfield_callback)
def get_formset(self, request, obj=None, **kwargs): if not obj: pks = None elif isinstance(obj, Organization): pks = Location.objects.filter( located__organization=obj).values_list('pk', flat=True) elif isinstance(obj, Person): pks = [obj.location.pk] if obj.location else [] pks += Location.objects.filter( located__organization__members=obj).values_list('pk', flat=True) else: pks = None return generic_inlineformset_factory(Contact, form=make_contact_form( pks, self.admin_site, request))
def test_save_new_for_concrete(self): Formset = generic_inlineformset_factory(ForProxyModelModel, fields='__all__', for_concrete_model=True) instance = ProxyRelatedModel.objects.create() data = { 'form-TOTAL_FORMS': '1', 'form-INITIAL_FORMS': '0', 'form-MAX_NUM_FORMS': '', 'form-0-title': 'foo', } formset = Formset(data, instance=instance, prefix='form') self.assertTrue(formset.is_valid()) new_obj, = formset.save() self.assertNotIsInstance(new_obj.obj, ProxyRelatedModel)
def post(self, request, requestion): DocumentFormset = generic_inlineformset_factory(EvidienceDocument, form=DocumentForm, exclude=['confirmed', ], extra=1) formset = DocumentFormset(request.POST, instance=requestion, queryset=EvidienceDocument.objects.filter( template__destination=BENEFIT_DOCUMENT)) if formset.is_valid(): formset.save() messages.info(request, u'''Документы были изменены''') return HttpResponseRedirect(reverse('account_requestion_info', kwargs={'requestion_id': requestion.id})) else: return self.render_to_response({ 'formset': formset, 'requestion': requestion, 'confirmed': requestion.evidience_documents().confirmed(), })
def formset_factory(self): """ Returns the keyword arguments for calling the formset factory """ kwargs = { 'formset': self.formset_class, 'extra': self.extra, 'max_num': self.max_num, 'can_order': self.can_order, 'can_delete': self.can_delete, 'fields': self.fields, 'exclude': self.exclude, 'formfield_callback': self.formfield_callback, 'ct_field': self.ct_field, 'fk_field': self.ct_fk_field, } if self.form_class: kwargs['form'] = self.form_class return generic_inlineformset_factory(self.inline_model, **kwargs)
def formset_factory(self): """ Returns the keyword arguments for calling the formset factory """ kwargs = { 'formset': self.formset_class, 'extra': self.extra, 'max_num': self.max_num, 'can_order': self.can_order, 'can_delete': self.can_delete, 'exclude': self.exclude, 'fields': self.fields, 'formfield_callback': self.formfield_callback, 'ct_field': self.ct_field, 'fk_field': self.ct_fk_field, } if self.form_class: kwargs['form'] = self.form_class return generic_inlineformset_factory(self.inline_model, **kwargs)
def get_formset(self, request, obj=None): setattr(self.form, '_magic_user', request.user) # magic variable passing to form setattr(self, '_magic_user', request.user) # magic variable if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, "max_num": self.max_num, "can_delete": True, "can_order": False, "fields": fields, } return generic_inlineformset_factory(self.model, **defaults)
def get_formset(self, request, obj=None): setattr(self.form, '_magic_user', request.user) # magic variable passing to form setattr(self, '_magic_user', request.user) # magic variable if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, "max_num": self.max_num, "can_delete": True, "can_order": False, "fields": fields, } return generic_inlineformset_factory(self.model, **defaults)
def get_formset(self, request, obj=None, **kwargs): if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields(request, obj)) exclude = exclude or None if not hasattr(self, 'ct_fk_field'): return super(cls, self).get_formset(request, obj, **kwargs) else: # TODO: # this code can be deleted if django fixes GenericInlineModelAdmin it's # get_formset signature so it looks like InlineModelAdmin defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, "can_delete": self.can_delete, "can_order": False, "fields": fields, "max_num": self.max_num, "exclude": exclude } defaults.update(kwargs) # the BaseGenericInlineFormSet does not work too well # with modified models, so use LocalizableGenericInlineFormSet. if self.formset is BaseGenericInlineFormSet \ or self.formset.__class__ is BaseGenericInlineFormSet: defaults['formset'] = LocalizableGenericInlineFormSet return generic_inlineformset_factory( self.model, **defaults)
def get_formset(self, request, obj=None, **kwargs): if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) else: fields = None if self.exclude is None: exclude = [] else: exclude = list(self.exclude) exclude.extend(self.get_readonly_fields(request, obj)) exclude = exclude or None if not hasattr(self, 'ct_fk_field'): return super(cls, self).get_formset(request, obj, **kwargs) else: # TODO: # this code can be deleted if django fixes GenericInlineModelAdmin it's # get_formset signature so it looks like InlineModelAdmin defaults = { "ct_field": self.ct_field, "fk_field": self.ct_fk_field, "form": self.form, "formfield_callback": self.formfield_for_dbfield, "formset": self.formset, "extra": self.extra, "can_delete": self.can_delete, "can_order": False, "fields": fields, "max_num": self.max_num, "exclude": exclude } defaults.update(kwargs) # the BaseGenericInlineFormSet does not work too well # with modified models, so use LocalizableGenericInlineFormSet. if self.formset is BaseGenericInlineFormSet \ or self.formset.__class__ is BaseGenericInlineFormSet: defaults['formset'] = LocalizableGenericInlineFormSet return generic_inlineformset_factory(self.model, **defaults)
def create_update_project(request, object_type, edit_type, object_id=None, embed=False, template='create_update_group.html', base_template='twitter/base.html'): ''' This view creates and updates permissions for views and projects. Parameters: object_type: valid values are 'projects' or 'views' edit_type: valid values are 'create', 'update' or 'update-sharing' object_id: Integer -- primary key to a Project or View object embed: Whether or not it's an iframe: In addition, this view also processes a UserAuthorityObject formset, which applies user-level permissions to a particular project. This form uses the contenttypes framework (so object-user permissions can be arbitrarily assigned to more than one object). Helpful links here: * http://hdknr.github.com/docs/django/modules/django/contrib/contenttypes/generic.html * http://weispeaks.wordpress.com/2009/11/04/overcoming-limitations-in-django-using-generic-foreign-keys/ ''' from django.forms import models, formsets r = request.POST or request.GET ModelClass = Form_LU.get(object_type).get('model_class') GroupForm = Form_LU.get(object_type).get('forms').get(edit_type) if embed: base_template = 'twitter/iframe.html' prefix = 'groupuser' group_object = None no_shared_users = True extra = 0 #query for model object to update (if object_id is specified): try: if object_id is not None: group_object = ModelClass.objects.get(id=object_id) no_shared_users = len(group_object.users.all()) == 0 except ModelClass.DoesNotExist: pass if no_shared_users == True: extra = 1 UserAuthorityObjectFormset = generic.generic_inlineformset_factory( UserAuthorityObject, form=UserAuthorityObjectForm, formset=generic.BaseGenericInlineFormSet, ct_field="content_type", fk_field="object_id", extra=extra, can_delete=True) extras = {} if request.method == 'POST': form = GroupForm(request.POST, instance=group_object) formset = UserAuthorityObjectFormset(request.POST, instance=group_object, prefix=prefix) if formset.is_valid() and form.is_valid(): from django.contrib.contenttypes.models import ContentType # ---------------------------- # PROJECT FORM POST-PROCESSING # ---------------------------- instance = form.instance instance.time_stamp = datetime.now() #determine ContentType: app_label = instance._meta.app_label model_name = ModelClass.__name__.lower() content_type = ContentType.objects.get(app_label=app_label, model=model_name) if instance.access_authority.id != 2: instance.access_key = None if instance.pk is None: instance.owner = request.user is_new = True else: orig = ModelClass.objects.get(id=object_id) if orig.owner != instance.owner: # ensure there's a UserAuthorityObject entry for the old owner for # this object: is_object_user = len(UserAuthorityObject.objects .filter(user=orig.owner) .filter(content_type=content_type) .filter(object_id=object_id)) == 1 if not is_object_user: previous_owner = UserAuthorityObject() previous_owner.user = orig.owner previous_owner.content_type = content_type previous_owner.object_id = orig.id previous_owner.authority = UserAuthority.objects.get(id=3) previous_owner.granted_by = request.user previous_owner.time_stamp = datetime.now() previous_owner.save() instance.save() group_object = instance # ----------------------------------- # PROJECTUSER FORM(S) POST-PROCESSING # ----------------------------------- marked_for_delete = formset.deleted_forms for form in formset.forms: if form.has_changed(): instance = form.instance if not instance in formset.deleted_forms: instance.granted_by = request.user instance.time_stamp = datetime.now() instance.content_type = content_type instance.object_id = group_object.id instance.save() if len(marked_for_delete) > 0: formset.save() # If success, determine which URL to redirect to (either update project or # update permissions) so that form doesn't post twice: suffix = '' if embed: suffix = 'embed/' url = '/profile/%s/%s/%s%s/?success=true' % ( object_type, edit_type.replace('create', 'update'), suffix, group_object.id ) return HttpResponseRedirect(url) else: extras.update({ 'success': False, 'message': 'There were errors when updating the %s information. \ Please review message(s) below.' % group_object.model_name }) else: form = GroupForm(instance=group_object) formset = UserAuthorityObjectFormset(instance=group_object, prefix=prefix) extras.update({ 'form': form, 'no_users': str(no_shared_users).lower(), 'formset': formset, 'prefix': prefix, 'group_object': group_object, 'object_name': ModelClass.__name__, 'parent_id': object_id, 'show_hidden_fields': True, 'base_template': base_template, 'embed': embed }) if group_object: extras.update({ 'owner': group_object.owner.username }) if (r.get('success', 'false') in ['1', 'true', 'True']): extras.update({ 'success': True, 'message': 'The %s information was successfully updated.' % group_object.model_name }) return render_to_response(template, extras, context_instance=RequestContext(request))
obj.cooperative_center_code = user_cc # save modifications obj.save() return obj class Meta: model = Event exclude = ('cooperative_center_code',) class TypeForm(forms.ModelForm): class Meta: model = EventType fields = '__all__' # definition of inline formsets DescriptorFormSet = generic_inlineformset_factory(Descriptor, formset=DescriptorRequired, can_delete=True, exclude=['primary'], extra=1) KeywordFormSet = generic_inlineformset_factory(Keyword, can_delete=True, extra=1) ResourceThematicFormSet = generic_inlineformset_factory(ResourceThematic, formset=ResourceThematicRequired, can_delete=True, extra=1) TypeTranslationFormSet = inlineformset_factory(EventType, EventTypeLocal, can_delete=True, fields='__all__', extra=1)
parent_model = Artist formset = BaseArtistReleationFormSet fields = ( 'url', 'service', ) def __init__(self, *args, **kwargs): super(BaseArtistReleationForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instance', None) if instance and instance.id: self.fields['service'].widget.attrs['readonly'] = True def clean_service(self): return self.instance.service service = forms.CharField(label='', widget=ReadOnlyIconField(), required=False) url = forms.URLField(label=_('Website / URL'), required=False) # Compose Formsets ArtistRelationFormSet = generic_inlineformset_factory( Relation, form=BaseArtistReleationForm, formset=BaseArtistReleationFormSet, extra=3, exclude=('action', ), can_delete=True)
if not type: message = _( "The type field is mandatory when title or ISSN fields value are not empty" ) if message: self.add_error(field, message) return data # Definition of inline formsets DescriptorFormSet = generic_inlineformset_factory(Descriptor, formset=DescriptorRequired, can_delete=True, extra=1, exclude=('primary', )) KeywordFormSet = generic_inlineformset_factory(Keyword, can_delete=True, extra=1) OnlineResourcesFormSet = inlineformset_factory(Title, OnlineResources, form=OnlineResourcesForm, can_delete=True, extra=1) AuditFormSet = inlineformset_factory(Title, Audit, form=AuditForm, fields='__all__', can_delete=True,
def test_generic_inlineformset_factory(self): Formset = generic_inlineformset_factory(TaggedItem, TaggedItemForm) form = Formset().forms[0] self.assertTrue(isinstance(form['tag'].field.widget, CustomWidget))
def photos_formset(self): PhotoFormset = generic.generic_inlineformset_factory(Photo, extra=1) return PhotoFormset(instance=self)
if data.size > int(settings.MAX_UPLOAD_SIZE): raise forms.ValidationError( _('Maximum allowed size %(max)s. Current filesize %(size)s') % ({ 'max': filesizeformat(settings.MAX_UPLOAD_SIZE), 'size': filesizeformat(data.size) })) return data # definition of inline formsets DescriptorFormSet = generic_inlineformset_factory(Descriptor, formset=DescriptorRequired, exclude=['primary'], can_delete=True, extra=1) KeywordFormSet = generic_inlineformset_factory(Keyword, fields='__all__', can_delete=True, extra=1) ResourceThematicFormSet = generic_inlineformset_factory( ResourceThematic, formset=ResourceThematicRequired, can_delete=True, extra=1) TypeTranslationFormSet = inlineformset_factory(MediaType,
from django.contrib import admin from models import * from django.contrib.contenttypes.generic import GenericTabularInline, generic_inlineformset_factory ImagemGenericFormSet = generic_inlineformset_factory(Image, extra=1) class ImagemInline(GenericTabularInline): model = Image extra = 1 ct_field_name = 'content_type' id_field_name = 'object_id' ##################################################### class CollectionAdmin(admin.ModelAdmin): list_display = ('col_itemname', 'image_thumb') inlines = [ImagemInline] class Media: js = ['/static/js/geoposition.js'] ##################################################### admin.site.register(Collection, CollectionAdmin)
def testGenericInlineFormsetFactory(self): # Regression test for #10522. inline_formset = generic_inlineformset_factory(Media, exclude=('url',))