From ed88a39eae58c28024ba57a1b9940d6f37d5ab14 Mon Sep 17 00:00:00 2001 From: George Silva <863039+george-silva@users.noreply.github.com> Date: Mon, 21 Oct 2024 17:08:03 -0300 Subject: [PATCH] improvements to admin (#1824) --- src/planscape/datasets/admin.py | 30 ++++++++++++++++++++++++++++ src/planscape/datasets/forms.py | 10 +++++++++- src/planscape/organizations/admin.py | 9 +++++++++ src/planscape/organizations/forms.py | 22 ++++++++++++++++++++ 4 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/planscape/organizations/forms.py diff --git a/src/planscape/datasets/admin.py b/src/planscape/datasets/admin.py index a81e04493..73b818d9c 100644 --- a/src/planscape/datasets/admin.py +++ b/src/planscape/datasets/admin.py @@ -1,3 +1,4 @@ +from typing import Any, Dict from django.contrib import admin from datasets.forms import DatasetAdminForm, CategoryAdminForm from datasets.models import Category, DataLayer, Dataset @@ -8,6 +9,10 @@ class CategoryAdmin(TreeAdmin): form = CategoryAdminForm search_fields = ["name"] + list_display = ("id", "name", "order", "dataset") + + def get_changeform_initial_data(self, request) -> Dict[str, Any]: + return {"created_by": request.user} class DatasetAdmin(admin.ModelAdmin): @@ -15,6 +20,14 @@ class DatasetAdmin(admin.ModelAdmin): search_fields = ["organization__name__icontains", "name"] autocomplete_fields = ["organization"] form = DatasetAdminForm + list_display = ("id", "name", "visibility", "organization") + list_display_links = ( + "id", + "name", + ) + + def get_changeform_initial_data(self, request) -> Dict[str, Any]: + return {"created_by": request.user} class DataLayerAdmin(admin.ModelAdmin): @@ -25,6 +38,23 @@ class DataLayerAdmin(admin.ModelAdmin): "name", ] autocomplete_fields = ["organization", "created_by", "dataset", "category"] + list_display = ( + "id", + "name", + "status", + "type", + "geometry_type", + "dataset", + "category", + "organization", + ) + list_display_links = ( + "id", + "name", + "status", + "type", + "geometry_type", + ) admin.site.register(Dataset, DatasetAdmin) diff --git a/src/planscape/datasets/forms.py b/src/planscape/datasets/forms.py index 80230d9bf..bb11c73ed 100644 --- a/src/planscape/datasets/forms.py +++ b/src/planscape/datasets/forms.py @@ -8,6 +8,10 @@ class DatasetAdminForm(forms.ModelForm): description = forms.CharField(widget=forms.Textarea, required=False) version = forms.CharField(required=False) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["created_by"].disabled = True + class Meta: model = Dataset fields = ( @@ -23,12 +27,16 @@ class Meta: class CategoryAdminForm(movenodeform_factory(Category)): order = forms.IntegerField(required=False) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["created_by"].disabled = True + class Meta: model = Category fields = ( "organization", - "created_by", "dataset", + "created_by", "name", "order", ) diff --git a/src/planscape/organizations/admin.py b/src/planscape/organizations/admin.py index 5a014ae80..2104866fe 100644 --- a/src/planscape/organizations/admin.py +++ b/src/planscape/organizations/admin.py @@ -1,9 +1,18 @@ +from typing import Any, Dict from django.contrib import admin +from organizations.forms import OrganizationAdminForm from organizations.models import Organization class OrganizationAdmin(admin.ModelAdmin): search_fields = ["name"] + list_display = ("id", "name", "type") + list_display_links = ("id", "name") + list_filter = ("type",) + form = OrganizationAdminForm + + def get_changeform_initial_data(self, request) -> Dict[str, Any]: + return {"created_by": request.user} admin.site.register(Organization, OrganizationAdmin) diff --git a/src/planscape/organizations/forms.py b/src/planscape/organizations/forms.py new file mode 100644 index 000000000..85657a115 --- /dev/null +++ b/src/planscape/organizations/forms.py @@ -0,0 +1,22 @@ +from django import forms + +from organizations.models import Organization + + +class OrganizationAdminForm(forms.ModelForm): + description = forms.CharField(widget=forms.Textarea, required=False) + version = forms.CharField(required=False) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["created_by"].disabled = True + + class Meta: + model = Organization + fields = ( + "created_by", + "name", + "type", + "type_other", + "website", + )