mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 14:03:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import Annotated
 | 
						|
 | 
						|
from django.http import HttpRequest, HttpResponse
 | 
						|
from django.utils.translation import gettext as _
 | 
						|
from django.utils.translation import override as override_language
 | 
						|
from pydantic import StringConstraints
 | 
						|
 | 
						|
from zerver.lib.exceptions import JsonableError
 | 
						|
from zerver.lib.message import access_message
 | 
						|
from zerver.lib.message_report import send_message_report
 | 
						|
from zerver.lib.response import json_success
 | 
						|
from zerver.lib.typed_endpoint import typed_endpoint
 | 
						|
from zerver.lib.typed_endpoint_validators import check_string_in_validator
 | 
						|
from zerver.models import Realm, UserProfile
 | 
						|
 | 
						|
 | 
						|
@typed_endpoint
 | 
						|
def report_message_backend(
 | 
						|
    request: HttpRequest,
 | 
						|
    user_profile: UserProfile,
 | 
						|
    message_id: int,
 | 
						|
    *,
 | 
						|
    description: Annotated[
 | 
						|
        str, StringConstraints(max_length=Realm.MAX_REPORT_MESSAGE_EXPLANATION_LENGTH)
 | 
						|
    ] = "",
 | 
						|
    report_type: Annotated[str, check_string_in_validator(Realm.REPORT_MESSAGE_REASONS)],
 | 
						|
) -> HttpResponse:
 | 
						|
    if report_type == "other" and description == "":
 | 
						|
        raise JsonableError(_("An explanation is required."))
 | 
						|
 | 
						|
    if user_profile.realm.moderation_request_channel is None:
 | 
						|
        raise JsonableError(_("Message reporting is not enabled in this organization."))
 | 
						|
 | 
						|
    reported_message = access_message(user_profile, message_id, is_modifying_message=False)
 | 
						|
    with override_language(user_profile.realm.default_language):
 | 
						|
        send_message_report(
 | 
						|
            user_profile,
 | 
						|
            user_profile.realm,
 | 
						|
            reported_message,
 | 
						|
            report_type,
 | 
						|
            description,
 | 
						|
        )
 | 
						|
 | 
						|
    return json_success(request)
 |