def create(request): already_assigned_meals = None if request.method == "POST": form = ListCreateForm(request.POST) if form.is_valid(): shopping_list = None try: from_date = form.cleaned_data["from_date"] to_date = form.cleaned_data["to_date"] date = form.cleaned_data["date"] shopping_list = ShoppingList.create_for_range(from_date, to_date) shopping_list.date = date shopping_list.save() except ShoppingList.RangeNotEmptyException as e: override_hash = hashlib.sha1("%s%s%s" % (date.ctime(), from_date.ctime(), to_date.ctime())).hexdigest() if form.cleaned_data["override"] == override_hash: shopping_list = ShoppingList.create_for_range(from_date, to_date, override=True) shopping_list.date = date shopping_list.save() else: form.data = form.data.copy() form.data["override"] = override_hash already_assigned_meals = e[0].select_related("shopping_list") if shopping_list: messages.success(request, "Shopping list created updated.") return redirect(shopping_list) else: form = ListCreateForm() dict = {"form": form, "already_assigned_meals": already_assigned_meals} return render_to_response("lists/create.html", dict, context_instance=RequestContext(request))
def test_empty_range_creation(self): fro = datetime.date(2010, 9, 1) to = datetime.date(2010, 9, 30) l = ShoppingList.create_for_range(fro, to) meals = l.meals.all() self.assertEqual(meals.count(), 60) for meal in meals: meal.full_clean() l.full_clean()
def test_non_empty_range_creation_with_override(self): from planning.models import Meal fro = datetime.date(2010, 9, 1) to = datetime.date(2010, 9, 3) preexistent_meal = Meal.objects.create(date=datetime.date(2010, 9, 2), time_of_day='L', persons=1) l = ShoppingList.create_for_range(fro, to, override=True) meals = l.meals.all() self.assertEqual(meals.count(), 6) preexistent_meal = Meal.objects.get(pk= preexistent_meal.pk) # Update cache self.assertEqual(preexistent_meal.shopping_list, l) for meal in meals: meal.full_clean() l.full_clean()
def test_empty_range_creation_with_no_dinner_on_last_day(self): date = datetime.date(2010, 9, 1) l = ShoppingList.create_for_range(date, date, moment_to='L') meal = l.meals.get() self.assertEqual(meal.date, date) self.assertEqual(meal.time_of_day, 'L')
def test_empty_range_creation_with_no_lunch_on_first_day(self): date = datetime.date(2010, 9, 1) l = ShoppingList.create_for_range(date, date, moment_from='D') meal = l.meals.get() self.assertEqual(meal.date, date) self.assertEqual(meal.time_of_day, 'D')