def form(request, obj=False): """ covenant form, update or save new obj: Covenant.id """ tab = 'form' # new register # all services service_list = Service.objects.filter( active=True, organization=request.user.get_profile().org_active) if obj: # update register tab = 'edit' # edit register obj = get_object_or_404(Covenant, pk=obj) # individual services if obj.charge > 1: service_list = Service.objects.filter( is_group=False, active=True, organization=request.user.get_profile().org_active) if request.POST: # new if not obj: form = CovenantForm(request.POST) else: form = CovenantForm(request.POST, instance=obj) if form.is_valid(): # update or new obj = form.save(commit=False) # A org is required obj.organization = request.user.get_profile().org_active obj.save() # save before add services # add services obj.service_set.clear() # remove all for x in request.POST.getlist('services'): # add selected obj.service_set.add(Service.objects.get(pk=x)) # payment way obj.payment_way.clear() # remove all for x in request.POST.getlist('payment_way'): obj.payment_way.add(PaymentWay.objects.get(pk=x)) obj.save() # update messages.success(request, _(u'Salvo com sucesso!')) return HttpResponseRedirect('/covenant/%s/' % obj.id) else: messages.error(request, _(u'Erro no preenchimento do campo')) # mount form else: if obj: form = CovenantForm(instance=obj) else: form = CovenantForm() obj = Covenant() return render_to_response('covenant/covenant_form.html', { 'form': form, 'obj': obj, 'tab': tab, 'category': CATEGORY, 'charge': CHARGE, 'service_list': service_list, }, context_instance=RequestContext(request))