Skip to content

message_request_views

django_spire.ai.chat.views.message_request_views

request_message_render_view

Source code in django_spire/ai/chat/views/message_request_views.py
def request_message_render_view(request: WSGIRequest) -> HttpResponse:
    body_data = json.loads(request.body)

    chat_id = body_data['chat_id']

    current_datetime = now()
    formatted_timestamp = current_datetime.strftime('%b %d, %Y at %I:%M %p')

    if chat_id in {0, '0', ''}:
        chat = Chat.objects.create(
            user=request.user,
            name=body_data['message_body'][:64],
            last_message_datetime=current_datetime,
        )
    else:
        chat = Chat.objects.by_user(request.user).get(id=chat_id)

        if chat.is_empty:
            chat.name = body_data['message_body'][:64]
            chat.save()

    message_response_group = MessageResponseGroup()

    user_message_response = MessageResponse(
        type=MessageResponseType.REQUEST,
        sender='You',
        message_intel=DefaultMessageIntel(text=body_data['message_body']),
        message_timestamp=formatted_timestamp,
    )

    message_response_group.add_message_response(user_message_response)

    chat.add_message_response(user_message_response)

    persona_name = getattr(settings, 'DJANGO_SPIRE_AI_PERSONA_NAME', 'AI Assistant')

    message_response_group.add_message_response(
        MessageResponse(
            type=MessageResponseType.LOADING_RESPONSE,
            sender=persona_name,
            message_intel=DefaultMessageIntel(text=body_data['message_body']),
            synthesis_speech=body_data.get('synthesis_speech', False),
        )
    )

    return HttpResponse(
        message_response_group.render_to_html_string(
            context_data={'chat_id': chat.id, 'chat_workflow_name': persona_name}
        )
    )