Skip to content

admin

django_spire.ai.sms.admin

SmsMessageInline

Bases: TabularInline

model = SmsMessage class-attribute instance-attribute

extra = 0 class-attribute instance-attribute

fields = ('body', 'is_inbound', 'is_processed', 'twilio_sid', 'created_datetime') class-attribute instance-attribute

readonly_fields = ('created_datetime',) class-attribute instance-attribute

SmsConversationAdmin

Bases: ModelAdmin

inlines = (SmsMessageInline,) class-attribute instance-attribute

list_display = ('phone_number', 'user', 'last_message_datetime', 'view_sms_messages_link') class-attribute instance-attribute

ordering = ('-last_message_datetime',) class-attribute instance-attribute

readonly_fields = ('created_datetime',) class-attribute instance-attribute

search_fields = ('phone_number', 'user__username', 'user__email') class-attribute instance-attribute

get_queryset

Source code in django_spire/ai/sms/admin.py
def get_queryset(self, request: HttpRequest) -> QuerySet[SmsConversation]:
    queryset = super().get_queryset(request)

    return queryset.annotate(_message_count=Count('message', distinct=True))
Source code in django_spire/ai/sms/admin.py
@admin.display(description='Messages', ordering='_message_count')
def view_sms_messages_link(self, conversation: SmsConversation) -> str:
    url = admin_changelist_url(SmsMessage, conversation__id=str(conversation.id))

    return format_html('<a href="{}">{} Messages</a>', url, conversation._message_count)

SmsMessageAdmin

Bases: ModelAdmin

list_display = ('__str__', 'conversation', 'is_inbound', 'is_processed', 'created_datetime') class-attribute instance-attribute

list_filter = ('is_inbound', 'is_processed') class-attribute instance-attribute

ordering = ('-created_datetime',) class-attribute instance-attribute

readonly_fields = ('created_datetime',) class-attribute instance-attribute

search_fields = ('body', 'conversation__phone_number') class-attribute instance-attribute