diff --git a/cookbook/templates/meal_plan.html b/cookbook/templates/meal_plan.html index 4e0215166..8cff0ecf7 100644 --- a/cookbook/templates/meal_plan.html +++ b/cookbook/templates/meal_plan.html @@ -15,9 +15,11 @@
-
+ + {% csrf_token %}
@@ -27,50 +29,30 @@
- - - - - - - - - - - - - - - - - - - + {% for d in days %} + + {% endfor %} + {% for plan_key, plan_value in plan.items %} - - - - + + + + + {% for day_key, days_value in plan_value.days.items %} + + {% endfor %} + + {% endfor %} - - - - - - - - - - - - - - -
???????
{% trans 'Breakfast' %}
{{ d }}
{% trans 'Lunch' %}
{{ plan_value.type_name }}
+ {% for mp in days_value %} + {{ mp.recipe.name }}
+ {% endfor %} +
{% trans 'Dinner' %}
{% trans 'Other' %}
+ {% include 'include/recipe_open_modal.html' %} {% endblock %} \ No newline at end of file diff --git a/cookbook/views/new.py b/cookbook/views/new.py index 520f04085..459232195 100644 --- a/cookbook/views/new.py +++ b/cookbook/views/new.py @@ -121,7 +121,7 @@ class MealPlanCreate(LoginRequiredMixin, CreateView): obj = form.save(commit=False) obj.user = self.request.user obj.save() - return HttpResponseRedirect(self.get_success_url()) + return HttpResponseRedirect(reverse('view_plan')) def get_context_data(self, **kwargs): context = super(MealPlanCreate, self).get_context_data(**kwargs) diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 59b405b90..94ab6ad6e 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -1,3 +1,6 @@ +import copy +from datetime import datetime, timedelta + from django.contrib import messages from django.contrib.auth.decorators import login_required from django.shortcuts import render, get_object_or_404 @@ -69,7 +72,42 @@ def books(request): return render(request, 'books.html', {'book_list': book_list}) +def get_start_end_from_week(p_year, p_week): + first_day_of_week = datetime.strptime(f'{p_year}-W{int(p_week) - 1}-1', "%Y-W%W-%w").date() + last_day_of_week = first_day_of_week + timedelta(days=6.9) + return first_day_of_week, last_day_of_week + + +def get_days_from_week(start, end): + delta = end - start + days = [] + for i in range(delta.days + 1): + days.append(start + timedelta(days=i)) + return days + + @login_required() def meal_plan(request): - form = MealPlanForm() - return render(request, 'meal_plan.html', {'form': form}) + js_week = datetime.now().strftime("%Y-W%V") + if request.method == "POST": + js_week = request.POST['week'] + + year, week = js_week.split('-') + first_day, last_day = get_start_end_from_week(year, week.replace('W', '')) + + days = get_days_from_week(first_day, last_day) + days_dict = {} + for d in days: + days_dict[d] = [] + + plan = {} + for t in MealPlan.MEAL_TYPES: + plan[t[0]] = {'type_name': t[1], 'days': copy.deepcopy(days_dict)} + + for d in days: + plan_day = MealPlan.objects.filter(date=d).all() + for p in plan_day: + plan[p.meal]['days'][d].append(p) + + print(plan) + return render(request, 'meal_plan.html', {'js_week': js_week, 'plan': plan, 'days': days})