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 }}
-
-
+ {% for illustration in evenement.illustration_set.all %}
+
-
-
-
-
+
+
+
+
+
+ {% endfor %}
+ {% else %}
+ {% with evenement.illustration_set.all|first as illustration %}
+
+
+
+
+
+
+
{{ evenement.description }}
+
+
+
+
+
+
+
+
+
+ {% endwith %}
+ {% endif %}
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,
}