Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into feature/instructor-view
Browse files Browse the repository at this point in the history
  • Loading branch information
pyDez committed Jan 17, 2025
2 parents 9f26b1d + d7ef44f commit 5059a50
Show file tree
Hide file tree
Showing 39 changed files with 1,007 additions and 78 deletions.
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,4 +159,3 @@ jobs:
name: playwright-report
path: playwright-report/
retention-days: 30

46 changes: 45 additions & 1 deletion envergo/hedges/admin.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import json

from django import forms
from django.contrib import admin
from django.template.loader import render_to_string
from django.template.response import TemplateResponse
from django.urls import path, reverse
from django.utils.html import mark_safe

from envergo.hedges.models import HedgeData
from envergo.hedges.models import HEDGE_TYPES, HedgeData, Species


@admin.register(HedgeData)
Expand All @@ -20,10 +23,12 @@ class HedgeDataAdmin(admin.ModelAdmin):
ordering = ("-created_at",)
readonly_fields = [
"data",
"hedges",
"hedges_to_plant",
"length_to_plant",
"hedges_to_remove",
"length_to_remove",
"all_species",
]

def get_urls(self):
Expand All @@ -49,6 +54,12 @@ def hedges_map(self, request, object_id):
response = TemplateResponse(request, "hedges/admin/hedge_map.html", context)
return response

def hedges(self, obj):
content = render_to_string(
"hedges/admin/_hedges_content.html", context={"hedges": obj.hedges}
)
return mark_safe(content)

def hedges_to_plant(self, obj):
return len(obj.hedges_to_plant())

Expand All @@ -60,3 +71,36 @@ def hedges_to_remove(self, obj):

def length_to_remove(self, obj):
return obj.length_to_remove()

def all_species(self, obj):
"""Display list of protected species related to this hedge set."""

content = render_to_string(
"hedges/admin/_hedges_species.html",
context={"species": obj.get_all_species()},
)
return mark_safe(content)


class SpeciesAdminForm(forms.ModelForm):
hedge_types = forms.MultipleChoiceField(
choices=HEDGE_TYPES,
widget=forms.CheckboxSelectMultiple,
label="Types de haies considérés",
required=False,
)


@admin.register(Species)
class SpeciesAdmin(admin.ModelAdmin):
list_display = [
"common_name",
"scientific_name",
"group",
"hedge_types",
"level_of_concern",
"highly_sensitive",
]
ordering = ["-common_name"]
form = SpeciesAdminForm
list_filter = ["group"]
12 changes: 3 additions & 9 deletions envergo/hedges/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,12 @@
from django import forms
from django.utils.safestring import mark_safe

TYPES = (
("degradee", "Haie dégradée ou résiduelle basse"),
("buissonnante", "Haie buissonnante basse"),
("arbustive", "Haie arbustive basse"),
("mixte", "Haie mixte"),
("alignement", "Alignement d'arbres"),
)
from envergo.hedges.models import HEDGE_TYPES


class HedgeDataBaseForm(forms.Form):
hedge_type = forms.ChoiceField(
choices=TYPES,
choices=HEDGE_TYPES,
label=mark_safe(
"""
<span>Type de haie</span>
Expand Down Expand Up @@ -77,5 +71,5 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Remove the 'degradee' option from hedge_type choices
self.fields["hedge_type"].choices = [
choice for choice in TYPES if choice[0] != "degradee"
choice for choice in HEDGE_TYPES if choice[0] != "degradee"
]
79 changes: 79 additions & 0 deletions envergo/hedges/migrations/0002_species.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Generated by Django 4.2.13 on 2024-12-16 10:52

import django.contrib.postgres.fields
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("hedges", "0001_initial"),
]

operations = [
migrations.CreateModel(
name="Species",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"common_name",
models.CharField(max_length=255, verbose_name="Nom commun"),
),
(
"scientific_name",
models.CharField(max_length=255, verbose_name="Nom scientifique"),
),
(
"hedge_types",
django.contrib.postgres.fields.ArrayField(
base_field=models.CharField(
choices=[
("degradee", "Haie dégradée ou résiduelle basse"),
("buissonnante", "Haie buissonnante basse"),
("arbustive", "Haie arbustive"),
("alignement", "Alignement d'arbres"),
("mixte", "Haie mixte"),
],
max_length=32,
),
size=None,
verbose_name="Types de haies considérés",
),
),
(
"proximite_mare",
models.BooleanField(verbose_name="Mare à moins de 200\xa0m"),
),
(
"proximite_point_eau",
models.BooleanField(
verbose_name="Mare ou ruisseau à moins de 10\xa0m"
),
),
(
"connexion_boisement",
models.BooleanField(
verbose_name="Connectée à un boisement ou à une autre haie"
),
),
(
"vieil_arbre",
models.BooleanField(
verbose_name="Contient un ou plusieurs vieux arbres, fissurés ou avec cavités"
),
),
],
options={
"verbose_name": "Espèce",
"verbose_name_plural": "Espèces",
},
),
]
32 changes: 32 additions & 0 deletions envergo/hedges/migrations/0003_species_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Generated by Django 4.2.13 on 2024-12-19 10:19

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("hedges", "0002_species"),
]

operations = [
migrations.AddField(
model_name="species",
name="group",
field=models.CharField(
choices=[
("amphibiens", "Amphibiens"),
("chauves-souris", "Chauves-souris"),
("flore", "Flore"),
("insectes", "Insectes"),
("mammifères-terrestres", "Mammifères terrestres"),
("oiseaux", "Oiseaux"),
("reptile", "Reptile"),
],
default="flore",
max_length=64,
verbose_name="Groupe",
),
preserve_default=False,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Generated by Django 4.2.13 on 2025-01-07 10:18

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("hedges", "0003_species_group"),
]

operations = [
migrations.AddField(
model_name="species",
name="highly_sentitive",
field=models.BooleanField(
default=False, verbose_name="Particulièrement sensible"
),
),
migrations.AddField(
model_name="species",
name="level_of_concern",
field=models.CharField(
choices=[
("faible", "Faible"),
("moyen", "Moyen"),
("fort", "Fort"),
("tres_fort", "Très fort"),
("majeur", "Majeur"),
],
default="moyen",
max_length=16,
verbose_name="Niveau d'enjeu",
),
preserve_default=False,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.13 on 2025-01-07 10:23

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("hedges", "0004_species_highly_sentitive_species_level_of_concern"),
]

operations = [
migrations.RenameField(
model_name="species",
old_name="highly_sentitive",
new_name="highly_sensitive",
),
]
Loading

0 comments on commit 5059a50

Please sign in to comment.