73 lines
2.1 KiB
Python
73 lines
2.1 KiB
Python
from django.contrib import admin
|
|
|
|
from .models import Transaction, Entity, Relation, Log
|
|
from .widgets import JSONEditor
|
|
|
|
|
|
class TransactionAdmin(admin.ModelAdmin):
|
|
date_hierarchy = 'created'
|
|
list_display = ['id', 'created']
|
|
|
|
|
|
class LeftRelationInlineAdmin(admin.TabularInline):
|
|
fk_name = 'left'
|
|
fields = ['right', 'schema', 'meta', 'content']
|
|
raw_id_fields = ['left', 'right']
|
|
model = Relation
|
|
extra = 0
|
|
|
|
|
|
class RightRelationInlineAdmin(admin.TabularInline):
|
|
fk_name = 'right'
|
|
fields = ['left', 'schema', 'meta', 'content']
|
|
raw_id_fields = ['left', 'right']
|
|
model = Relation
|
|
extra = 0
|
|
|
|
|
|
class LogInlineAdmin(admin.TabularInline):
|
|
model = Log
|
|
fields = ['timestamp', 'transaction', 'content', 'url']
|
|
readonly_fields = ['timestamp', 'transaction']
|
|
extra = 0
|
|
can_delete = False
|
|
|
|
|
|
class DataAdmin(admin.ModelAdmin):
|
|
list_display = ['id', 'schema', 'name', 'created', 'created_ts',
|
|
'modified', 'modified_ts', 'deleted', 'deleted_ts']
|
|
list_filter = ['schema']
|
|
list_select_related = ('schema',)
|
|
raw_id_fields = ['modified', 'created', 'deleted']
|
|
|
|
def name(self, instance):
|
|
return instance.schema.make_caption(instance)
|
|
|
|
def created_ts(self, instance):
|
|
return instance.created.created
|
|
|
|
def modified_ts(self, instance):
|
|
return instance.modified and instance.modified.created
|
|
|
|
def deleted_ts(self, instance):
|
|
return instance.deleted and instance.deleted.created
|
|
|
|
# def get_form(self, request, obj=None, **kwargs):
|
|
# if obj and obj.schema:
|
|
# kwargs['widgets'] = {
|
|
# 'content': JSONEditor(schema=obj.schema.schema),
|
|
# }
|
|
# return super(DataAdmin, self).get_form(request, obj=obj, **kwargs)
|
|
|
|
|
|
class EntityAdmin(DataAdmin):
|
|
inlines = [LeftRelationInlineAdmin, RightRelationInlineAdmin, LogInlineAdmin]
|
|
|
|
|
|
class RelationAdmin(DataAdmin):
|
|
raw_id_fields = DataAdmin.raw_id_fields + ['left', 'right']
|
|
|
|
admin.site.register(Transaction, TransactionAdmin)
|
|
admin.site.register(Entity, EntityAdmin)
|
|
admin.site.register(Relation, RelationAdmin)
|