]> git.menne-pb.de Git - pinpoint.git/commitdiff
Add recursive categories. From is currently not working correctly
authorJörn Menne <jmenne@fedora.de>
Mon, 6 Jan 2025 14:03:30 +0000 (15:03 +0100)
committerJörn Menne <jmenne@fedora.de>
Mon, 6 Jan 2025 14:03:30 +0000 (15:03 +0100)
georeport/forms.py
georeport/migrations/0005_category_parent.py [new file with mode: 0644]
georeport/models.py
georeport/templates/georeport/category.html
georeport/views.py

index 3fe7bde3d5890167ef23156444ce6ffd2b871f1d..9d20862ae98a47967d02970cb0bcc9b18c50dc93 100644 (file)
@@ -6,4 +6,4 @@ from .models import Report
 class ReportForm(ModelForm):
     class Meta:
         model = Report
-        fields = ["title", "description", "latitude", "longitude", "category", "email"]
+        fields = ["title", "description", "latitude", "longitude", "email", "category"]
diff --git a/georeport/migrations/0005_category_parent.py b/georeport/migrations/0005_category_parent.py
new file mode 100644 (file)
index 0000000..95fdee8
--- /dev/null
@@ -0,0 +1,19 @@
+# Generated by Django 5.1.4 on 2025-01-06 10:04
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('georeport', '0004_report_email_report_published'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='category',
+            name='parent',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='georeport.category'),
+        ),
+    ]
index 0674d1a6142c95267b1ecd3e060d316a8f0c1b9e..73f28df9f0fcedcb8fba711078ac4f12ed3da913 100644 (file)
@@ -6,6 +6,16 @@ from django.db import models
 
 class Category(models.Model):
     name = models.CharField(max_length=100)
+    parent = models.ForeignKey(
+        "self",
+        on_delete=models.CASCADE,
+        related_name="children",
+        null=True,
+        blank=True,
+    )
+
+    class Meta:
+        verbose_name_plural = "Categories"
 
     def __str__(self):
         return self.name
index bc697050f7bc4b3c1c0a8e57be48163ad84884dd..e9986a17fa29836a8929f7bf085162cf1cd686e8 100644 (file)
@@ -5,5 +5,16 @@
 {% block body %}
     <h1>Categoriy {{ category.id }}</h1>
     <p>Name: {{ category.name }}</p>
+    {% if category.parent %}
+    <p>Supercategory:<a href={{category.parent.id }}>{{category.parent}}</a></p>
+    {%endif%}
+    {% if category.children.exists %}
+    <h3>Subcategories:</h3>
+    <ul>
+        {% for child in category.children.all %}
+            <li><a href={{ child.id }}>{{child.name}} </a></li>
+        {% endfor %}
+    </ul>
+    {% endif %}
     <a href="{% url 'index' %}">Back</a>
 {% endblock %}
index 083b39cbbe6453ad4177de4043c5d645fab25ec0..829af8aca45df3f08628112a2f8220cfb97da2a1 100644 (file)
@@ -1,10 +1,11 @@
-from django.shortcuts import get_object_or_404, render, redirect
-from django.http import HttpResponseForbidden
-# Create your views here.
+from django.http import HttpResponseForbidden, JsonResponse
+from django.shortcuts import get_object_or_404, redirect, render
 
-from .models import Category, Report
 from .forms import ReportForm
 
+# Create your views here.
+from .models import Category, Report
+
 
 def index(request):
     reports = Report.objects.all()