|
|
|
@ -15,6 +15,7 @@ from django.urls import reverse |
|
|
|
|
from food_planner.forms import ProfileForm |
|
|
|
|
from food_planner.forms import UserForm |
|
|
|
|
from food_planner.models import MealPlan |
|
|
|
|
from food_planner.models import Profile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def index(request) -> HttpResponse: |
|
|
|
@ -30,16 +31,65 @@ def index(request) -> HttpResponse: |
|
|
|
|
return render(request, template_name='food_planner/landing.html', context=context) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def mealplan(request, user_id: int, mealplan: str) -> HttpResponse: |
|
|
|
|
def mealplan(request, user_id: int, mealplan_title: str) -> HttpResponse: |
|
|
|
|
mealplan_obj = MealPlan.objects.get(author_id=user_id, name=mealplan_title) |
|
|
|
|
# calculate calories for each day, TODO: extract later |
|
|
|
|
profile = Profile.objects.get(user=request.user) |
|
|
|
|
calories_required = profile.daily_calories_demand |
|
|
|
|
|
|
|
|
|
calories_monday = get_calories_sum(mealplan_obj, 'monday') |
|
|
|
|
calories_monday_percentage = calories_monday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
calories_tuesday = get_calories_sum(mealplan_obj, 'tuesday') |
|
|
|
|
calories_tuesday_percentage = calories_tuesday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
calories_wednesday = get_calories_sum(mealplan_obj, 'wednesday') |
|
|
|
|
calories_wednesday_percentage = calories_wednesday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
calories_thursday = get_calories_sum(mealplan_obj, 'thursday') |
|
|
|
|
calories_thursday_percentage = calories_thursday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
calories_friday = get_calories_sum(mealplan_obj, 'friday') |
|
|
|
|
calories_friday_percentage = calories_friday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
calories_saturday = get_calories_sum(mealplan_obj, 'saturday') |
|
|
|
|
calories_saturday_percentage = calories_saturday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
calories_sunday = get_calories_sum(mealplan_obj, 'sunday') |
|
|
|
|
calories_sunday_percentage = calories_sunday / calories_required * 100 |
|
|
|
|
|
|
|
|
|
context = { |
|
|
|
|
'site': { |
|
|
|
|
'title': 'Food planner' |
|
|
|
|
}, |
|
|
|
|
'mealplan': MealPlan.objects.get(author_id=user_id, name=mealplan) |
|
|
|
|
'mealplan': mealplan_obj, |
|
|
|
|
'calories_monday': f"{calories_monday_percentage:.2f}", |
|
|
|
|
'calories_tuesday': f"{calories_tuesday_percentage:.2f}", |
|
|
|
|
'calories_wednesday': f"{calories_wednesday_percentage:.2f}", |
|
|
|
|
'calories_thursday': f"{calories_thursday_percentage:.2f}", |
|
|
|
|
'calories_friday': f"{calories_friday_percentage:.2f}", |
|
|
|
|
'calories_saturday': f"{calories_saturday_percentage:.2f}", |
|
|
|
|
'calories_sunday': f"{calories_sunday_percentage:.2f}", |
|
|
|
|
} |
|
|
|
|
return render(request, template_name='food_planner/mealplan.html', context=context) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_calories_sum(mealplan: MealPlan, weekday: str) -> float: |
|
|
|
|
calories_sum = 0 |
|
|
|
|
breakfast = mealplan.__getattribute__(weekday + '_breakfast') |
|
|
|
|
morning_snack = mealplan.__getattribute__(weekday + '_morning_snack') |
|
|
|
|
lunch = mealplan.__getattribute__(weekday + '_lunch') |
|
|
|
|
afternoon_snack = mealplan.__getattribute__(weekday + '_afternoon_snack') |
|
|
|
|
dinner = mealplan.__getattribute__(weekday + '_dinner') |
|
|
|
|
calories_sum += breakfast.calories if breakfast is not None else 0 |
|
|
|
|
calories_sum += morning_snack.calories if morning_snack is not None else 0 |
|
|
|
|
calories_sum += lunch.calories if lunch is not None else 0 |
|
|
|
|
calories_sum += afternoon_snack.calories if afternoon_snack is not None else 0 |
|
|
|
|
calories_sum += dinner.calories if dinner is not None else 0 |
|
|
|
|
|
|
|
|
|
return calories_sum |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@transaction.atomic |
|
|
|
|
def register(request) -> HttpResponse: |
|
|
|
|
if request.user.is_authenticated: |
|
|
|
|