Skip to content

Commit

Permalink
Staff list fields can use callables
Browse files Browse the repository at this point in the history
  • Loading branch information
davegaeddert committed Jan 30, 2025
1 parent b1f1be8 commit 357c4fa
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
17 changes: 13 additions & 4 deletions plain-staff/plain/staff/views/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,17 +244,26 @@ def get_displays(self) -> list[str]:
return self.displays.copy() # Avoid mutating the class attribute itself

def get_field_value(self, obj, field: str):
# Try basic dict lookup first
if field in obj:
return obj[field]
try:
# Try basic dict lookup first
if field in obj:
return obj[field]
except TypeError:
pass

# Try dot notation
if "." in field:
field, subfield = field.split(".", 1)
return self.get_field_value(obj[field], subfield)

# Try regular object attribute
return getattr(obj, field)
attr = getattr(obj, field)

# Call if it's callable
if callable(attr):
return attr()
else:
return attr

def get_object_pk(self, obj):
try:
Expand Down
10 changes: 8 additions & 2 deletions plain-staff/plain/staff/views/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,10 @@ def search_queryset(self, queryset):
return queryset

def get_field_value(self, obj, field: str):
return get_model_field(obj, field)
try:
return super().get_field_value(obj, field)
except AttributeError:
return get_model_field(obj, field)

def get_field_value_template(self, obj, field: str, value):
templates = super().get_field_value_template(obj, field, value)
Expand Down Expand Up @@ -140,7 +143,10 @@ def get_template_context(self):
return context

def get_field_value(self, obj, field: str):
return get_model_field(obj, field)
try:
return super().get_field_value(obj, field)
except AttributeError:
return get_model_field(obj, field)

def get_object(self):
return self.model.objects.get(pk=self.url_kwargs["pk"])
Expand Down

0 comments on commit 357c4fa

Please sign in to comment.