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)