Skip to content

Commit

Permalink
relais: add dispositions specifiques
Browse files Browse the repository at this point in the history
  • Loading branch information
brmzkw committed May 2, 2024
1 parent 161c79c commit bb42864
Show file tree
Hide file tree
Showing 11 changed files with 259 additions and 3 deletions.
10 changes: 10 additions & 0 deletions mesads/app/templatetags/markdownify.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django import template
from django.utils.safestring import mark_safe
from markdownx.utils import markdownify as utils_markdownify

register = template.Library()


@register.filter
def markdownify(text):
return mark_safe(utils_markdownify(text))
10 changes: 10 additions & 0 deletions mesads/app/templatetags/test_markdownify.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from unittest.case import TestCase

from .markdownify import markdownify


class TestMarkdownify(TestCase):
def test_markdownify(self):
self.assertEqual(
markdownify("**bold** statement"), "<p><strong>bold</strong> statement</p>"
)
1 change: 1 addition & 0 deletions mesads/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ def parse_env_bool(key, default):
"rest_framework.authtoken",
"django_cleanup.apps.CleanupConfig",
"mjml",
"markdownx",
"mesads.app",
"mesads.users",
"mesads.fradm",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{% extends "../../base-sidemenu.html" %}
{% load markdownify %}

{% block sidemenu %}{% include "./sidemenu.html" %}{% endblock %}

Expand Down Expand Up @@ -73,6 +74,13 @@ <h1>Enregistrement d'un nouveau véhicule relais</h1>
<strong>{{ object.departement.numero }} - {{ object.departement.libelle }}</strong>
</div>

{% if disposition_specifique %}
<div class="fr-alert fr-alert--error fr-mb-3w">
<h3 class="fr-alert__title">Dispositions spécifiques pour {{ object.departement.display_fulltext }}</h3>
{{ disposition_specifique.message|markdownify }}
</div>
{% endif %}

{% comment %} {% include 'form_fields/string.html' with field=form.immatriculation field_errors=form.errors.immatriculation required=form.fields.immatriculation.required readonly=True %} {% endcomment %}
{% include 'form_fields/string.html' with field=form.immatriculation field_errors=form.errors.immatriculation required=form.fields.immatriculation.required %}
{% else %}
Expand Down
1 change: 1 addition & 0 deletions mesads/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
path("", include("mesads.app.urls")),
path("registre_vehicules_relais/", include("mesads.vehicules_relais.urls")),
path("__debug__/", include(debug_toolbar.urls)),
path("markdownx/", include("markdownx.urls")),
]

if settings.DEBUG:
Expand Down
27 changes: 26 additions & 1 deletion mesads/vehicules_relais/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
from django.urls import reverse
from django.utils.safestring import mark_safe

from .models import Vehicule, Proprietaire
from markdownx.admin import MarkdownxModelAdmin

from .models import Vehicule, Proprietaire, DispositionSpecifique


class UsersInline(admin.TabularInline):
Expand Down Expand Up @@ -146,3 +148,26 @@ def get_queryset(self, request):
)

list_filter = ("departement",)


@admin.register(DispositionSpecifique)
class DispositionSpecifiqueAdmin(MarkdownxModelAdmin):
list_display = (
"departement",
"short_message",
)

def short_message(self, obj):
return obj.message[:200] + "..." if len(obj.message) > 200 else obj.message

fields = (
"departement",
"message",
)

search_fields = (
"departement__numero",
"departement__libelle",
)

autocomplete_fields = ("departement",)
51 changes: 51 additions & 0 deletions mesads/vehicules_relais/migrations/0005_dispositionspecifique.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Generated by Django 4.1.9 on 2024-05-02 10:34

from django.db import migrations, models
import django.db.models.deletion
import markdownx.models
import mesads.app.models


class Migration(migrations.Migration):
dependencies = [
("fradm", "0002_create_extension_unaccent"),
("vehicules_relais", "0004_alter_vehicule_immatriculation"),
]

operations = [
migrations.CreateModel(
name="DispositionSpecifique",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"message",
markdownx.models.MarkdownxField(
blank=True,
help_text="Format Markdown autorisé",
verbose_name="Message à afficher sur le formulaire de création de véhicule",
),
),
(
"departement",
models.OneToOneField(
on_delete=django.db.models.deletion.RESTRICT,
to="fradm.prefecture",
verbose_name="Département concerné",
),
),
],
options={
"verbose_name": "Disposition spécifique",
"verbose_name_plural": "Dispositions spécifiques",
},
bases=(mesads.app.models.CharFieldsStripperMixin, models.Model),
),
]
26 changes: 26 additions & 0 deletions mesads/vehicules_relais/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

import reversion

from markdownx.models import MarkdownxField

from mesads.fradm.models import Commune, Prefecture
from mesads.app.models import (
SmartValidationMixin,
Expand Down Expand Up @@ -222,3 +224,27 @@ def main_features(self):
blank=True,
verbose_name="Commune où est situé le véhicule",
)


@reversion.register
class DispositionSpecifique(CharFieldsStripperMixin, models.Model):
"""DispositionSpecifique stores a message that can be displayed on the
Vehicule form registered to a specific departement."""

class Meta:
verbose_name = "Disposition spécifique"
verbose_name_plural = "Dispositions spécifiques"

departement = models.OneToOneField(
Prefecture,
on_delete=models.RESTRICT,
null=False,
verbose_name="Département concerné",
)

message = MarkdownxField(
null=False,
blank=True,
verbose_name="Message à afficher sur le formulaire de création de véhicule",
help_text="Format Markdown autorisé",
)
8 changes: 7 additions & 1 deletion mesads/vehicules_relais/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

from mesads.app.reversion_diff import ModelHistory

from .models import Proprietaire, Vehicule
from .models import Proprietaire, Vehicule, DispositionSpecifique
from .forms import (
ProprietaireDeleteForm,
ProprietaireForm,
Expand Down Expand Up @@ -190,6 +190,12 @@ class ProprietaireVehiculeUpdateView(RevisionMixin, UpdateView):
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx["proprietaire"] = self.kwargs["proprietaire"]

if ctx.get("vehicule"):
ctx["disposition_specifique"] = DispositionSpecifique.objects.filter(
departement=ctx["vehicule"].departement
).first()

return ctx

def get_object(self):
Expand Down
119 changes: 118 additions & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ xlsxwriter = "^3.1.2"
openpyxl = "^3.1.2"
unidecode = "^1.3.7"
pyyaml = "^6.0.1"
django-markdownx = "^4.0.7"

[tool.poetry.dev-dependencies]
django-debug-toolbar = "^3.2.2"
Expand Down

0 comments on commit bb42864

Please sign in to comment.