From e777ad4895b34d3de74251afe2f442e6d6271d31 Mon Sep 17 00:00:00 2001 From: Anteunis Charles <charles.anteunis@gmail.com> Date: Fri, 6 Dec 2019 15:50:08 +0100 Subject: [PATCH] structure back pour les annonces --- iteration-2.md | 2 +- website/db.sqlite3 | Bin 167936 -> 176128 bytes website/nutriform/forms.py | 11 ++++- website/nutriform/migrations/0012_annonce.py | 29 +++++++++++++ .../migrations/0013_auto_20191206_1522.py | 20 +++++++++ website/nutriform/models.py | 15 ++++++- .../templates/nutriform/add_annonce.html | 19 +++++++++ .../templates/nutriform/annonces.html | 17 ++++++++ .../nutriform/templates/nutriform/base.html | 1 + .../nutriform/templates/nutriform/compte.html | 8 ++-- .../templates/nutriform/detail_annonce.html | 14 ++++++ .../nutriform/templates/nutriform/index.html | 1 + .../nutriform/templates/nutriform/menus.html | 2 +- website/nutriform/urls.py | 5 ++- website/nutriform/views.py | 40 ++++++++++++++++-- 15 files changed, 171 insertions(+), 13 deletions(-) create mode 100644 website/nutriform/migrations/0012_annonce.py create mode 100644 website/nutriform/migrations/0013_auto_20191206_1522.py create mode 100644 website/nutriform/templates/nutriform/add_annonce.html create mode 100644 website/nutriform/templates/nutriform/annonces.html create mode 100644 website/nutriform/templates/nutriform/detail_annonce.html diff --git a/iteration-2.md b/iteration-2.md index 7a11a14..e1f2012 100644 --- a/iteration-2.md +++ b/iteration-2.md @@ -46,7 +46,7 @@ ### Titre des User Stories reportées *Lister ici les éléments des itérations précédentes qui ont été reportés à l'itération suivante. Ces éléments ont dû être revus et corrigés par le PO.* -> "En tant que Ines, je souhaite une BDD pour fournir aux users divers menus" - Les menus seront suggérés dans le compte mais n'apparaîtront pas comme liste. +> "En tant que Administrateur, je souhaite une BDD pour fournir aux users divers menus" - Les menus seront suggérés dans le compte mais n'apparaîtront pas comme liste. > "En tant que users je souhaite pouvoir voir mes informations personnelles dans la page mon profil" - Les informations manquantes seront ajoutées au compte user ### Titre des nouvelles User Stories diff --git a/website/db.sqlite3 b/website/db.sqlite3 index 221d564296ae27f6e0b2b3c668157c3bb191fa67..ffc03ce57c7a4ee37ce742d6e4f1dd55f0d43e04 100644 GIT binary patch delta 1829 zcmZozz}4`8Yl4&zBO3z)gEj*LgBAk=10w?i!-R=CMof%s8xxlBGb^&Moy;y^&%*wW zeeLEzfn@f2dqq|Td27eK(vqUgwEUu60|P_j_{7qZ{CFb+LrX&=1G9KTQzIh~N7v9u z*T77{(8S8f$jZP%&&<Hk)WFz8ft5jC6~zFf_{6-t{Ji8;G+hQ(CKh_87RH7~X7=(B zYd7mi++dgB;^$}Of5{)iU&OzkzngzG|1Ex1emj2t&58!k_%!(K7?c_FQp@>gF-UWW zC^74E!d(lqNL-%Tm~nbw0;BL`TYWi3@yRjzdW_tYyY)R7btYfY*Opi0Vqjq4=9gsP zU&Y_fKaIbVKZakDU!VUS|3&`2{O+3-4Sw^9iL%H`Gs4Y=`hk10zWr4xZhi>{{<r)W z`1kOy<e$pl#$Ul7&F{vq$1ky2(cl-Km<TrugS<4l-pP9Y*O+y9S|+mx1aj~k<XOWr zou_59qJj#KzYq(fDkFDUW@<Ui4>}?&jGBzxDXBTBC8;n$ZHQoUMq*w%Tu@7pg;AN2 zJ252%rc875<(MY|JjRArMy7g}CKg5}=93TSPT;e&GPJNVHrF#XF)%W>*qoTR*pOL( zf7N961q$q|_@{&5X2pUW{>ih}3$U>=GcvM?Z{DyzM1fg{@9$*x3xOQ`{QR8!%zS@0 zD=N(8n;x*9kwt`C2c(c&8%%0}NzKio_uqeD*5UM;&VGS0kb`p{=QPedPOr_13a>co zm2_Ac7*%yqJnNj8rvUQ20yLD>v{@M#H4V{x4^jmQ54bulh&t2&0jYzCz|<*dvNA9# zYlFf_92Q6*Rf#DnFeTd`++<WS<6-7;W8gc)+rs0<&9PZg;TP9-E@>tkM)f9ZW>()8 zR>$1(49n8w%Hm|>3X_7WqN4oV{M^)x()^0llCsp|!tMIfOl*vTMhXUqur@L`G~eDL z%hbTc!^}U4fqy&y9sWuDcQz{)B=Ao!&}UN8RAKgIBw%n7Gf2_&9$6-Z>9_TnG<lf$ zmoV@@;y=v4guivOVnGG}^bUI_896y-M@CpaGsJYpA$ukl0WKE?{!9Fe`Rn*y7AqR? zv+@@+n0QaGh-Z?YZW7Prq`>X0$jiuYsH4on&Y%lo8Y=`BCYBbZD!7*xmn4==pBB%Q z$1K1nGo3wwNuGmGhW7vnZdO#7$~*mVE>onev^Xb&I42_mBcozLYEellvnw0KQHHuk z7TYcJn2s}YfwCYY|8EBV-`lwgm_G6=vM@7pvhi}8FmST_F!1^EN%21Ce9sxc{hHf? z{V}@_>zU1g0vlLuxJ{T_#4RluTX{<olX6n?Qp@Ax;W-T!x!6Uur}wur$+ANe*<?o^ zQ`WM~oSf9jv-zZ^D_1cId+I1Cl~fkMvzC%VSz=LgMq-hMv8IBbe~5x#sE?11f>KIq zadJ^+K}lwQo{~aIYDEdMWN|@$Q3=RMmi(gh#Odd{n0!4nxlNcj8by-W#RK&j8%;Cw zQc^20932l*AD@{LZ;+atWNBiMh@nDb`uh|{i9DzWFw`q4`1>g+Vdzp)&`^RJt)$tM zmB=oxug}=Z3<*A1Ne>S>bOG(@4JnKg0}yE2{X3a9vhgq=fW~IQhWGpv16U_bU}0nA zKgGa*YO`R&0e&+RMh*s1MPWl(M%S>QNJvrx)lPo?L3UNCX}OshATm26x2U)<t++5H Kt*|&HjST>gl^AdU delta 885 zcmZp8z}2vTYl4&z!)pcx22BPA1`P%V21W)3hOUV^MobK^Hzq9MXO`zsnanO=zgbb? z9{Xk$i3jWwocyY+{4e=q_>1`W^LO*F=D)?S%5TTdv{}*M86PXZ9fLCC^o9y1SvDbY zd1hnA>46E1!jo<F<ru{#$LQ-Za!u~m_h8hRd_`YdR-TK2fq{!(pMifBe>?v){!0EB zetrIT{1^H6^1E+VED+|OtZ#o+f{R~|f&VT41^zw!EBUALxA9l-NAtV!>upvn5aOS# z=YNe^gXi*O_JF|6iVD>{n=i*a5#TW}wKBETGc-1|v@n@`IClb{g_VJ^m65TYsfB@| zk@@Dtyv2sh{QMgxvoBC!pUw}4n-vRk_$SX=FTlpYz{4iUuzAD!5Cvupe$mP77eHq3 z<(nR`o{?p<<o(wlm^C;bOlQBq2omq$-2UJuqly_16K@Lx-yz->9ye}|&58=YxVCdi zGubf4GB7aO`L?h+mL_K9nC0Xc8<ppjWSZud6cywZCYELul%yMG<Rs>#`&9)R`c*}i z`?~m=`ek`#`ME?IMrL^$`-cZ*L}fW;`-fy3`{o8#`MUUJ`MHFe_+_P6L`{Dv%Ou5U zJiS4hsW{lg*WK4NDkR;=FDua0&n4Z&-^DM}FC?<uH`go2-`&&DH#aIbGAk%EGAr50 zKO`s1FT~f-Gta=*$iUE2*U(7U&`80+!U`68rbd<)+goIr8kl&P__s6gZ|A?mKZ*a& zX2pU8{^<q!OiG|+qe{qI%qq;jjMIB$nG~kq)@Rb>Vd6i`!2gK<F#i(%*3F6q75vjX z?3rZb7#JAj@i^m<J(G(7mjDC*CH}?y0{kwE6$|)Tj9Aziri;WgB{3N|PZy16lAk_3 zo++1^pU-kSdjgX@2k!w0+^ncDm3R8#T&74_1{-lkMg~Sk#e&qLl2j%pb2f;jhPp=P z4BIX9n2s}ok|hHKZ09Oq`p7S<Yh>;o#LI2Mz|I-Kz~{>+#rvG|J!b&-Yi<j6*Uf<f qy6pViCQRJo?(U53{3VG=IjP`0usx)L$(C`tYcJEH?E#%k8`uC-arF8C diff --git a/website/nutriform/forms.py b/website/nutriform/forms.py index c965fad..40c0db8 100644 --- a/website/nutriform/forms.py +++ b/website/nutriform/forms.py @@ -5,7 +5,7 @@ from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.core.exceptions import ValidationError import os -from .models import QuestionQuotid, InfosUser +from .models import QuestionQuotid, InfosUser, Annonce class UserForm(UserCreationForm): @@ -41,4 +41,11 @@ class InfoUserForm(forms.ModelForm): class Meta: model = InfosUser fields = '__all__' - exclude = ('user',) \ No newline at end of file + exclude = ('user',) + +class AnnonceForm(forms.ModelForm): + + class Meta: + model = Annonce + fields = '__all__' + exclude = ('orga',) \ No newline at end of file diff --git a/website/nutriform/migrations/0012_annonce.py b/website/nutriform/migrations/0012_annonce.py new file mode 100644 index 0000000..2042546 --- /dev/null +++ b/website/nutriform/migrations/0012_annonce.py @@ -0,0 +1,29 @@ +# Generated by Django 2.2.6 on 2019-12-06 14:20 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('nutriform', '0011_auto_20191127_2335'), + ] + + operations = [ + migrations.CreateModel( + name='Annonce', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('ville', models.CharField(max_length=100)), + ('date', models.DateField(default=django.utils.timezone.now)), + ('type_annonce', models.CharField(choices=[('PRO', 'Professionnelle'), ('NOR', 'Classique')], max_length=3)), + ('description', models.TextField(max_length=1000)), + ('sport', models.CharField(max_length=100)), + ('orga', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/website/nutriform/migrations/0013_auto_20191206_1522.py b/website/nutriform/migrations/0013_auto_20191206_1522.py new file mode 100644 index 0000000..6f4cec8 --- /dev/null +++ b/website/nutriform/migrations/0013_auto_20191206_1522.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.6 on 2019-12-06 14:22 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('nutriform', '0012_annonce'), + ] + + operations = [ + migrations.AlterField( + model_name='annonce', + name='orga', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/website/nutriform/models.py b/website/nutriform/models.py index ed64b7b..803d389 100644 --- a/website/nutriform/models.py +++ b/website/nutriform/models.py @@ -71,4 +71,17 @@ class InfosUser(models.Model): date_naissance = models.DateField(null=True) sexe = models.CharField(max_length=1, choices=SEXE_CHOICES, null=True) maladies = models.TextField(max_length=200, null=True, blank=True) - user = models.ForeignKey(User, null=True, on_delete=models.CASCADE) \ No newline at end of file + user = models.ForeignKey(User, null=True, on_delete=models.CASCADE) + +TYPE_ANNONCE_CHOICE = [ + ('PRO', 'Professionnelle'), + ('NOR', 'Classique') +] + +class Annonce(models.Model): + ville = models.CharField(max_length=100) + date = models.DateField(default=timezone.now) + type_annonce = models.CharField(max_length=3, choices=TYPE_ANNONCE_CHOICE) + description = models.TextField(max_length=1000) + sport = models.CharField(max_length=100) + orga = models.ForeignKey(User, null=True, on_delete=models.CASCADE) diff --git a/website/nutriform/templates/nutriform/add_annonce.html b/website/nutriform/templates/nutriform/add_annonce.html new file mode 100644 index 0000000..8b0e975 --- /dev/null +++ b/website/nutriform/templates/nutriform/add_annonce.html @@ -0,0 +1,19 @@ +{% extends "../nutriform/base.html" %} + +{% block content %} + +<div class="container"> + + <header class="major"> + <h2>Créer une annonce d'activité sportive</h2> + </header> + + <form action="" method="POST"> + {% csrf_token %} + + {{ form }} + + <input type="submit" value="Créer"> + </form> +</div class="container"> +{% endblock %} \ No newline at end of file diff --git a/website/nutriform/templates/nutriform/annonces.html b/website/nutriform/templates/nutriform/annonces.html new file mode 100644 index 0000000..588811d --- /dev/null +++ b/website/nutriform/templates/nutriform/annonces.html @@ -0,0 +1,17 @@ +{% extends "../nutriform/base.html" %} + +{% block content %} + +<div class="container"> + + <header class="major"> + <h2>Participez à des activités sportives communautaires</h2> + </header> + + {% for annonce in annonces_list %} + <a href="{% url 'detail_annonce' annonce.id %}">{{ annonce.get_type_annonce_display }} - {{ annonce.sport }} - {{ annonce.orga.username }}</a> + {% endfor %} + <br> + <a href="{% url 'add_annonce' %}" class="button">Créer mon annonce</a> +</div class="container"> +{% endblock %} \ No newline at end of file diff --git a/website/nutriform/templates/nutriform/base.html b/website/nutriform/templates/nutriform/base.html index ed93212..56cec4b 100644 --- a/website/nutriform/templates/nutriform/base.html +++ b/website/nutriform/templates/nutriform/base.html @@ -27,6 +27,7 @@ <nav id="nav"> <ul> <li><a href="{% url 'index' %}">Accueil</a></li> + <li><a href="{% url 'annonces' %}">Annonces</a></li> <li><a href="{% url 'aboutus' %}">About us</a></li> <li><a href="{% url 'compte' %}">Mon compte</a></li> {% if user.is_authenticated %} diff --git a/website/nutriform/templates/nutriform/compte.html b/website/nutriform/templates/nutriform/compte.html index ab1f52d..0135df2 100644 --- a/website/nutriform/templates/nutriform/compte.html +++ b/website/nutriform/templates/nutriform/compte.html @@ -38,21 +38,21 @@ {% if menu %} <p> {% if mean_sport < 1 %} - {{ user.username }}, faites attention à votre condition physique : {{ mean_sport }} heures par jour est insuffisant. + {{ user.username }}, faites attention à votre condition physique : {{ mean_sport|floatformat }} heures par jour est insuffisant. Pratiquer une activité physique régulière, environ 1h par jour, est nécessaire pour s'assurer une meilleure santé. Nous vous conseillons de vous dépenser plus et vous obtiendrez rapidement vos objectifs. {% else %} - {{ user.username }}, vous avez fait en moyenne {{ mean_sport }} heures d'activité physique + {{ user.username }}, vous avez fait en moyenne {{ mean_sport|floatformat }} heures d'activité physique par jour les 7 derniers jours. Continuez comme cela, le sport est bénéfique pour votre corps. {% endif %} </p> <p> {% if mean_water < 2 %} - Concernant votre consommation d'eau, pensez à vous hydrater plus : {{ mean_water }}L par jour ne suffisent + Concernant votre consommation d'eau, pensez à vous hydrater plus : {{ mean_water|floatformat }}L par jour ne suffisent pas. Vous devriez augmenter pour atteindre les 2L environ. {% else %} - Votre consommation d'eau est excellente : {{ mean_water }}L par jour ! Pensez à garder ce rythme tout au long des semaines. Vous ne + Votre consommation d'eau est excellente : {{ mean_water|floatformat }}L par jour ! Pensez à garder ce rythme tout au long des semaines. Vous ne devriez pas avoir de problèmes pour atteindre vos objectifs, continuez sur cette voie. {% endif %} </p> diff --git a/website/nutriform/templates/nutriform/detail_annonce.html b/website/nutriform/templates/nutriform/detail_annonce.html new file mode 100644 index 0000000..77e2b20 --- /dev/null +++ b/website/nutriform/templates/nutriform/detail_annonce.html @@ -0,0 +1,14 @@ +{% extends "../nutriform/base.html" %} + +{% block content %} + +<div class="container"> + + <header class="major"> + <h2>Détail de l'annonce</h2> + </header> + + <p>{{ annonce.orga }} - {{ annonce.description }}</p> + +</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 ef7c3cd..dc3c2b3 100644 --- a/website/nutriform/templates/nutriform/index.html +++ b/website/nutriform/templates/nutriform/index.html @@ -22,6 +22,7 @@ <nav id="nav"> <ul> <li><a href="{% url 'index' %}">Accueil</a></li> + <li><a href="{% url 'annonces' %}">Annonces</a></li> <li><a href="{% url 'aboutus' %}">About us</a></li> <li><a href="{% url 'compte' %}">Mon compte</a></li> {% if user.is_authenticated %} diff --git a/website/nutriform/templates/nutriform/menus.html b/website/nutriform/templates/nutriform/menus.html index 43ccd42..69ae55b 100644 --- a/website/nutriform/templates/nutriform/menus.html +++ b/website/nutriform/templates/nutriform/menus.html @@ -6,7 +6,7 @@ <header class="major"> <h2>Liste des menus disponibles</h2> - <p>Cete liste est vouée à évoluer perpétuellement</p> + <p>Cette liste est vouée à évoluer perpétuellement</p> </header> <div class="table-wrapper"> diff --git a/website/nutriform/urls.py b/website/nutriform/urls.py index d1b8fe3..f8d9963 100644 --- a/website/nutriform/urls.py +++ b/website/nutriform/urls.py @@ -13,5 +13,8 @@ urlpatterns = [ path('accounts/profile/modification/', views.modif_compte, name='modif_compte'), path('accounts/questionnaire/', views.question_quotid, name='questionnaire'), path('carte/', views.carte, name='carte'), - path('accounts/profile/modification_infos/', views.modif_infos, name='modif_info') + path('accounts/profile/modification_infos/', views.modif_infos, name='modif_info'), + path('annonces/créer/', views.addAnnnonce, name='add_annonce'), + path('annonces/<int:annonce_id>/', views.detail_annonce, name='detail_annonce'), + path('annonces/', views.annonces, name='annonces') ] diff --git a/website/nutriform/views.py b/website/nutriform/views.py index 7576a73..ea6e36e 100644 --- a/website/nutriform/views.py +++ b/website/nutriform/views.py @@ -7,8 +7,8 @@ from django.contrib.auth.models import User from datetime import date from django.utils import timezone -from .forms import UserForm, UserModifForm, QuestionQuotidForm, InfoUserForm -from .models import Menu, QuestionQuotid, InfosUser +from .forms import UserForm, UserModifForm, QuestionQuotidForm, InfoUserForm, AnnonceForm +from .models import Menu, QuestionQuotid, InfosUser, Annonce import json @@ -179,4 +179,38 @@ def carte(request): context = { 'geotab': val, } - return render(request, 'nutriform/carte.html', context) \ No newline at end of file + return render(request, 'nutriform/carte.html', context) + +def annonces(request): + annonces_list = list(Annonce.objects.all()) + + context = { + 'annonces_list': annonces_list, + } + return render(request, 'nutriform/annonces.html', context) + +def detail_annonce(request, annonce_id): + annonce = get_object_or_404(Annonce, pk=annonce_id) + + context = { + 'annonce': annonce, + } + return render(request, 'nutriform/detail_annonce.html', context) + +@login_required +def addAnnnonce(request): + if request.method == 'POST': + form = AnnonceForm(request.POST) + if form.is_valid(): + annonce = form.save() + annonce.orga = request.user + annonce.save() + return redirect('compte') + + else : + form = AnnonceForm() + + context = { + 'form':form, + } + return render(request, 'nutriform/add_annonce.html', context) \ No newline at end of file -- GitLab