diff --git a/Pipfile b/Pipfile index 2932fb6..a93e688 100644 --- a/Pipfile +++ b/Pipfile @@ -14,6 +14,7 @@ dj-database-url = "*" "psycopg2-binary" = "*" django-dotenv = "*" django-mailgun = "*" +uuid = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 2112dab..cc388c0 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "71138c05585bbfa9cc69ef80bb089989c24abf0c550ba909ce2ef8b7fbe5d0f2" + "sha256": "43a1e1084af30da4a5ce423a0086c023152fb78a989cf7425035ea6d2a02fd0e" }, "pipfile-spec": 6, "requires": { @@ -143,6 +143,13 @@ "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f" ], "version": "==1.22" + }, + "uuid": { + "hashes": [ + "sha256:1f87cc004ac5120466f36c5beae48b4c48cc411968eed0eaecd3da82aa96193f" + ], + "index": "pypi", + "version": "==1.30" } }, "develop": { diff --git a/manuels/migrations/0001_initial.py b/manuels/migrations/0001_initial.py index 018ac42..e03d575 100644 --- a/manuels/migrations/0001_initial.py +++ b/manuels/migrations/0001_initial.py @@ -1,6 +1,9 @@ -# Generated by Django 2.0.5 on 2018-05-21 19:16 +# Generated by Django 2.0.5 on 2018-05-21 21:21 from django.db import migrations, models +import django.db.models.deletion +import manuels.models +import uuid class Migration(migrations.Migration): @@ -12,12 +15,56 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='Teacher', + name='Book', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('first_name', models.CharField(max_length=100)), - ('last_name', models.CharField(max_length=100)), - ('phone_number', models.CharField(max_length=10)), + ('field', models.CharField(max_length=100, verbose_name='matière')), + ('title', models.TextField(verbose_name='titre')), + ('authors', models.TextField(verbose_name='auteurs')), + ('editor', models.CharField(max_length=200, verbose_name='éditeur')), + ('collection', models.CharField(blank=True, max_length=200, verbose_name='collection')), + ('publication_year', models.PositiveIntegerField(verbose_name='année de publication')), + ('isbn', models.CharField(max_length=20, validators=[manuels.models.isbn_validator], verbose_name='ISBN/EAN')), + ('price', models.PositiveIntegerField(verbose_name='prix')), + ('previously_acquired', models.BooleanField(choices=[(True, 'Oui'), (False, 'Non')], verbose_name="manuel acquis précédemment par l'élève")), ], + options={ + 'verbose_name': 'livre', + 'verbose_name_plural': 'livres', + }, + ), + migrations.CreateModel( + name='Level', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=10, verbose_name='nom')), + ], + options={ + 'verbose_name': 'classe', + 'verbose_name_plural': 'classes', + }, + ), + migrations.CreateModel( + name='Teacher', + fields=[ + ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('first_name', models.CharField(max_length=100, verbose_name='prénom')), + ('last_name', models.CharField(max_length=100, verbose_name='nom')), + ('phone_number', models.CharField(max_length=10, verbose_name='numéro de téléphone')), + ], + options={ + 'verbose_name': 'enseignant', + 'verbose_name_plural': 'enseignants', + }, + ), + migrations.AddField( + model_name='book', + name='level', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='manuels.Level', verbose_name='classe'), + ), + migrations.AddField( + model_name='book', + name='teacher', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='manuels.Teacher', verbose_name='enseignant'), ), ] diff --git a/manuels/migrations/0002_auto_20180521_2154.py b/manuels/migrations/0002_auto_20180521_2154.py deleted file mode 100644 index 76a8fd8..0000000 --- a/manuels/migrations/0002_auto_20180521_2154.py +++ /dev/null @@ -1,74 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-21 19:54 - -from django.db import migrations, models -import django.db.models.deletion -import manuels.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manuels', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Book', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('field', models.CharField(max_length=100, verbose_name='matière')), - ('title', models.TextField(verbose_name='titre')), - ('authors', models.TextField(verbose_name='auteurs')), - ('editor', models.CharField(max_length=200, verbose_name='éditeur')), - ('collection', models.CharField(blank=True, max_length=200, verbose_name='collection')), - ('publication_year', models.PositiveIntegerField(verbose_name='année de publication')), - ('isbn', models.TextField(validators=[manuels.models.isbn_validator], verbose_name='ISBN/EAN')), - ('price', models.PositiveIntegerField(verbose_name='prix')), - ('previously_acquired', models.BooleanField(verbose_name="manuel acquis précédemment par l'élève")), - ], - options={ - 'verbose_name': 'livre', - 'verbose_name_plural': 'livres', - }, - ), - migrations.CreateModel( - name='Level', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=10, verbose_name='nom')), - ], - options={ - 'verbose_name': 'classe', - 'verbose_name_plural': 'classe', - }, - ), - migrations.AlterModelOptions( - name='teacher', - options={'verbose_name': 'enseignant', 'verbose_name_plural': 'enseignants'}, - ), - migrations.AlterField( - model_name='teacher', - name='first_name', - field=models.CharField(max_length=100, verbose_name='prénom'), - ), - migrations.AlterField( - model_name='teacher', - name='last_name', - field=models.CharField(max_length=100, verbose_name='nom'), - ), - migrations.AlterField( - model_name='teacher', - name='phone_number', - field=models.CharField(max_length=10, verbose_name='numéro de téléphone'), - ), - migrations.AddField( - model_name='book', - name='level', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='manuels.Level'), - ), - migrations.AddField( - model_name='book', - name='teacher', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='manuels.Teacher'), - ), - ] diff --git a/manuels/migrations/0003_auto_20180521_2225.py b/manuels/migrations/0003_auto_20180521_2225.py deleted file mode 100644 index eb0dbbd..0000000 --- a/manuels/migrations/0003_auto_20180521_2225.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-21 20:25 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('manuels', '0002_auto_20180521_2154'), - ] - - operations = [ - migrations.AlterField( - model_name='book', - name='level', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='manuels.Level', verbose_name='classe'), - ), - migrations.AlterField( - model_name='book', - name='teacher', - field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='manuels.Teacher', verbose_name='enseignant'), - ), - ] diff --git a/manuels/migrations/0004_auto_20180521_2226.py b/manuels/migrations/0004_auto_20180521_2226.py deleted file mode 100644 index fd14e5e..0000000 --- a/manuels/migrations/0004_auto_20180521_2226.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-21 20:26 - -from django.db import migrations, models -import manuels.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manuels', '0003_auto_20180521_2225'), - ] - - operations = [ - migrations.AlterField( - model_name='book', - name='isbn', - field=models.CharField(max_length=20, validators=[manuels.models.isbn_validator], verbose_name='ISBN/EAN'), - ), - ] diff --git a/manuels/migrations/0005_auto_20180521_2230.py b/manuels/migrations/0005_auto_20180521_2230.py deleted file mode 100644 index 2d4bf22..0000000 --- a/manuels/migrations/0005_auto_20180521_2230.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-21 20:30 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('manuels', '0004_auto_20180521_2226'), - ] - - operations = [ - migrations.AlterModelOptions( - name='level', - options={'verbose_name': 'classe', 'verbose_name_plural': 'classes'}, - ), - ] diff --git a/manuels/migrations/0006_auto_20180521_2307.py b/manuels/migrations/0006_auto_20180521_2307.py deleted file mode 100644 index af37595..0000000 --- a/manuels/migrations/0006_auto_20180521_2307.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.0.5 on 2018-05-21 21:07 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('manuels', '0005_auto_20180521_2230'), - ] - - operations = [ - migrations.AlterField( - model_name='book', - name='previously_acquired', - field=models.BooleanField(choices=[(True, 'Oui'), (False, 'Non')], verbose_name="manuel acquis précédemment par l'élève"), - ), - ] diff --git a/manuels/models.py b/manuels/models.py index a8f5992..39c99ba 100644 --- a/manuels/models.py +++ b/manuels/models.py @@ -1,5 +1,6 @@ import re +import uuid as uuid from django.core.exceptions import ValidationError from django.db import models @@ -8,13 +9,14 @@ class Teacher(models.Model): class Meta: verbose_name = 'enseignant' verbose_name_plural = 'enseignants' + uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) first_name = models.CharField('prénom', max_length=100) last_name = models.CharField('nom', max_length=100) phone_number = models.CharField('numéro de téléphone', max_length=10) def get_absolute_url(self): from django.urls import reverse - return reverse('add_book', args=[str(self.id)]) + return reverse('add_book', args=[str(self.pk)]) @property def full_name(self): diff --git a/manuels/templates/manuels/home_page.html b/manuels/templates/manuels/home_page.html index 76228f4..a9dffd4 100644 --- a/manuels/templates/manuels/home_page.html +++ b/manuels/templates/manuels/home_page.html @@ -5,6 +5,18 @@ {% block title %}Accueil{% endblock %} {% block content %} +
+
+

Bienvenue !

+
+
+
diff --git a/manuels/templates/manuels/list_books.html b/manuels/templates/manuels/list_books.html index d6344ec..75d5277 100644 --- a/manuels/templates/manuels/list_books.html +++ b/manuels/templates/manuels/list_books.html @@ -7,7 +7,7 @@

Bienvenue {{ teacher.full_name }}

{% block title %}Liste des livres demandés{% endblock %}

- Ajouter un livre + Ajouter un livre diff --git a/manuels/urls.py b/manuels/urls.py index d5289b5..fe4dd2a 100644 --- a/manuels/urls.py +++ b/manuels/urls.py @@ -3,6 +3,6 @@ from django.urls import path from manuels.views import AddBookView, ListBooksView urlpatterns = [ - path('teacher//add', AddBookView.as_view(), name='add_book'), - path('teacher//', ListBooksView.as_view(), name='list_books'), + path('teacher//add', AddBookView.as_view(), name='add_book'), + path('teacher//', ListBooksView.as_view(), name='list_books'), ] diff --git a/manuels/views.py b/manuels/views.py index 28272af..df4f4ed 100644 --- a/manuels/views.py +++ b/manuels/views.py @@ -17,7 +17,7 @@ class BaseTeacherView: teacher = None def dispatch(self, request, *args, **kwargs): - self.teacher = get_object_or_404(Teacher, pk=self.kwargs['id']) + self.teacher = get_object_or_404(Teacher, pk=self.kwargs['pk']) return super().dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): @@ -59,6 +59,6 @@ class AddBookView(BaseTeacherView, CreateView): def get_success_url(self): messages.success(self.request, f'"{self.object}" a été ajouté.') if self.add_another: - return reverse('add_book', args=[str(self.teacher.id)]) + return reverse('add_book', args=[str(self.teacher.pk)]) else: - return reverse('list_books', args=[str(self.teacher.id)]) + return reverse('list_books', args=[str(self.teacher.pk)])