From e78ae9e05d459a9963c81e221c0b936e8af29a96 Mon Sep 17 00:00:00 2001 From: nyanloutre Date: Sun, 8 Sep 2019 16:51:49 +0200 Subject: [PATCH] =?UTF-8?q?ajout=20plusieurs=20illustrations=20par=20?= =?UTF-8?q?=C3=A9venement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- default.nix | 18 ++++-- timeline/admin.py | 12 +++- .../migrations/0002_auto_20190908_1550.py | 39 ++++++++++++ timeline/models.py | 12 +++- timeline/templates/timeline/evenements.html | 59 ++++++++++++++++--- timeline/views.py | 4 +- 6 files changed, 123 insertions(+), 21 deletions(-) create mode 100644 timeline/migrations/0002_auto_20190908_1550.py diff --git a/default.nix b/default.nix index 93a8474..08a7788 100644 --- a/default.nix +++ b/default.nix @@ -1,17 +1,25 @@ { pkgs ? import {} }: -pkgs.stdenv.mkDerivation rec { - name= "site-musique"; +pkgs.python3.pkgs.buildPythonPackage rec { + pname= "site-musique"; + version = "1.0"; inherit (pkgs) stdenv; src = ./.; - installPhase = '' - mkdir -p $out/ - cp -R . $out/ + propagatedBuildInputs = [ pkgs.python3.pkgs.django_2_2 pkgs.python3.pkgs.pillow ]; + + postFixup = '' + wrapPythonProgramsIn $out/bin/manage.py + #HACK wrapper breaks django manage.py + sed -i "$out/bin/.manage.py-wrapped" -e ' + 0,/sys.argv\[0\].*;/s/sys.argv\[0\][^;]*;// + ' ''; + doCheck = false; + meta = { description = "Site de présentation de l'association Musique Fraternité de Meyenheim"; homepage = https://musique-meyenheim.fr; diff --git a/timeline/admin.py b/timeline/admin.py index af8cf4f..4cfc5e6 100644 --- a/timeline/admin.py +++ b/timeline/admin.py @@ -1,7 +1,13 @@ from django.contrib import admin -from .models import Timeline +from .models import Evenement, Illustration -@admin.register(Timeline) -class TimelineAdmin(admin.ModelAdmin): +class IllustrationInline(admin.TabularInline): + model = Illustration + +@admin.register(Evenement) +class EvenementAdmin(admin.ModelAdmin): ordering=["-date"] + inlines = [ + IllustrationInline, + ] diff --git a/timeline/migrations/0002_auto_20190908_1550.py b/timeline/migrations/0002_auto_20190908_1550.py new file mode 100644 index 0000000..451403e --- /dev/null +++ b/timeline/migrations/0002_auto_20190908_1550.py @@ -0,0 +1,39 @@ +# Generated by Django 2.2.4 on 2019-09-08 13:50 + +import datetime +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('timeline', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Evenement', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('titre', models.CharField(max_length=200)), + ('date', models.DateField(default=datetime.date.today)), + ('heure_debut', models.TimeField(blank=True, null=True)), + ('heure_fin', models.TimeField(blank=True, null=True)), + ('lieu', models.CharField(blank=True, max_length=200)), + ('description', models.TextField(blank=True)), + ], + ), + migrations.CreateModel( + name='Illustration', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nom', models.CharField(max_length=200)), + ('image', models.ImageField(upload_to='timeline')), + ('evenement', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='timeline.Evenement')), + ], + ), + migrations.DeleteModel( + name='Timeline', + ), + ] diff --git a/timeline/models.py b/timeline/models.py index 41507fb..8044499 100644 --- a/timeline/models.py +++ b/timeline/models.py @@ -1,13 +1,12 @@ from django.db import models from datetime import date -class Timeline(models.Model): +class Evenement(models.Model): titre = models.CharField(max_length=200) date = models.DateField(default=date.today) heure_debut = models.TimeField(null=True, blank=True) heure_fin = models.TimeField(null=True, blank=True) lieu = models.CharField(max_length=200, blank=True) - illustration = models.ImageField(upload_to='timeline') description = models.TextField(blank=True) @property @@ -20,3 +19,12 @@ class Timeline(models.Model): def __str__(self): return f"[{self.date}] {self.titre}" + + +class Illustration(models.Model): + nom = models.CharField(max_length=200) + image = models.ImageField(upload_to='timeline') + evenement = models.ForeignKey(Evenement, on_delete=models.CASCADE) + + def __str__(self): + return f"[{self.evenement}] {self.nom}" diff --git a/timeline/templates/timeline/evenements.html b/timeline/templates/timeline/evenements.html index 7fce95a..99f2f47 100644 --- a/timeline/templates/timeline/evenements.html +++ b/timeline/templates/timeline/evenements.html @@ -82,23 +82,64 @@ {{ evenement.lieu }}

- - - + {% if evenement.illustration_set.count > 1 %} + +

{{ evenement.description }}

- - diff --git a/timeline/views.py b/timeline/views.py index 1bbd9c1..8dac944 100644 --- a/timeline/views.py +++ b/timeline/views.py @@ -1,9 +1,9 @@ from django.shortcuts import render -from .models import Timeline +from .models import Evenement def index(request): - liste_evenements = Timeline.objects.order_by('-date') + liste_evenements = Evenement.objects.order_by('-date') context = { 'liste_evenements': liste_evenements, }