Skip to content

Commit

Permalink
feat: make attributes django admin better
Browse files Browse the repository at this point in the history
  • Loading branch information
AmooHashem committed Oct 30, 2024
1 parent 880297b commit 16ddbd8
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 14 deletions.
43 changes: 29 additions & 14 deletions apps/attributes/admin.py
Original file line number Diff line number Diff line change
@@ -1,44 +1,59 @@
from django.contrib import admin

from apps.attributes.models.base import Attribute, IntrinsicAttribute, PerformableAction
from apps.attributes.models.intrinsic_attributes import Enabled, Condition, Cost, Reward
from apps.attributes.models.performable_actions import Buy, Submission, Transition


class AttributeCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'get_related_attributes']


class IntrinsicAttributeCustomAdmin(AttributeCustomAdmin):
list_display = AttributeCustomAdmin.list_display + ['value']


class PerformableActionCustomAdmin(admin.ModelAdmin):
list_display = AttributeCustomAdmin.list_display + []


################ INTRINSIC ATTRIBUTES ################


@admin.register(Enabled)
class EnabledCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description', 'value']
class EnabledCustomAdmin(IntrinsicAttributeCustomAdmin):
list_display = IntrinsicAttributeCustomAdmin.list_display + []


@admin.register(Condition)
class ConditionCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description', 'value']
class ConditionCustomAdmin(IntrinsicAttributeCustomAdmin):
list_display = IntrinsicAttributeCustomAdmin.list_display + []


@admin.register(Cost)
class CostCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description', 'value']
class CostCustomAdmin(IntrinsicAttributeCustomAdmin):
list_display = IntrinsicAttributeCustomAdmin.list_display + []


@admin.register(Reward)
class RewardCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description', 'value']
class RewardCustomAdmin(IntrinsicAttributeCustomAdmin):
list_display = IntrinsicAttributeCustomAdmin.list_display + []


################ PERFORMABLE ACTIONS ################


@admin.register(Transition)
class TransitionCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description', 'destination_state_id']
class TransitionCustomAdmin(PerformableActionCustomAdmin):
list_display = PerformableActionCustomAdmin.list_display + \
['destination_state_id']


@admin.register(Buy)
class BuyCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description']
class BuyCustomAdmin(PerformableActionCustomAdmin):
list_display = PerformableActionCustomAdmin.list_display + []


@admin.register(Submission)
class SubmissionCustomAdmin(admin.ModelAdmin):
list_display = ['title', 'description']
class SubmissionCustomAdmin(PerformableActionCustomAdmin):
list_display = PerformableActionCustomAdmin.list_display + []
6 changes: 6 additions & 0 deletions apps/attributes/models/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ def is_permitted(self, *args, **kwargs) -> bool:

return is_permitted

def get_related_attributes(self):
# Returns a comma-separated string of related attribute titles
return ", ".join([attr.title for attr in self.attributes.all()])

get_related_attributes.short_description = "Related Attributes"

def __str__(self):
return f'{self.__class__.__name__}: {self.title}'

Expand Down

0 comments on commit 16ddbd8

Please sign in to comment.