Exemple #1
0
def farmer_new(request):
    actor = request.user.get_profile()
    agent = actor.as_agent()
    if request.POST:
        form = forms.FarmerForm(request.POST)
        if form.is_valid():
            # msisdn = form.cleaned_data['msisdn']

            msisdns = [
                form.cleaned_data['msisdn1'],
                form.cleaned_data['msisdn2'],
                form.cleaned_data['msisdn3'],
            ]
            [msisdn1, msisdn2, msisdn3] = msisdns

            name = form.cleaned_data['name']
            surname = form.cleaned_data['surname']
            id_number = form.cleaned_data['id_number']
            markets = form.cleaned_data['markets']
            matched_farmer = form.cleaned_data['matched_farmer']
            gender = form.cleaned_data["gender"]

            if not id_number:
                id_number = None

            if matched_farmer:
                messages.info(request, 'Farmer added.')
                if agent:
                    for market in markets:
                        matched_farmer.operates_at(market, agent)
                farmer_url = reverse('fncs:farmer_edit', kwargs={
                    'farmer_pk': matched_farmer.pk,
                })
                return redirect(farmer_url)

            possible_matches = Farmer.match(msisdns=msisdns,
                                            id_number=id_number)
            if possible_matches:
                form.fields['matched_farmer'].queryset = possible_matches
                messages.info(request, "This farmer possibly already exists. "
                              "Please review the list of matched farmers to "
                              "avoid double registrations")
            else:
                farmer = Farmer.create(msisdn1, name, surname,
                                       id_number=id_number, gender=gender)
                farmer.actor.update_msisdns(msisdns)
                if agent:
                    for market in markets:
                        farmer.operates_at(market, agent)

                messages.success(request, "Farmer Created")
                return HttpResponseRedirect(
                    reverse("fncs:farmer_location_search", kwargs={
                            'farmer_pk': farmer.pk}))
    else:
        form = forms.FarmerForm()
        form.fields['matched_farmer'].widget = HiddenInput()
    return render_to_response('farmers/new.html', {
        'form': form
    }, context_instance=RequestContext(request))
 def match(*args, **kw):
     return sorted(Farmer.match(*args, **kw),
                   key=lambda x: x.actor.user.first_name)