示例#1
0
def upload_emoji(
    request: HttpRequest,
    user_profile: UserProfile,
    emoji_name: str = REQ(path_only=True)
) -> HttpResponse:
    emoji_name = emoji_name.strip().replace(" ", "_")
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    if RealmEmoji.objects.filter(realm=user_profile.realm,
                                 name=emoji_name,
                                 deactivated=False).exists():
        return json_error(_("A custom emoji with this name already exists."))
    if len(request.FILES) != 1:
        return json_error(_("You must upload exactly one file."))
    emoji_file = list(request.FILES.values())[0]
    if (settings.MAX_EMOJI_FILE_SIZE * 1024 * 1024) < emoji_file.size:
        return json_error(
            _("Uploaded file is larger than the allowed limit of {} MiB").
            format(settings.MAX_EMOJI_FILE_SIZE, ))

    realm_emoji = check_add_realm_emoji(user_profile.realm, emoji_name,
                                        user_profile, emoji_file)
    if realm_emoji is None:
        return json_error(_("Image file upload failed."))
    return json_success()
示例#2
0
def upload_emoji(
    request: HttpRequest,
    user_profile: UserProfile,
    emoji_name: str = REQ(path_only=True)
) -> HttpResponse:
    emoji_name = emoji_name.strip().replace(" ", "_")
    valid_built_in_emoji = name_to_codepoint.keys()
    check_valid_emoji_name(emoji_name)

    if not user_profile.can_add_custom_emoji():
        raise JsonableError(_("Insufficient permission"))

    if RealmEmoji.objects.filter(realm=user_profile.realm,
                                 name=emoji_name,
                                 deactivated=False).exists():
        raise JsonableError(_("A custom emoji with this name already exists."))
    if len(request.FILES) != 1:
        raise JsonableError(_("You must upload exactly one file."))
    if emoji_name in valid_built_in_emoji:
        if not user_profile.is_realm_admin:
            raise JsonableError(
                _("Only administrators can override built-in emoji."))
    emoji_file = list(request.FILES.values())[0]
    assert isinstance(emoji_file, UploadedFile)
    assert emoji_file.size is not None
    if (settings.MAX_EMOJI_FILE_SIZE_MIB * 1024 * 1024) < emoji_file.size:
        raise JsonableError(
            _("Uploaded file is larger than the allowed limit of {} MiB").
            format(settings.MAX_EMOJI_FILE_SIZE_MIB, ))

    check_add_realm_emoji(user_profile.realm, emoji_name, user_profile,
                          emoji_file)
    return json_success(request)
示例#3
0
def upload_emoji(request, user_profile, emoji_name=None, url=REQ()):
    # type: (HttpRequest, UserProfile, Text, Text) -> HttpResponse
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    check_add_realm_emoji(user_profile.realm,
                          emoji_name,
                          url,
                          author=user_profile)
    return json_success()
示例#4
0
def upload_emoji(request, user_profile, emoji_name=None, url=REQ()):
    # type: (HttpRequest, UserProfile, Text, Text) -> HttpResponse
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    try:
        check_add_realm_emoji(user_profile.realm, emoji_name, url, author=user_profile)
    except ValidationError as e:
        return json_error(e.messages[0])
    return json_success()
示例#5
0
def upload_emoji(request, user_profile, emoji_name=None, url=REQ()):
    # type: (HttpRequest, UserProfile, Text, Text) -> HttpResponse
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    try:
        check_add_realm_emoji(user_profile.realm,
                              emoji_name,
                              url,
                              author=user_profile)
    except ValidationError as e:
        return json_error(e.messages[0])
    return json_success()
示例#6
0
def upload_emoji(request: HttpRequest, user_profile: UserProfile,
                 emoji_name: Text=REQ()) -> HttpResponse:
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    if len(request.FILES) != 1:
        return json_error(_("You must upload exactly one file."))
    emoji_file = list(request.FILES.values())[0]
    if (settings.MAX_EMOJI_FILE_SIZE * 1024 * 1024) < emoji_file.size:
        return json_error(_("Uploaded file is larger than the allowed limit of %s MB") % (
            settings.MAX_EMOJI_FILE_SIZE))
    emoji_file_name = get_emoji_file_name(emoji_file.name, emoji_name)
    upload_emoji_image(emoji_file, emoji_file_name, user_profile)
    try:
        check_add_realm_emoji(user_profile.realm, emoji_name, emoji_file_name, author=user_profile)
    except ValidationError as e:
        return json_error(e.messages[0])
    return json_success()
示例#7
0
def upload_emoji(request, user_profile, emoji_name=REQ()):
    # type: (HttpRequest, UserProfile, Text) -> HttpResponse
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    if len(request.FILES) != 1:
        return json_error(_("You must upload exactly one file."))
    emoji_file = list(request.FILES.values())[0]
    if (settings.MAX_EMOJI_FILE_SIZE * 1024 * 1024) < emoji_file.size:
        return json_error(
            _("Uploaded file is larger than the allowed limit of %s MB") %
            (settings.MAX_EMOJI_FILE_SIZE))
    emoji_file_name = get_emoji_file_name(emoji_file.name, emoji_name)
    upload_emoji_image(emoji_file, emoji_file_name, user_profile)
    try:
        check_add_realm_emoji(user_profile.realm,
                              emoji_name,
                              emoji_file_name,
                              author=user_profile)
    except ValidationError as e:
        return json_error(e.messages[0])
    return json_success()
示例#8
0
def upload_emoji(request: HttpRequest, user_profile: UserProfile,
                 emoji_name: str=REQ()) -> HttpResponse:
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    if RealmEmoji.objects.filter(realm=user_profile.realm,
                                 name=emoji_name,
                                 deactivated=False).exists():
        return json_error(_("A custom emoji with this name already exists."))
    if len(request.FILES) != 1:
        return json_error(_("You must upload exactly one file."))
    emoji_file = list(request.FILES.values())[0]
    if (settings.MAX_EMOJI_FILE_SIZE * 1024 * 1024) < emoji_file.size:
        return json_error(_("Uploaded file is larger than the allowed limit of %s MB") % (
            settings.MAX_EMOJI_FILE_SIZE))

    realm_emoji = check_add_realm_emoji(user_profile.realm,
                                        emoji_name,
                                        user_profile,
                                        emoji_file)
    if realm_emoji is None:
        return json_error(_("Image file upload failed."))
    return json_success()
示例#9
0
def upload_emoji(request, user_profile, emoji_name=None, url=REQ()):
    # type: (HttpRequest, UserProfile, Text, Text) -> HttpResponse
    check_valid_emoji_name(emoji_name)
    check_emoji_admin(user_profile)
    check_add_realm_emoji(user_profile.realm, emoji_name, url, author=user_profile)
    return json_success()