def calc_injection(request): """Calculates injection dosages based on weight. GET parameters: weight: weight in lbs Contxt: calculated dose rounded to 3 decimal places """ meds = Injection.objects.all() rx = dict() # default displayed dosage of 0.0 mLs for med in meds: rx[med] = 0.0 rx_ordered = OrderedDict(sorted(rx.items(), key=lambda t: t[0].name)) if request.method == 'GET' and request.is_ajax(): form = CalcInjForm(data=request.GET) if form.is_valid(): weight = float(request.GET['weight']) for med in meds: rx_ordered[med] = round(med.factor * weight, 3) return render(request, 'calc/injection.html', {'rx': rx_ordered, 'form': CalcInjForm(), 'navbar': 'calc'})
def test_form_rejects_non_numeric_input(self): form = CalcInjForm(data={'weight': 'a string'}) self.assertFalse(form.is_valid()) self.assertEqual(form.errors['weight'], [INVALID_INPUT_ERROR])
def test_form_rejects_empty_string(self): form = CalcInjForm(data={'weight': ''}) self.assertFalse(form.is_valid())