Пример #1
0
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))