Exemplo n.º 1
0
def submit_translation(request: HttpRequest):
    """
    提交自己的翻译
    :param request:
    :return:
    """
    original = get_json(request, 'text')
    translated = get_json(request, 'translated')
    UserTranslation(user_id='harold',
                    trans_text=translated,
                    original_text=original).save()
    return success()
Exemplo n.º 2
0
def add_to_vocabulary(request: HttpRequest):
    """
    添加生词
    :param request:
    :return:
    """
    if not request.user.is_authenticated:
        return error_response(ErrorEnum.NOT_LOGGED_IN)
    word = get_json(request, 'word')
    trans = get_json(request, 'trans')
    if Vocabulary.objects.filter(user=request.user, word=word).count() == 0:
        Vocabulary(user=request.user, word=word, trans=trans).save()
    return success()
Exemplo n.º 3
0
def translate_text(request: HttpRequest):
    """
    翻译文本,返回对应的翻译和用户的翻译列表
    :param request:
    :return:
    """
    if not request.user.is_authenticated:
        return error_response(ErrorEnum.NOT_LOGGED_IN)
    text = get_json(request, 'text')
    if is_english_now():
        if not contain_zh(text):
            return error_response(ErrorEnum.INVALID_TEXT)
    else:
        if contain_zh(text):
            return error_response(ErrorEnum.INVALID_TEXT)

    translations = UserTranslation.objects.filter(
        Q(original_text=text) & ~Q(user=request.user)).order_by(
            F('dislikes') - F('likes'))  # 按照评分降序排序。评分=赞数-踩数
    baidu_trans = translate_baidu(text,
                                  to_lang='en' if is_english_now() else 'zh')
    try:  # 检测是否在生词本中,如果是,查询次数+1
        vocab = Vocabulary.objects.get(user=request.user, word=text)
        vocab.count += 1
        vocab.save()
        in_vocab = True
    except Vocabulary.DoesNotExist:
        in_vocab = False
    return success({
        'text': baidu_trans['trans_result'][0]['dst'],
        'users': [x.to_dict() for x in translations],
        'in_vocab': in_vocab
    })
Exemplo n.º 4
0
def save_passage(request: HttpRequest):
    """
    保存用户当前文章的翻译
    :param request:
    :return:
    """
    if not request.user.is_authenticated:
        return error_response(ErrorEnum.NOT_LOGGED_IN)
    hashed = get_json(request, 'hashed')
    translated = get_json(request, 'translated')
    inc = get_json(request, 'inc')
    p = UserPreference.objects.get(hashed=hashed)
    if p.inc > inc:
        return success()
    p.trans = translated
    p.inc += 1
    p.save()
    return success()
Exemplo n.º 5
0
def delete_vocabulary(request: HttpRequest):
    """
    删除生词
    :param request:
    :return:
    """
    if not request.user.is_authenticated:
        return error_response(ErrorEnum.NOT_LOGGED_IN)
    vocab_id = get_json(request, 'vocab_id')
    Vocabulary.objects.filter(id=vocab_id).delete()
    return success()
Exemplo n.º 6
0
def rate_translation(request: HttpRequest):
    """
    评价某条其他用户的翻译
    :param request:
    :return:
    """
    tid = get_json(request, 'id')
    liked = get_json(request, 'liked')
    try:
        translation = UserTranslation.objects.get(pk=tid)
    except UserTranslation.DoesNotExist:
        return error_response(ErrorEnum.NOT_FOUND)
    if liked:
        translation.likes = F('likes') + 1
    else:
        translation.dislikes = F('dislikes') + 1
    translation.save()
    translation.refresh_from_db()
    return success({
        'likes': translation.likes,
        'dislikes': translation.dislikes
    })