Example #1
0
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))
Example #2
0
    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>""")
Example #3
0
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()))
Example #4
0
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()))
Example #5
0
 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
Example #6
0
 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
Example #7
0
    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)
Example #8
0
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')
Example #9
0
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))
Example #10
0
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
Example #11
0
    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)
Example #12
0
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))
Example #13
0
 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
Example #14
0
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)
Example #16
0
    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)
Example #18
0
 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)
Example #19
0
    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")
Example #20
0
File: tests.py Project: sbj3/django
    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)
Example #21
0
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())
Example #22
0
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())
Example #23
0
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())
Example #24
0
 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)
Example #25
0
    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)
Example #27
0
 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))
Example #28
0
    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>',
        )
Example #29
0
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()))
Example #30
0
    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>'
        )
Example #31
0
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()))
Example #32
0
    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(),
        })
Example #33
0
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
Example #34
0
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
Example #35
0
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
Example #36
0
    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])
Example #37
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)
Example #38
0
 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))
Example #39
0
    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)
Example #40
0
    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(),
            })
Example #41
0
 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)
Example #43
0
 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)
Example #44
0
 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)
Example #45
0
            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)
Example #46
0
            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)
Example #47
0
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))
Example #48
0
                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)
Example #49
0
        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)
Example #50
0
            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,
Example #51
0
 def test_generic_inlineformset_factory(self):
     Formset = generic_inlineformset_factory(TaggedItem, TaggedItemForm)
     form = Formset().forms[0]
     self.assertTrue(isinstance(form['tag'].field.widget, CustomWidget))
Example #52
0
 def photos_formset(self):
     PhotoFormset = generic.generic_inlineformset_factory(Photo, extra=1)
     return PhotoFormset(instance=self)
Example #53
0
        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,
Example #54
0
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)
Example #55
0
 def testGenericInlineFormsetFactory(self):
     # Regression test for #10522.
     inline_formset = generic_inlineformset_factory(Media,
         exclude=('url',))