Example #1
0
def calc_tags(food_no, lang_code="en", limit=1):
    # 객관적 태그
    tags = [
        googleCloudService.translate(
            Food.objects.get(food_no=food_no).food_class_no.food_class_en_name,
            lang_code)
    ]

    # 주관적 태그
    food_tags_qs = MapFoodTag.objects.filter(food_no=food_no)
    if food_tags_qs.exists():
        subj_tags = food_tags_qs.distinct().values_list('tag_no', flat=True)
        subj_tags_cnt = []

        for subj_tag in subj_tags:
            subj_tags_cnt.append(food_tags_qs.filter(tag_no=subj_tag).count())

        idx_sorted_cnt = np.argsort(subj_tags_cnt)
        subj_tags = np.array(subj_tags)[idx_sorted_cnt[::-1]]

        # 3가지 선택
        for i in range(len(subj_tags)):
            if i > limit:
                break
            tags.append(
                googleCloudService.translate(
                    Tag.objects.get(tag_no=subj_tags[i]).tag_en_name,
                    lang_code))

    return list(tags)
Example #2
0
def get_foods_by_queryset(foods, lang_code):
    data_foods = []
    for food in foods.values():
        tags = calc_tags(food['food_no'], lang_code)
        allergies = calc_allergys(food['food_no'], lang_code)

        food['food_dsc'] = googleCloudService.translate(
            food['food_dsc'], lang_code)
        food['translated_name'] = googleCloudService.translate(
            food['food_name'], lang_code)
        food['tag'] = tags
        food['allergy'] = allergies
        data_foods.append(food)

    return data_foods
Example #3
0
def get_foods_by_list(foods, lang_code):
    data_foods = []
    for food_no in foods:
        tags = calc_tags(food_no, lang_code)
        allergies = calc_allergys(food_no, lang_code)

        food = GetFoodSerializer(Food.objects.get(food_no=food_no)).data
        food['food_dsc'] = googleCloudService.translate(
            food['food_dsc'], lang_code)
        food['translated_name'] = googleCloudService.translate(
            food['food_name'], lang_code)
        food['tag'] = tags
        food['allergy'] = allergies
        data_foods.append(food)

    return data_foods
Example #4
0
def calc_allergys(food_no, lang_code):
    allergies_name, allergies_no = [], []
    ingredients = MapFoodIngre.objects.filter(food_no=food_no).values_list(
        'ingre_no', flat=True)

    for ingredient in ingredients:
        # 음식에 포함된 알레르기 정보
        allergy = Ingredient.objects.get(ingre_no=ingredient).allergy_no
        allergy_no = allergy.allergy_no
        if allergy_no != 0 and allergy_no not in allergies_no:
            allergies_no.append(allergy_no)
            allergies_name.append(
                googleCloudService.translate(allergy.allergy_en_name,
                                             lang_code))

    return allergies_name
Example #5
0
def get_user_review(request):
    if request.method == "POST":
        try:
            data = JSONParser().parse(request)
            user_no = data['user_no']
            lang_code = User.objects.get(user_no=user_no).lang_no.lang_code

            reviews = Review.objects.filter(user_no=user_no)
            review_list = []
            if reviews.exists():
                for review in reviews.values():
                    food = Food.objects.get(food_no=review['food_no_id'])
                    review['food_name'] = food.food_name
                    review['translated_name'] = googleCloudService.translate(
                        food.food_name, lang_code)
                    review['food_img_url'] = food.food_img_url
                    review_list.append(review)

                return JsonResponse(review_list, safe=False, status=200)
            else:
                return JsonResponse([], safe=False, status=201)

        except KeyError:
            return JsonResponse({"message": "INVALID_KEY"}, status=400)