def add_edit_for_model(request, model, model_slug, contact_slug=None, template='blcontact/includes/form.html'): """ Add/Edit contact """ model = get_model(*model.split('.')) model_object = get_object_or_404(model, slug=model_slug, members=request.user) model_type = ContentType.objects.get_for_model(model_object) if isinstance(model_object, Group): redirect_reverse = 'group-contact-detail' extra_context = {'group': model_object} elif isinstance(model_object, Project): redirect_reverse = 'project-contact-detail' extra_context = {'project': model_object} form = ContactForm(request.POST or None, instance=contact_slug and Contact.objects.get(slug__iexact=contact_slug, content_type__pk=model_type.id)) if request.method == "POST" and form.is_valid(): contact = form.save(model_object) return HttpResponseRedirect(reverse(redirect_reverse, kwargs = {'model_slug': model_slug, 'contact_slug': contact.slug})) extra_context['form'] = form return direct_to_template(request, template=template, extra_context=extra_context)
def add_edit(request, id=None): """ Add/Edit contact """ form = ContactForm(request.POST or None, instance=id and Contact.objects.get(pk=id)) if request.method == "POST" and form.is_valid(): contact = form.save() return HttpResponseRedirect(reverse('contact-detail', kwargs = {'id': contact.id, })) return direct_to_template(request, template='blcontact/includes/form.html', extra_context={'form': form,})