59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
from django.contrib.admin import ModelAdmin
|
|
from django.contrib.admin.options import StackedInline
|
|
from django.forms import ModelForm
|
|
from django.urls import reverse_lazy
|
|
|
|
from judge.models import TicketMessage
|
|
from judge.widgets import (
|
|
AdminHeavySelect2MultipleWidget,
|
|
AdminHeavySelect2Widget,
|
|
HeavyPreviewAdminPageDownWidget,
|
|
)
|
|
|
|
|
|
class TicketMessageForm(ModelForm):
|
|
class Meta:
|
|
widgets = {
|
|
"user": AdminHeavySelect2Widget(
|
|
data_view="profile_select2", attrs={"style": "width: 100%"}
|
|
),
|
|
}
|
|
if HeavyPreviewAdminPageDownWidget is not None:
|
|
widgets["body"] = HeavyPreviewAdminPageDownWidget(
|
|
preview=reverse_lazy("ticket_preview")
|
|
)
|
|
|
|
|
|
class TicketMessageInline(StackedInline):
|
|
model = TicketMessage
|
|
form = TicketMessageForm
|
|
fields = ("user", "body")
|
|
|
|
|
|
class TicketForm(ModelForm):
|
|
class Meta:
|
|
widgets = {
|
|
"user": AdminHeavySelect2Widget(
|
|
data_view="profile_select2", attrs={"style": "width: 100%"}
|
|
),
|
|
"assignees": AdminHeavySelect2MultipleWidget(
|
|
data_view="profile_select2", attrs={"style": "width: 100%"}
|
|
),
|
|
}
|
|
|
|
|
|
class TicketAdmin(ModelAdmin):
|
|
fields = (
|
|
"title",
|
|
"time",
|
|
"user",
|
|
"assignees",
|
|
"content_type",
|
|
"object_id",
|
|
"notes",
|
|
)
|
|
readonly_fields = ("time",)
|
|
list_display = ("title", "user", "time", "linked_item")
|
|
inlines = [TicketMessageInline]
|
|
form = TicketForm
|
|
date_hierarchy = "time"
|