feat(documents): ajoute une liste de ressourceries et une gallerie

ressourceries
Antoine 2020-06-11 12:21:12 +02:00
Parent 9d50d66f54
révision 2d9a418e62
5 fichiers modifiés avec 126 ajouts et 2 suppressions

Voir le fichier

@ -0,0 +1,40 @@
# Generated by Django 2.2.10 on 2020-06-11 10:19
from django.db import migrations, models
import wagtail.core.blocks
import wagtail.core.fields
import wagtail.images.blocks
class Migration(migrations.Migration):
dependencies = [
('documents', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Gallery',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128, verbose_name='Nom')),
('images', wagtail.core.fields.StreamField([('photo_caption', wagtail.core.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Image')), ('caption', wagtail.core.blocks.CharBlock(help_text="Une description de l'image, qui sera affichée en dessous.", label='Légende', required=False))]))])),
],
options={
'verbose_name': 'Galerie',
'verbose_name_plural': 'Galeries',
},
),
migrations.CreateModel(
name='Ressourcerie',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=128, verbose_name='Nom')),
('link', models.URLField(blank=True, verbose_name='Lien vers le site')),
],
options={
'verbose_name': 'Ressourcerie',
'verbose_name_plural': 'Ressourceries',
},
),
]

Voir le fichier

@ -2,7 +2,10 @@ import os
from django.db import models
from wagtail.admin.edit_handlers import FieldPanel
from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel
from wagtail.core import blocks
from wagtail.core.fields import StreamField
from wagtail.images.blocks import ImageChooserBlock
from wagtail.snippets.models import register_snippet
from .validators import validate_upload_document_file
@ -58,3 +61,54 @@ class Document(models.Model):
class Meta:
verbose_name = "document"
verbose_name_plural = "documents"
class ImageCaptionBlock(blocks.StructBlock):
""" Une image avec légende """
image = ImageChooserBlock(label='Image')
caption = blocks.CharBlock(
required=False,
label="Légende",
help_text=(
"Une description de l'image, qui sera affichée en dessous."
),
)
class Meta:
label = "Image avec légende"
icon = 'image'
template = 'blocks/image_caption.html'
@register_snippet
class Gallery(models.Model):
""" Une galerie d'images avec légende """
name = models.CharField('Nom', max_length=128)
images = StreamField(
blocks.StreamBlock([('photo_caption', ImageCaptionBlock())],)
)
panels = [FieldPanel('name'), StreamFieldPanel('images')]
def __str__(self):
return self.name
class Meta:
verbose_name = "Galerie"
verbose_name_plural = "Galeries"
@register_snippet
class Ressourcerie(models.Model):
""" Une ressourcerie du territoire """
name = models.CharField('Nom', max_length=128)
link = models.URLField('Lien vers le site', blank=True)
def __str__(self):
return self.name
class Meta:
verbose_name = "Ressourcerie"
verbose_name_plural = "Ressourceries"

Voir le fichier

@ -4,7 +4,7 @@ from django.urls import reverse_lazy
from django.views.generic import CreateView, DeleteView, ListView, UpdateView
from .forms import CategoryForm, DocumentForm
from .models import Category, Document
from .models import Category, Document, Gallery, Ressourcerie
class DocumentCreateView(LoginRequiredMixin, CreateView):
@ -30,6 +30,14 @@ class CategoryListView(ListView):
template_name = 'documents/category_list.html'
model = Category
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['ressourceries'] = Ressourcerie.objects.all()
context['gallery'] = Gallery.objects.filter(
name='ressourceries'
).first()
return context
class CategoryUpdateView(LoginRequiredMixin, UpdateView):
model = Category

Voir le fichier

@ -0,0 +1,6 @@
{% load wagtailimages_tags %}
<figure class="figure">
{% image self.image height-250 class="figure-img img-fluid" %}
<figcaption class="figure-caption">{{ self.caption }}</figcaption>
</figure>

Voir le fichier

@ -1,4 +1,5 @@
{% extends "base.html" %}
{% load static wagtailcore_tags %}
{% block title %}Ressources{% endblock %}
{% block page_title %}Ressources{% endblock %}
@ -18,4 +19,19 @@
{% else %}
<p class="lead">Il n'y a aucune categorie de ressources pour le moment.</p>
{% endif %}
<h1 class="mt-1 mb-3">Équipez vos locaux avec les ressourceries du territoire</h1>
<p class="lead">Le département dispose de nombreuses ressourceries dans lesquelles vous pouvez vous équiper<p>
{% for block in gallery.images %}
{% include_block block %}
{% endfor %}
{% if ressourceries %}
<ul class="list-group list-group-flush">
{% for ressourcerie in ressourceries %}
<li class="list-group-item"><a href="{{ ressourcerie.link }}">{{ ressourcerie.name }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}