bifurqué depuis cliss21/lma-wwc
1
0
Bifurcation 0

ref(core): Le champ fiche_methode des fiches reflex devient un modèle saisissable depuis l'admin

main
raphael 2022-10-04 17:04:40 +02:00 commité par raphael
Parent ebe3f99395
révision 8c6cdd8a6f
5 fichiers modifiés avec 63 ajouts et 31 suppressions

Voir le fichier

@ -26,6 +26,11 @@ class FicheReflexAdmin(ModelAdmin):
menu_icon = 'form'
class FicheMethodeAdmin(ModelAdmin):
model = models.FicheMethode
menu_icon = 'form'
class StructureAdmin(ModelAdmin):
model = models.Structure
menu_icon = 'group'
@ -124,6 +129,7 @@ class WWCAdminGroup(ModelAdminGroup):
items = (
ThematiqueAdmin,
FicheReflexAdmin,
FicheMethodeAdmin,
StructureAdmin,
ContactAdmin,
RessourceTypeAdmin,

Voir le fichier

@ -15,10 +15,3 @@ class BaseStreamBlock(blocks.StreamBlock):
paragraph_block = ParagraphBlock()
button_block = ButtonBlock()
image_block = ImageBlock()
class MethodeBlock(blocks.StructBlock):
"""Une méthode : une réponse à une question posée par une fiche réflexe"""
title = blocks.CharBlock(label="Titre")
content = BaseStreamBlock(label="Contenu")

Voir le fichier

@ -3,15 +3,13 @@ from django.core.validators import RegexValidator
from django.db import models
from django.utils import timezone
from wagtail.core.fields import RichTextField, StreamField
from wagtail.core.fields import RichTextField
from modelcluster.contrib.taggit import ClusterTaggableManager
from modelcluster.fields import ParentalKey
from modelcluster.models import ClusterableModel
from taggit.models import TaggedItemBase
from .blocks import MethodeBlock
URIGEO_REGEX = '^geo:([-+]?\d+(?:\.\d+)?),([-+]?\d+(?:\.\d+)?)(?:\?z=(\d{1,2}))?$' # noqa E501
EDITOR_FEATURES = ['bold', 'italic', 'link']
@ -62,10 +60,6 @@ class FicheReflex(ClusterableModel):
related_name="thematique",
verbose_name="Thématique(s)",
)
fiches_methodes = StreamField(
[('methode', MethodeBlock())],
blank=True,
)
published = models.BooleanField("publié", default=True)
def __str__(self):
@ -73,7 +67,29 @@ class FicheReflex(ClusterableModel):
class Meta:
verbose_name = "fiche réflexe"
verbose_name_plural = "fiches réflexes"
verbose_name_plural = "fiches réflexe"
class FicheMethode(models.Model):
"""Une fiche qui propose des solutions à un problème"""
name = models.CharField("titre", max_length=128)
fiche_reflex = ParentalKey(
'core.FicheReflex',
on_delete=models.CASCADE,
related_name='fiches_methode',
)
contenu = RichTextField(
"contenu",
features=EDITOR_FEATURES,
)
def __str__(self):
return self.name
class Meta:
verbose_name = "fiche méthode"
verbose_name_plural = "fiches méthode"
class Structure(models.Model):

Voir le fichier

@ -19,6 +19,14 @@ def fiche_reflex():
)
@pytest.fixture
def fiche_methode(fiche_reflex):
return models.FicheMethode.objects.create(
name='Nom de la méthode pour accueillir des migrants dans son village',
fiche_reflex=fiche_reflex,
)
@pytest.fixture
def structure():
return models.Structure.objects.create(nom='Cliss21')

Voir le fichier

@ -1,5 +1,4 @@
from wagtail.admin.rich_text import get_rich_text_editor_widget
from wagtail.tests.utils.form_data import nested_form_data, streamfield
from wagtail_factories import ImageFactory
@ -40,21 +39,7 @@ class TestFicheReflexAdmin(ModelAdminViewMixin):
form['thematique'] = [
thematique.pk,
]
methode = {
'title': 'Première méthode',
'content': streamfield(
[
(
'paragraph_block',
EDITOR_WIDGET.format_value('<p>Une Description</p>'),
),
]
),
}
extra_fields = nested_form_data(
{'fiches_methodes': streamfield([('methode', methode)])}
)
response = submit(form, extra_fields).follow()
response = submit(form).follow()
assert (
'Fiche réflexe &#x27;Comment accueillir des migrants dans son '
'village ?&#x27; créé(e)'
@ -69,6 +54,30 @@ class TestFicheReflexAdmin(ModelAdminViewMixin):
) in response
class TestFicheMethodeAdmin(ModelAdminViewMixin):
model = models.FicheMethode
def test_create(self, fiche_reflex):
form = self.get_create_form()
form[
'name'
] = 'Nom de la méthode pour accueillir des migrants dans son village'
form['fiche_reflex'] = fiche_reflex.id
response = submit(form).follow()
assert (
'Fiche méthode &#x27;Nom de la méthode pour accueillir des '
'migrants dans son village&#x27; créé(e).'
) in response
def test_delete(self, fiche_methode):
form = self.get_delete_form(fiche_methode)
response = form.submit().follow()
assert (
'fiche méthode &#x27;Nom de la méthode pour accueillir des '
'migrants dans son village&#x27; supprimé(e)'
) in response
class TestStructureAdmin(ModelAdminViewMixin):
model = models.Structure