Source code for evennia.scripts.admin
#
# This sets up how models are displayed
# in the web admin interface.
#
from django.conf import settings
from evennia.typeclasses.admin import AttributeInline, TagInline
from evennia.scripts.models import ScriptDB
from django.contrib import admin
[docs]class ScriptTagInline(TagInline):
"""
Inline script tags.
"""
model = ScriptDB.db_tags.through
related_field = "scriptdb"
[docs]class ScriptAttributeInline(AttributeInline):
"""
Inline attribute tags.
"""
model = ScriptDB.db_attributes.through
related_field = "scriptdb"
[docs]class ScriptDBAdmin(admin.ModelAdmin):
"""
Displaying the main Script page.
"""
list_display = (
"id",
"db_key",
"db_typeclass_path",
"db_obj",
"db_interval",
"db_repeats",
"db_persistent",
)
list_display_links = ("id", "db_key")
ordering = ["db_obj", "db_typeclass_path"]
search_fields = ["^db_key", "db_typeclass_path"]
save_as = True
save_on_top = True
list_select_related = True
raw_id_fields = ("db_obj",)
fieldsets = (
(
None,
{
"fields": (
("db_key", "db_typeclass_path"),
"db_interval",
"db_repeats",
"db_start_delay",
"db_persistent",
"db_obj",
)
},
),
)
inlines = [ScriptTagInline, ScriptAttributeInline]
[docs] def save_model(self, request, obj, form, change):
"""
Model-save hook.
Args:
request (Request): Incoming request.
obj (Object): Database object.
form (Form): Form instance.
change (bool): If this is a change or a new object.
"""
obj.save()
if not change:
# adding a new object
# have to call init with typeclass passed to it
obj.set_class_from_typeclass(typeclass_path=obj.db_typeclass_path)
admin.site.register(ScriptDB, ScriptDBAdmin)