diff --git a/website/nutriform/admin.py b/website/nutriform/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..918645fc62d2a09b78eac1d4518f3186e42cd0a9 100644 --- a/website/nutriform/admin.py +++ b/website/nutriform/admin.py @@ -1,3 +1,6 @@ from django.contrib import admin +from .models import Menu, QuestionQuotid # Register your models here. +admin.site.register(Menu) +admin.site.register(QuestionQuotid) \ No newline at end of file diff --git a/website/nutriform/forms.py b/website/nutriform/forms.py index 69af16cb6e937d7d254eb202e1c74442a7c0dc6d..8284dff0fc68220ba5b649c435d766164a155e60 100644 --- a/website/nutriform/forms.py +++ b/website/nutriform/forms.py @@ -5,6 +5,8 @@ from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.core.exceptions import ValidationError import os +from .models import QuestionQuotid + class UserForm(UserCreationForm): class Meta: @@ -17,4 +19,18 @@ class questionnaireForm(forms.Form): type_sport = forms.CharField(max_length=50) eau = forms.IntegerField() maladie = forms.CharField(max_length=50) - poisd = forms.IntegerField() \ No newline at end of file + poisd = forms.IntegerField() + +class UserModifForm(forms.ModelForm): + + class Meta: + model = User + fields = ('username', 'first_name', 'last_name', 'email') + +class QuestionQuotidForm(forms.ModelForm): + nbh_activite = forms.IntegerField(min_value=0, label="nombre d'heures d'activité") + volume_eau = forms.IntegerField(min_value=0, label="volume d'eau bu ce jour") + + class Meta: + model = QuestionQuotid + fields = '__all__' \ No newline at end of file diff --git a/website/nutriform/migrations/0001_initial.py b/website/nutriform/migrations/0001_initial.py index 434aa7a766ffb63ffab6c34ab0dbd5e2d1f31443..ed098377316c5c14e6b6e35baa4a24e2f816e2f0 100644 --- a/website/nutriform/migrations/0001_initial.py +++ b/website/nutriform/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.2.6 on 2019-10-16 17:07 +# Generated by Django 2.2.6 on 2019-11-06 23:42 from django.db import migrations, models @@ -15,8 +15,30 @@ class Migration(migrations.Migration): name='Menu', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('nb_plat', models.IntegerField()), - ('entree', models.CharField(max_length=150)), + ('type_menu', models.CharField(choices=[('sante', 'santé'), ('perte', 'perte de poids'), ('prise', 'prise de masse'), ('cheat', 'cheat day')], max_length=5)), + ('nb_cal', models.PositiveIntegerField()), + ('entree', models.CharField(choices=[('SAL', 'salade'), ('SOP', 'soupe')], max_length=3)), + ('plat', models.CharField(choices=[('PV', 'pâtes viande'), ('LP', 'légumes pommes de terre')], max_length=3)), + ('dessert', models.CharField(choices=[('GAT', 'gâteau'), ('YAO', 'yaourt')], default='GAT', max_length=3)), + ], + ), + migrations.CreateModel( + name='QuestionQuotid', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('typeRepas', models.CharField(max_length=3)), + ('nbh_activite', models.PositiveIntegerField()), + ('volume_eau', models.PositiveIntegerField()), + ('maladies', models.CharField(max_length=3)), + ], + ), + migrations.CreateModel( + name='Sport', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type_sport', models.CharField(max_length=150)), + ('nb_seances', models.IntegerField()), + ('intensite', models.IntegerField()), ], ), ] diff --git a/website/nutriform/migrations/0002_auto_20191107_0040.py b/website/nutriform/migrations/0002_auto_20191107_0040.py new file mode 100644 index 0000000000000000000000000000000000000000..7461301d6a8bdb3660af37c1d32ad79f4a8bf7fb --- /dev/null +++ b/website/nutriform/migrations/0002_auto_20191107_0040.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.6 on 2019-11-07 00:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('nutriform', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='questionquotid', + name='poids', + field=models.PositiveIntegerField(null=True), + ), + migrations.AlterField( + model_name='questionquotid', + name='maladies', + field=models.CharField(choices=[('RH', 'Rhume'), ('GR', 'Grippe'), ('AN', 'Angine')], max_length=3), + ), + migrations.AlterField( + model_name='questionquotid', + name='typeRepas', + field=models.CharField(choices=[('sante', 'santé'), ('perte', 'perte de poids'), ('prise', 'prise de masse'), ('cheat', 'cheat day')], max_length=5), + ), + ] diff --git a/website/nutriform/models.py b/website/nutriform/models.py index d6619ca25b0eebfaf50ee7648aebf35566ed6bfe..843c8bdb330664badf227f47fbdf64e04aff0064 100644 --- a/website/nutriform/models.py +++ b/website/nutriform/models.py @@ -4,11 +4,52 @@ from django.contrib.auth.models import User # Create your models here. User._meta.get_field('email')._unique = True +TYPEMENU_CHOICES = [ + ('sante','santé'), + ('perte','perte de poids'), + ('prise','prise de masse'), + ('cheat','cheat day') +] + +ENTREE_CHOICES = [ + ('SAL','salade'), + ('SOP','soupe') +] + +PLAT_CHOICES = [ + ('PV','pâtes viande'), + ('LP','légumes pommes de terre') +] + +DESSERT_CHOICES =[ + ('GAT','gâteau'), + ('YAO','yaourt') +] + class Menu(models.Model): - type_plat = models.CharField(max_length=150) - nb_plat = models.IntegerField() - + type_menu = models.CharField(max_length=5, choices=TYPEMENU_CHOICES) + nb_cal = models.PositiveIntegerField() + entree = models.CharField(max_length=3, choices=ENTREE_CHOICES) + plat = models.CharField(max_length=3, choices=PLAT_CHOICES) + dessert = models.CharField(max_length=3, choices=DESSERT_CHOICES, default='GAT') + + def __str__(self): + return self.type_menu + class Sport(models.Model): type_sport = models.CharField(max_length=150) nb_seances = models.IntegerField() - intensite = models.IntegerField() \ No newline at end of file + intensite = models.IntegerField() + +MALADIES_CHOICES = [ + ('RH', 'Rhume'), + ('GR', 'Grippe'), + ('AN', 'Angine') +] + +class QuestionQuotid(models.Model): + typeRepas = models.CharField(max_length=5, choices=TYPEMENU_CHOICES) + nbh_activite = models.PositiveIntegerField() + volume_eau = models.PositiveIntegerField() + maladies = models.CharField(max_length=3, choices=MALADIES_CHOICES) + poids = models.PositiveIntegerField(null=True) \ No newline at end of file diff --git a/website/nutriform/templates/nutriform/compte.html b/website/nutriform/templates/nutriform/compte.html index 509593ec7d6d884617e3110540c1169094d821b5..70cf4b0a5fc442e7263558e09111a565abef917f 100644 --- a/website/nutriform/templates/nutriform/compte.html +++ b/website/nutriform/templates/nutriform/compte.html @@ -8,7 +8,11 @@ <h3>Mes informations diverses</h3> <p>Informations blabla</p> - <a href="{%url 'password_change'%}" class="button">Modifier mon mot de passe</a> + <a href="{% url 'password_change' %}" class="button">Modifier mon mot de passe</a> + + <a href="{% url 'modif_compte' %}" class="button">Modifier mon compte</a> + + <a href="{% url 'questionnaire' %}" class="button">Questionnaire quotidien</a> </div class="container"> {% endblock %} \ No newline at end of file diff --git a/website/nutriform/templates/nutriform/index.html b/website/nutriform/templates/nutriform/index.html index 4409d53d496f95899bc62776eb0cf06892c179f0..0d5dbd7a8c17b5f8835114be29a7e3d3060daea5 100644 --- a/website/nutriform/templates/nutriform/index.html +++ b/website/nutriform/templates/nutriform/index.html @@ -92,8 +92,7 @@ </div> </div> <ul class="actions"> - <li><a href="#" class="button special big">Perte de poids</a></li> - <li><a href="#" class="button big">Entretien</a></li> + <li><a href="{% url 'menus' %}" class="button special big">Découvrez nos menus</a></li> </ul> </div> </section> diff --git a/website/nutriform/templates/nutriform/menus.html b/website/nutriform/templates/nutriform/menus.html new file mode 100644 index 0000000000000000000000000000000000000000..43ccd421fc41bf84bd1f436c27a5d57fb67b5cee --- /dev/null +++ b/website/nutriform/templates/nutriform/menus.html @@ -0,0 +1,37 @@ +{% extends "../nutriform/base.html" %} + +{% block content %} + +<div class="container"> + + <header class="major"> + <h2>Liste des menus disponibles</h2> + <p>Cete liste est vouée à évoluer perpétuellement</p> + </header> + + <div class="table-wrapper"> + <table class="alt"> + <thead> + <tr> + <th>Type de menu</th> + <th>Nombre de caolories</th> + <th>Entrée</th> + <th>Plat</th> + <th>Dessert</th> + </tr> + </thead> + <tbody> + {% for menu in listmenus %} + <tr> + <td>{{ menu.get_type_menu_display}}</td> + <td>{{ menu.nb_cal }}</td> + <td>{{ menu.get_entree_display }}</td> + <td>{{ menu.get_plat_display }}</td> + <td>{{ menu.get_dessert_display }}</td> + </tr> + {% endfor %} + </tbody> + </table> + </div> +</div class="container"> +{% endblock %} \ No newline at end of file diff --git a/website/nutriform/templates/nutriform/modif_compte.html b/website/nutriform/templates/nutriform/modif_compte.html new file mode 100644 index 0000000000000000000000000000000000000000..137de4a8fac2b4b09d62f987181db77b47bd556e --- /dev/null +++ b/website/nutriform/templates/nutriform/modif_compte.html @@ -0,0 +1,16 @@ +{% extends "../nutriform/base.html" %} + +{% block content %} + +<div class="container"> + + <h3>Modification du compte {{ user.username }}</h3> + + <form action="" method="POST"> + {% csrf_token %} + + {{form}} + <input type="submit" value="Modifier"> + </form> +</div class="container"> +{% endblock %} \ No newline at end of file diff --git a/website/nutriform/templates/nutriform/questionnaire.html b/website/nutriform/templates/nutriform/questionnaire.html new file mode 100644 index 0000000000000000000000000000000000000000..98e2af8a3409c59dd34bf5186078e0df7d021292 --- /dev/null +++ b/website/nutriform/templates/nutriform/questionnaire.html @@ -0,0 +1,18 @@ +{% extends "../nutriform/base.html" %} + +{% block content %} + +<div class="container"> + + <h3>Questionnaire quotidien</h3> + <p>Ce questinonaire permet de vous proposer des services plus personnalisés et adaptés à vos besoins</p> + + <form action="" method="POST"> + {% csrf_token %} + + {{ form }} + + <input type="submit" value="Enregistrer"> + </form> +</div class="container"> +{% endblock %} \ No newline at end of file diff --git a/website/nutriform/urls.py b/website/nutriform/urls.py index 743fd1abe9f1b2ee44946b088d8d956d38860c2c..dfe73e774f638e2f0e7bab66a0569275cb2827f3 100644 --- a/website/nutriform/urls.py +++ b/website/nutriform/urls.py @@ -8,5 +8,8 @@ urlpatterns = [ path('register/', views.register, name='register'), path('accounts/profile/', views.compte, name='compte'), path('aboutus', views.aboutus, name="aboutus"), - path('accounts/', include('django.contrib.auth.urls')) + path('accounts/', include('django.contrib.auth.urls')), + path('menus/', views.menus, name='menus'), + path('accounts/profile/modification/', views.modif_compte, name='modif_compte'), + path('accounts/questionnaire/', views.question_quotid, name='questionnaire') ] diff --git a/website/nutriform/views.py b/website/nutriform/views.py index 0e4060a1e6104021c90ea8fd5c247beaa6f15223..c93c7908058c1a3a2722edc07e199694da18428d 100644 --- a/website/nutriform/views.py +++ b/website/nutriform/views.py @@ -2,8 +2,10 @@ from django.shortcuts import render, get_object_or_404, redirect from django.http import HttpResponse from django.core.mail import send_mail from django.contrib.auth.decorators import login_required +from django.contrib.auth.forms import UserChangeForm -from .forms import UserForm +from .forms import UserForm, UserModifForm, QuestionQuotidForm +from .models import Menu, QuestionQuotid def index(request): if request.method == 'POST' : @@ -38,4 +40,46 @@ def compte(request): return render(request, 'nutriform/compte.html') def aboutus(request): - return render(request, 'nutriform/aboutus.html') \ No newline at end of file + return render(request, 'nutriform/aboutus.html') + +def menus(request): + listmenus = list(Menu.objects.all()) + context = { + 'listmenus':listmenus + } + return render(request, 'nutriform/menus.html', context) + +@login_required +def modif_compte(request): + user = request.user + + if request.method == 'POST': + form = UserModifForm(request.POST, instance=user) + if form.is_valid(): + user = form.save() + return redirect('compte') + + else : + form = UserModifForm(instance=user) + + context = { + 'form': form, + } + return render(request, 'nutriform/modif_compte.html', context) + +@login_required +def question_quotid(request): + + if request.method == 'POST': + form = QuestionQuotidForm(request.POST) + if form.is_valid(): + form.save() + return redirect('compte') + + else : + form = QuestionQuotidForm() + + context = { + 'form':form, + } + return render(request, 'nutriform/questionnaire.html', context) \ No newline at end of file