diff --git a/people/admin.py b/people/admin.py
index f63ed2f..8c4d687 100644
--- a/people/admin.py
+++ b/people/admin.py
@@ -25,34 +25,30 @@ class BasePersonAdmin(ModelAdmin):
"user__email",
]
autocomplete_fields = [
- "user",
"occupation",
"city",
"nationality",
]
def picture_display(self, obj=None):
- return mark_safe(f'
')
+ return mark_safe(
+ f'
'
+ )
- picture_display.short_description = _("See picture")
+ picture_display.short_description = _("Profile Picture")
- def get_readonly_fields(self, request, obj=None):
- return ["picture_display",]
+ readonly_fields = ("picture_display",)
def get_fieldsets(self, request, obj=None):
if obj is None or not obj.picture:
main_fields = [
("picture",),
- ("first_name", "last_name", "gender"),
]
else:
main_fields = [
(
"picture_display",
"picture",
- "first_name",
- "last_name",
- "gender",
),
]
@@ -62,7 +58,7 @@ def get_fieldsets(self, request, obj=None):
{
"fields": main_fields
+ [
- ("city",),
+ ("first_name", "last_name", "gender", "city"),
("personal_email", "birthday"),
]
},
@@ -74,10 +70,10 @@ def get_fieldsets(self, request, obj=None):
("document_type", "document_id"),
("marital_status",),
("phone_number", "secondary_phone_number"),
- ("nationality", ),
- ("address", ),
- ("neighborhood", ),
- ("occupation", ),
+ ("nationality",),
+ ("address",),
+ ("neighborhood",),
+ ("occupation",),
]
},
),
@@ -86,20 +82,17 @@ def get_fieldsets(self, request, obj=None):
@admin.register(Person)
class PersonAdmin(BasePersonAdmin):
-
- def get_fieldsets(self, request, obj=None):
- fieldsets = super().get_fieldsets(request, obj=obj)
- return fieldsets
+ list_display = ["first_name", "last_name", "list_pets",]
+ inlines = [
+ PetInline,
+ ]
def has_delete_permission(
self, request, obj=None
): # This allows to delete only if you're a superuser
return request.user.is_superuser and request.user.is_active
- inlines = [PetInline,]
- list_display = ["first_name", "last_name", "list_pets"]
-
def list_pets(self, obj):
return ", ".join([str(pet) for pet in obj.pets.all()])
- list_pets.short_description = _("Pets")
+ list_pets.short_description = _("My Pets")
diff --git a/people/models.py b/people/models.py
index 4534dfe..886eca9 100644
--- a/people/models.py
+++ b/people/models.py
@@ -145,6 +145,15 @@ class Person(models.Model):
help_text=_("Max size allowed: 20Mbs"),
)
+ @property
+ def picture_url(self):
+ """
+ Return self.picture.url if self.picture is not None,
+ 'url' exist and has a value, else, return None.
+ """
+ if self.picture and hasattr(self.picture, "url"):
+ return self.picture.url
+
def create_user(self):
if self.user_id is not None:
return
diff --git a/pet/admin.py b/pet/admin.py
index 0f87689..7e9b6d9 100644
--- a/pet/admin.py
+++ b/pet/admin.py
@@ -1,4 +1,6 @@
from django.contrib import admin
+from django.utils.safestring import mark_safe
+from django.utils.translation import gettext_lazy as _
from pet.filters import HasOwnerFilter
from pet.models import Breed, Pet
@@ -8,9 +10,33 @@
class PetAdmin(admin.ModelAdmin):
search_fields = ["name", "owner"]
list_display = ("name", "breed", "gender", "age", "owner", "has_owner", "is_neutered")
- readonly_fields = ("age", )
+ readonly_fields = ("age", "picture_display",)
list_filter = (HasOwnerFilter,)
+ def picture_display(self, obj=None):
+ return mark_safe(
+ f'
'
+ )
+
+ picture_display.short_description = _("Profile Picture")
+
+ def get_fieldsets(self, request, obj=None):
+ if obj is None or not obj.picture_url:
+ picture_fields = [
+ ("picture",),
+ ]
+ else:
+ picture_fields = [
+ ("picture_display", "picture"),
+ ]
+ return (
+ (
+ None, {
+ "fields": picture_fields + [("name", "breed", "gender", "age"), ]
+ }
+ ),
+ )
+
@admin.register(Breed)
class BreedAdmin(admin.ModelAdmin):
@@ -19,4 +45,5 @@ class BreedAdmin(admin.ModelAdmin):
class PetInline(admin.TabularInline):
model = Pet
+ fields = ("name", "breed", "gender")
extra = 0