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