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'