Repository URL to install this package:
Version:
0.3.0a1 ▾
|
from dj_kaos.models.configs import ModelConfig
from dj_kaos.models.consts import FieldsetHeader
class HasRelatedFieldConfig(ModelConfig):
def __init__(self, model_or_config, field_name,
edit_readonly=False,
fieldset_header=None,
**kwargs):
super().__init__(**kwargs)
self.related_config = model_or_config if isinstance(model_or_config, ModelConfig) else model_or_config.config
self.fields = (field_name,)
self.list_display = (field_name,)
self.list_filter = (field_name,)
self.list_filter_autocomplete = (field_name,)
if edit_readonly:
self.edit_readonly_fields = (field_name,)
self._fieldsets = {
fieldset_header: {'fields': (field_name,)},
}
self.filterset_fields = self.related_config.make_nested_filterset_fields(field_name)
class HasDescriptionModelConfig(ModelConfig):
fields = ('description',)
_fieldsets = {
FieldsetHeader.DETAILS: {'fields': fields, 'classes': ('collapse', 'collapsed')}
}
class HasMediaModelConfig(ModelConfig):
def __init__(self, *media_fields: str, **kwargs):
super().__init__(**kwargs)
self.media_fields = media_fields
self.fields = media_fields
self._fieldsets = {
FieldsetHeader.MEDIA: {
'fields': media_fields,
'classes': ('collapse', 'collapsed'),
}
}
class TitledModelConfig(ModelConfig):
readonly_fields = ('__str__',)
list_display = ('__str__',)
fields = ('__str__',)
_fieldsets = {
None: {'fields': fields},
}
class StatusIconsModelConfig(ModelConfig):
list_display = ('status_icons_display',)
_orders = {
'list_display': 1000,
}
__all__ = (
'HasRelatedFieldConfig',
'HasDescriptionModelConfig',
'HasMediaModelConfig',
'StatusIconsModelConfig',
)