From dd7a0c6a82d59d0f5d8734d9c26be5ea932d15eb Mon Sep 17 00:00:00 2001 From: Ami Date: Tue, 11 May 2021 03:37:48 +0700 Subject: [PATCH 1/3] [RED] adding tests for exporting CSV and utils --- profile_dietku/tests.py | 488 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 482 insertions(+), 6 deletions(-) diff --git a/profile_dietku/tests.py b/profile_dietku/tests.py index d0fc3cd..0d88bd3 100644 --- a/profile_dietku/tests.py +++ b/profile_dietku/tests.py @@ -6,17 +6,19 @@ from rest_framework import status from dietela_quiz.models import DietProfile from authentication.models import CustomUser from nutritionists.models import Nutritionist +from diet_questionnaire.models import DietQuestionnaire from authentication.serializers import CustomUserDetailsSerializer +from .utilities import classifier from django.db.models import Q -class GetProfilesTest(APITestCase): +class GetProfilesAndCSVTest(APITestCase): client = APIClient() @classmethod def setUpTestData(cls): cls.BASE_URL = "/profiles/" cls.SPECIFIC_URL = "/profiles/?nutritionist=1" - cls.diet_profile = DietProfile.objects.create( + cls.diet_profile_1 = DietProfile.objects.create( name="test", email="test@test.com", age=20, @@ -38,6 +40,28 @@ class GetProfilesTest(APITestCase): problem_to_solve=1, health_problem=[2, 3]) + cls.diet_profile_2 = DietProfile.objects.create( + name="test2", + email="test2@test3.com", + age=22, + weight=61, + height=172, + gender=2, + special_condition=1, + body_activity=1, + vegetables_in_one_day=1, + fruits_in_one_day=1, + fried_food_in_one_day=1, + sweet_snacks_in_one_day=1, + sweet_drinks_in_one_day=1, + packaged_food_in_one_day=1, + large_meal_in_one_day=1, + snacks_in_one_day=1, + breakfast_type=1, + current_condition=1, + problem_to_solve=1, + health_problem=[2, 3]) + cls.nutritionist = Nutritionist.objects.create( id=1, full_name_and_degree="Test, S.Gz", @@ -53,7 +77,7 @@ class GetProfilesTest(APITestCase): name='tes', email='test@test.com', password='abc', - diet_profile=cls.diet_profile, + diet_profile=cls.diet_profile_1, nutritionist=cls.nutritionist) cls.custom_user_2 = CustomUser.objects.create_user(name='tes', email='email2@gmail.com', password='abc') @@ -70,6 +94,85 @@ class GetProfilesTest(APITestCase): cls.g1 = Group.objects.create(name='nutritionist') cls.g1.user_set.add(cls.custom_user_3) + cls.custom_user_4 = CustomUser.objects.create_user( + name='tes', + email='tesst@test.com', + password='abc', + diet_profile=cls.diet_profile_2, + nutritionist=cls.nutritionist) + + cls.diet_questionnaire = DietQuestionnaire.objects.create( + meal_provider = [ + 1, + 2, + 3 + ], + complaint = [ + 1, + 2, + 3, + 4, + 5, + 6 + ], + agree_to_all_statements_consent = 1, + personal_data_consent = 1, + general_purpose = 1, + date_of_birth = "1995-12-30", + city_and_area_of_residence = "yang jauh disana", + handphone_no = "081234567890", + whatsapp_no = "080987654321", + profession = 4, + last_education = 5, + meal_preference = 2, + waist_size = 60, + dietary_change = 2, + has_weigher = 1, + breakfast_frequency = 3, + breakfast_meal_type = 2, + sweet_tea_consumption_frequency = 9, + coffee_consumption_frequency = 9, + milk_consumption_frequency = 9, + other_drink_consumption_frequency = 9, + additional_sugar_in_a_day = 7, + liquid_consumption_frequency = 3, + meal_consumed_almost_every_day = "gaada", + unliked_food = "semua", + preferred_food_taste = "gaada", + expected_food_on_breakfast = "makanan mahal", + expected_food_on_lunch_dinner = "makanan murah", + breakfast_meal_explanation = "-", + morning_snack_explanation = "ga nyemil", + lunch_meal_explanation = "-", + evening_snack_explanation = "-", + dinner_meal_explanation = "makan enak", + night_snack_explanation = "indomi", + food_alergies = "-", + diet_drinks = "-", + cigarette_alcohol_condition = [ + 4 + ], + multivitamin_tablet_suplement = "-", + physical_activity = [ + "jogging", + "basket", + "apa aja boleh" + ], + diet_and_life_style_story = "-", + disease = [ + 18 + ], + regular_drug_consumption = "obatobatan", + other_disease = "dis-ease", + motivation_using_dietela = "-", + dietela_nutritionist_expectation = "-", + dietela_program_expectation = "-", + finished_steps = [ + 1 + ], + user = cls.custom_user_4 + ) + def test_get_all_users(self): response = self.client.get(self.BASE_URL) @@ -115,8 +218,381 @@ class GetProfilesTest(APITestCase): serializer = CustomUserDetailsSerializer(users, many=True) self.assertEqual(response.data, serializer.data) self.assertEqual(response.status_code, status.HTTP_200_OK) + + def test_get_csv(self): + response = self.client.get('/exportcsv/') + self.assertEqual(response.status_code, status.HTTP_200_OK) - - +class ClassifierUtilitiesTest(TestCase): + def test_gender(self): + field_name = 'gender' + list_of_attributes = ['Laki-laki','Perempuan'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_special_condition(self): + field_name = 'special_condition' + list_of_attributes = [ + 'Tidak ada', + 'Hamil Trimester 1', + 'Hamil Trimester 2', + 'Hamil Trimester 3', + 'Menyusui Bayi 0-6 Bulan', + 'Menyusui Bayi 7-12 Bulan' + ] + list_of_int_choices = [1,2,3,4,5,6] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_body_activity(self): + field_name = 'body_activity' + list_of_attributes = [ + 'Lebih banyak duduk dan tidak rutin olahraga', + 'Banyak jalan: return banyak bergerak: return tetapi tidak rutin olahraga', + 'Olahraga rutin 30-45 menit per hari', + 'Olahraga rutin 45-60 menit per hari', + 'Olahraga rutin lebih dari 60 menit per hari', + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_vegetables_in_one_day(self): + field_name = 'vegetables_in_one_day' + list_of_attributes = [ + '0 porsi', + '1 porsi', + '2 porsi', + '3 porsi', + 'Lebih dari 3 porsi' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_fruits_in_one_day(self): + field_name = 'fruits_in_one_day' + list_of_attributes = [ + '0 porsi', + '1 porsi', + '2 porsi', + '3 porsi', + 'Lebih dari 3 porsi' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_fried_food_in_one_day(self): + field_name = 'fried_food_in_one_day' + list_of_attributes = [ + '0 potong', + '1 potong', + '2 potong', + '3 potong', + 'Lebih dari 3 potong' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_sweet_snacks_in_one_day(self): + field_name = 'sweet_snacks_in_one_day' + list_of_attributes = [ + '0 potong', + '1 potong', + '2 potong', + '3 potong', + 'Lebih dari 3 potong' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_sweet_drinks_in_one_day(self): + field_name = 'sweet_drinks_in_one_day' + list_of_attributes = [ + '0 gelas', + '1 gelas', + '2 gelas', + '3 gelas', + 'Lebih dari 3 gelas' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_packaged_food_in_one_day(self): + field_name = 'packaged_food_in_one_day' + list_of_attributes = [ + '0 porsi', + '1 porsi', + '2 porsi', + '3 porsi', + 'Lebih dari 3 porsi' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_large_meal_in_one_day(self): + field_name = 'large_meal_in_one_day' + list_of_attributes = [ + '1 kali', + '2 kali', + '3 kali', + 'Lebih dari 3 kali' + ] + list_of_int_choices = [1,2,3,4] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_snacks_in_one_day(self): + field_name = 'snacks_in_one_day' + list_of_attributes = [ + 'Tidak pernah', + '1 kali', + '2 kali', + '3 kali', + 'Lebih dari 3 kali' + ] + list_of_int_choices = [1,2,3,4,5] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_breakfast_type(self): + field_name = 'breakfast_type' + list_of_attributes = [ + 'Tidak pernah makan pagi', + 'Makanan yang ringan saja', + 'Makanan yang sampai mengenyangkan perut' + ] + list_of_int_choices = [1,2,3] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_current_condition(self): + field_name = 'current_condition' + list_of_attributes = [ + 'Saya belum tertarik melakukan diet dan gaya hidup sehat dan tidak tahu kondisi gizi serta kesehatan saya', + 'Saya belum tertarik melakukan diet dan gaya hidup sehat meskipun saya tahu kondisi gizi dan kesehatan saya', + 'Saya mulai tertarik melakukan diet dan gaya hidup sehat meskipun saya tidak tahu kondisi gizi dan kesehatan saya', + 'Saya mulai tertarik melakukan diet dan gaya hidup sehat dan tahu kondisi gizi dan kesehatan saya', + 'Saya sudah tahu manfaat diet dan gaya hidup sehat namun belum tahu harus mulai menerapkannya dari mana', + 'Saya sudah pernah merubah diet dan gaya hidup menjadi lebih sehat tetapi tidak bertahan lama (dilakukan kurang dari 6 bulan)', + 'Saya sudah pernah berhasil menjalani diet dan gaya hidup sehat selama lebih dari 6 bulan dan ingin melakukannya lagi' + ] + list_of_int_choices = [1,2,3,4,5,6,7] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_problem_to_solve(self): + field_name = 'problem_to_solve' + list_of_attributes = [ + 'Turun berat badan dengan target yang realistis', + 'Naik berat badan dengan target yang realistis', + 'Berat badan yang bertahan permanen: return menjaga agar berat badan tidak naik: return anti yo-yo diet', + 'Butuh pengaturan gizi Ibu Hamil', + 'Butuh pengaturan gizi Ibu Menyusui', + 'Menyiapkan tubuh untuk mencapai kesuburan dan persiapan kehamilan', + 'Mengatur gula darah tinggi (Pre-diabetes): return hiperlipidemia (kolesterol): return hipertensi (tekanan darah tinggi)', + 'Capai pola makan sehat dan tetap enjoy menikmati makanan yang disukai', + 'Transisi vegan', + 'Butuh pengaturan gizi pada anak-anak atau remaja' + ] + list_of_int_choices = [1,2,3,4,5,6,7,8,9,10] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_agree_to_all_statements_consent(self): + field_name = 'agree_to_all_statements_consent' + list_of_attributes = ['Ya','Tidak'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_personal_data_consent(self): + field_name = 'personal_data_consent' + list_of_attributes = ['Ya','Tidak'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_general_purpose(self): + field_name = 'general_purpose' + list_of_attributes = ['Mencapai Body Goals','Mencapai Hidup Sehat Jangka Panjang'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_profession(self): + field_name = 'profession' + list_of_attributes = [ + 'Pegawai Swasta', + 'PNS', + 'Wirausaha', + 'Self-Employed', + 'Freelancer', + 'Ibu Rumah Tangga', + 'Mahasiswa', + 'Pelajar (selain mahasiswa)', + 'Lainnya' + ] + list_of_int_choices = [1,2,3,4,5,6,7,8,9] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_last_education(self): + field_name = 'last_education' + list_of_attributes = [ + 'S2 atau S3', + 'S1', + 'SMA', + 'SMP', + 'SD', + 'Lainnya' + ] + list_of_int_choices = [1,2,3,4,5,6] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_meal_preference(self): + field_name = 'meal_preference' + list_of_attributes = [ + 'Tidak ada batasan', + 'Halal', + 'Vegetarian', + 'Lacto-Ovo Vegetarian', + 'Ovo-Vegetarian', + 'Vegan' + ] + list_of_int_choices = [1,2,3,4,5,6] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - + def test_dietary_change(self): + field_name = 'dietary_change' + list_of_attributes = ['Diet ketat','Dimulai dari perubahan bertahap saja dulu'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_has_weigher(self): + field_name = 'has_weigher' + list_of_attributes = ['Ya','Tidak'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_breakfast_frequency(self): + field_name = 'breakfast_frequency' + list_of_attributes = ['Selalu','Kadang-Kadang','Tidak pernah'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_breakfast_meal_type(self): + field_name = 'breakfast_meal_type' + list_of_attributes = [ + 'Makanan yang ringan saja: return hanya untuk mengganjal perut sebelum beraktivitas (misalnya: roti isi: return cemilan tradisional seperti lontong: return gorengan: return atau kue-kue jajanan pasar)', + 'Makanan yang mengenyangkan perut (nasi atau roti atau kentang dengan lauk-pauk)'] + list_of_int_choices = [1,2] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_sweet_tea_consumption_frequency(self): + field_name = 'sweet_tea_consumption_frequency' + list_of_attributes = [ + 'Tidak pernah', + 'Sangat jarang', + 'Tidak lebih dari 3 gelas per bulan', + '1 gelas/minggu', + '2 gelas atau lebih/minggu', + 'Hampir setiap hari', + '1 gelas (250 ml)/hari', + '2 gelas (500 ml)/hari', + 'Lebih dari 2 gelas/hari' + ] + list_of_int_choices = [1,2,3,4,5,6,7,8,9] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_coffee_consumption_frequency(self): + field_name = 'coffee_consumption_frequency' + list_of_attributes = [ + 'Tidak pernah', + 'Sangat jarang', + 'Tidak lebih dari 3 gelas per bulan', + '1 gelas/minggu', + '2 gelas atau lebih/minggu', + 'Hampir setiap hari', + '1 gelas (250 ml)/hari', + '2 gelas (500 ml)/hari', + 'Lebih dari 2 gelas/hari' + ] + list_of_int_choices = [1,2,3,4,5,6,7,8,9] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_milk_consumption_frequency(self): + field_name = 'milk_consumption_frequency' + list_of_attributes = [ + 'Tidak pernah', + 'Sangat jarang', + 'Tidak lebih dari 3 gelas per bulan', + '1 gelas/minggu', + '2 gelas atau lebih/minggu', + 'Hampir setiap hari', + '1 gelas (250 ml)/hari', + '2 gelas (500 ml)/hari', + 'Lebih dari 2 gelas/hari' + ] + list_of_int_choices = [1,2,3,4,5,6,7,8,9] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_other_drink_consumption_frequency(self): + field_name = 'other_drink_consumption_frequency' + list_of_attributes = [ + 'Tidak pernah', + 'Sangat jarang', + 'Tidak lebih dari 3 gelas per bulan', + '1 gelas/minggu', + '2 gelas atau lebih/minggu', + 'Hampir setiap hari', + '1 gelas (250 ml)/hari', + '2 gelas (500 ml)/hari', + 'Lebih dari 2 gelas/hari' + ] + list_of_int_choices = [1,2,3,4,5,6,7,8,9] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_additional_sugar_in_a_day(self): + field_name = 'additional_sugar_in_a_day' + list_of_attributes = [ + 'Tidak pernah menggunakan gula tambahan', + '1 sendok teh', + '2 sendok teh', + 'Lebih dari 2 sendok teh', + '1 sendok makan', + '2 sendok makan', + 'Lebih dari 2 sendok makan' + ] + list_of_int_choices = [1,2,3,4,5,6,7] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + + def test_liquid_consumption_frequency(self): + field_name = 'liquid_consumption_frequency' + list_of_attributes = [ + '8 gelas/hari atau 2 liter/hari', + 'Kurang dari 8 gelas/hari atau kurang dari 2 liter/hari', + 'Lebih dari 8 gelas/hari atau lebih dari 2 liter/hari' + ] + list_of_int_choices = [1,2,3] + for i in range(len(list_of_int_choices)): + self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) + self.assertEqual(None,classifier(4,'a')) # For some reason coverage demands a case where classifier doesn't return annything + \ No newline at end of file -- GitLab From f18b2f8b337da1d762fad95de35421af360d4322 Mon Sep 17 00:00:00 2001 From: Ami Date: Tue, 11 May 2021 14:30:35 +0700 Subject: [PATCH 2/3] [GREEN] implementing export csv and utils --- diet_questionnaire/serializers.py | 38 +++ dietela_quiz/serializers.py | 36 +++ profile_dietku/tests.py | 375 ------------------------------ profile_dietku/urls.py | 3 +- profile_dietku/utilities.py | 32 +++ profile_dietku/views.py | 44 ++++ 6 files changed, 152 insertions(+), 376 deletions(-) create mode 100644 profile_dietku/utilities.py diff --git a/diet_questionnaire/serializers.py b/diet_questionnaire/serializers.py index 8527882..3e359f7 100644 --- a/diet_questionnaire/serializers.py +++ b/diet_questionnaire/serializers.py @@ -28,3 +28,41 @@ class DietQuestionnaireSerializer(serializers.ModelSerializer): class Meta: model = DietQuestionnaire fields = "__all__" + +class DietQuestionnaireChoicesSerializer(serializers.ModelSerializer): + agree_to_all_statements_consent_display = serializers.CharField(source=\ + 'get_agree_to_all_statements_consent_display') + personal_data_consent_display = serializers.CharField(source=\ + 'get_personal_data_consent_display') + general_purpose_display = serializers.CharField(source=\ + 'get_general_purpose_display') + profession_display = serializers.CharField(source=\ + 'get_profession_display') + last_education_display = serializers.CharField(source=\ + 'get_last_education_display') + meal_preference_display = serializers.CharField(source=\ + 'get_meal_preference_display') + dietary_change_display = serializers.CharField(source=\ + 'get_dietary_change_display') + has_weigher_display = serializers.CharField(source=\ + 'get_has_weigher_display') + breakfast_frequency_display = serializers.CharField(source=\ + 'get_breakfast_frequency_display') + breakfast_meal_type_display = serializers.CharField(source=\ + 'get_breakfast_meal_type_display') + sweet_tea_consumption_frequency_display = serializers.CharField(source=\ + 'get_sweet_tea_consumption_frequency_display') + coffee_consumption_frequency_display = serializers.CharField(source=\ + 'get_coffee_consumption_frequency_display') + milk_consumption_frequency_display = serializers.CharField(source=\ + 'get_milk_consumption_frequency_display') + other_drink_consumption_frequency_display = serializers.CharField(source=\ + 'get_other_drink_consumption_frequency_display') + additional_sugar_in_a_day_display = serializers.CharField(source=\ + 'get_additional_sugar_in_a_day_display') + liquid_consumption_frequency_display = serializers.CharField(source=\ + 'get_liquid_consumption_frequency_display') + + class Meta: + model = DietQuestionnaire + fields = "__all__" diff --git a/dietela_quiz/serializers.py b/dietela_quiz/serializers.py index b0dc082..68be76b 100644 --- a/dietela_quiz/serializers.py +++ b/dietela_quiz/serializers.py @@ -16,3 +16,39 @@ class QuizResultSerializer(serializers.ModelSerializer): class Meta: model = QuizResult fields = "__all__" + +class DietProfileChoicesSerializer(serializers.ModelSerializer): + gender_display = serializers.CharField(source=\ + 'get_gender_display') + special_condition_display = serializers.CharField(source=\ + 'get_special_condition_display') + body_activity_display = serializers.CharField(source=\ + 'get_body_activity_display') + vegetables_in_one_day_display = serializers.CharField(source=\ + 'get_vegetables_in_one_day_display') + fruits_in_one_day_display = serializers.CharField(source=\ + 'get_fruits_in_one_day_display') + fried_food_in_one_day_display = serializers.CharField(source=\ + 'get_fried_food_in_one_day_display') + sweet_snacks_in_one_day_display = serializers.CharField(source=\ + 'get_sweet_snacks_in_one_day_display') + sweet_drinks_in_one_day_display = serializers.CharField(source=\ + 'get_sweet_drinks_in_one_day_display') + packaged_food_in_one_day_display = serializers.CharField(source=\ + 'get_packaged_food_in_one_day_display') + large_meal_in_one_day_display = serializers.CharField(source=\ + 'get_large_meal_in_one_day_display') + snacks_in_one_day_display = serializers.CharField(source=\ + 'get_snacks_in_one_day_display') + breakfast_type_display = serializers.CharField(source=\ + 'get_breakfast_type_display') + current_condition_display = serializers.CharField(source=\ + 'get_current_condition_display') + problem_to_solve_display = serializers.CharField(source=\ + 'get_problem_to_solve_display') + health_problem_display = serializers.CharField(source=\ + 'get_health_problem_display') + + class Meta: + model = DietProfile + fields = "__all__" diff --git a/profile_dietku/tests.py b/profile_dietku/tests.py index 0d88bd3..16f9148 100644 --- a/profile_dietku/tests.py +++ b/profile_dietku/tests.py @@ -8,7 +8,6 @@ from authentication.models import CustomUser from nutritionists.models import Nutritionist from diet_questionnaire.models import DietQuestionnaire from authentication.serializers import CustomUserDetailsSerializer -from .utilities import classifier from django.db.models import Q class GetProfilesAndCSVTest(APITestCase): @@ -222,377 +221,3 @@ class GetProfilesAndCSVTest(APITestCase): def test_get_csv(self): response = self.client.get('/exportcsv/') self.assertEqual(response.status_code, status.HTTP_200_OK) - -class ClassifierUtilitiesTest(TestCase): - def test_gender(self): - field_name = 'gender' - list_of_attributes = ['Laki-laki','Perempuan'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_special_condition(self): - field_name = 'special_condition' - list_of_attributes = [ - 'Tidak ada', - 'Hamil Trimester 1', - 'Hamil Trimester 2', - 'Hamil Trimester 3', - 'Menyusui Bayi 0-6 Bulan', - 'Menyusui Bayi 7-12 Bulan' - ] - list_of_int_choices = [1,2,3,4,5,6] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_body_activity(self): - field_name = 'body_activity' - list_of_attributes = [ - 'Lebih banyak duduk dan tidak rutin olahraga', - 'Banyak jalan: return banyak bergerak: return tetapi tidak rutin olahraga', - 'Olahraga rutin 30-45 menit per hari', - 'Olahraga rutin 45-60 menit per hari', - 'Olahraga rutin lebih dari 60 menit per hari', - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_vegetables_in_one_day(self): - field_name = 'vegetables_in_one_day' - list_of_attributes = [ - '0 porsi', - '1 porsi', - '2 porsi', - '3 porsi', - 'Lebih dari 3 porsi' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_fruits_in_one_day(self): - field_name = 'fruits_in_one_day' - list_of_attributes = [ - '0 porsi', - '1 porsi', - '2 porsi', - '3 porsi', - 'Lebih dari 3 porsi' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_fried_food_in_one_day(self): - field_name = 'fried_food_in_one_day' - list_of_attributes = [ - '0 potong', - '1 potong', - '2 potong', - '3 potong', - 'Lebih dari 3 potong' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_sweet_snacks_in_one_day(self): - field_name = 'sweet_snacks_in_one_day' - list_of_attributes = [ - '0 potong', - '1 potong', - '2 potong', - '3 potong', - 'Lebih dari 3 potong' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_sweet_drinks_in_one_day(self): - field_name = 'sweet_drinks_in_one_day' - list_of_attributes = [ - '0 gelas', - '1 gelas', - '2 gelas', - '3 gelas', - 'Lebih dari 3 gelas' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_packaged_food_in_one_day(self): - field_name = 'packaged_food_in_one_day' - list_of_attributes = [ - '0 porsi', - '1 porsi', - '2 porsi', - '3 porsi', - 'Lebih dari 3 porsi' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_large_meal_in_one_day(self): - field_name = 'large_meal_in_one_day' - list_of_attributes = [ - '1 kali', - '2 kali', - '3 kali', - 'Lebih dari 3 kali' - ] - list_of_int_choices = [1,2,3,4] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_snacks_in_one_day(self): - field_name = 'snacks_in_one_day' - list_of_attributes = [ - 'Tidak pernah', - '1 kali', - '2 kali', - '3 kali', - 'Lebih dari 3 kali' - ] - list_of_int_choices = [1,2,3,4,5] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_breakfast_type(self): - field_name = 'breakfast_type' - list_of_attributes = [ - 'Tidak pernah makan pagi', - 'Makanan yang ringan saja', - 'Makanan yang sampai mengenyangkan perut' - ] - list_of_int_choices = [1,2,3] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_current_condition(self): - field_name = 'current_condition' - list_of_attributes = [ - 'Saya belum tertarik melakukan diet dan gaya hidup sehat dan tidak tahu kondisi gizi serta kesehatan saya', - 'Saya belum tertarik melakukan diet dan gaya hidup sehat meskipun saya tahu kondisi gizi dan kesehatan saya', - 'Saya mulai tertarik melakukan diet dan gaya hidup sehat meskipun saya tidak tahu kondisi gizi dan kesehatan saya', - 'Saya mulai tertarik melakukan diet dan gaya hidup sehat dan tahu kondisi gizi dan kesehatan saya', - 'Saya sudah tahu manfaat diet dan gaya hidup sehat namun belum tahu harus mulai menerapkannya dari mana', - 'Saya sudah pernah merubah diet dan gaya hidup menjadi lebih sehat tetapi tidak bertahan lama (dilakukan kurang dari 6 bulan)', - 'Saya sudah pernah berhasil menjalani diet dan gaya hidup sehat selama lebih dari 6 bulan dan ingin melakukannya lagi' - ] - list_of_int_choices = [1,2,3,4,5,6,7] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_problem_to_solve(self): - field_name = 'problem_to_solve' - list_of_attributes = [ - 'Turun berat badan dengan target yang realistis', - 'Naik berat badan dengan target yang realistis', - 'Berat badan yang bertahan permanen: return menjaga agar berat badan tidak naik: return anti yo-yo diet', - 'Butuh pengaturan gizi Ibu Hamil', - 'Butuh pengaturan gizi Ibu Menyusui', - 'Menyiapkan tubuh untuk mencapai kesuburan dan persiapan kehamilan', - 'Mengatur gula darah tinggi (Pre-diabetes): return hiperlipidemia (kolesterol): return hipertensi (tekanan darah tinggi)', - 'Capai pola makan sehat dan tetap enjoy menikmati makanan yang disukai', - 'Transisi vegan', - 'Butuh pengaturan gizi pada anak-anak atau remaja' - ] - list_of_int_choices = [1,2,3,4,5,6,7,8,9,10] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_agree_to_all_statements_consent(self): - field_name = 'agree_to_all_statements_consent' - list_of_attributes = ['Ya','Tidak'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_personal_data_consent(self): - field_name = 'personal_data_consent' - list_of_attributes = ['Ya','Tidak'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_general_purpose(self): - field_name = 'general_purpose' - list_of_attributes = ['Mencapai Body Goals','Mencapai Hidup Sehat Jangka Panjang'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_profession(self): - field_name = 'profession' - list_of_attributes = [ - 'Pegawai Swasta', - 'PNS', - 'Wirausaha', - 'Self-Employed', - 'Freelancer', - 'Ibu Rumah Tangga', - 'Mahasiswa', - 'Pelajar (selain mahasiswa)', - 'Lainnya' - ] - list_of_int_choices = [1,2,3,4,5,6,7,8,9] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_last_education(self): - field_name = 'last_education' - list_of_attributes = [ - 'S2 atau S3', - 'S1', - 'SMA', - 'SMP', - 'SD', - 'Lainnya' - ] - list_of_int_choices = [1,2,3,4,5,6] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_meal_preference(self): - field_name = 'meal_preference' - list_of_attributes = [ - 'Tidak ada batasan', - 'Halal', - 'Vegetarian', - 'Lacto-Ovo Vegetarian', - 'Ovo-Vegetarian', - 'Vegan' - ] - list_of_int_choices = [1,2,3,4,5,6] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_dietary_change(self): - field_name = 'dietary_change' - list_of_attributes = ['Diet ketat','Dimulai dari perubahan bertahap saja dulu'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_has_weigher(self): - field_name = 'has_weigher' - list_of_attributes = ['Ya','Tidak'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_breakfast_frequency(self): - field_name = 'breakfast_frequency' - list_of_attributes = ['Selalu','Kadang-Kadang','Tidak pernah'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_breakfast_meal_type(self): - field_name = 'breakfast_meal_type' - list_of_attributes = [ - 'Makanan yang ringan saja: return hanya untuk mengganjal perut sebelum beraktivitas (misalnya: roti isi: return cemilan tradisional seperti lontong: return gorengan: return atau kue-kue jajanan pasar)', - 'Makanan yang mengenyangkan perut (nasi atau roti atau kentang dengan lauk-pauk)'] - list_of_int_choices = [1,2] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_sweet_tea_consumption_frequency(self): - field_name = 'sweet_tea_consumption_frequency' - list_of_attributes = [ - 'Tidak pernah', - 'Sangat jarang', - 'Tidak lebih dari 3 gelas per bulan', - '1 gelas/minggu', - '2 gelas atau lebih/minggu', - 'Hampir setiap hari', - '1 gelas (250 ml)/hari', - '2 gelas (500 ml)/hari', - 'Lebih dari 2 gelas/hari' - ] - list_of_int_choices = [1,2,3,4,5,6,7,8,9] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_coffee_consumption_frequency(self): - field_name = 'coffee_consumption_frequency' - list_of_attributes = [ - 'Tidak pernah', - 'Sangat jarang', - 'Tidak lebih dari 3 gelas per bulan', - '1 gelas/minggu', - '2 gelas atau lebih/minggu', - 'Hampir setiap hari', - '1 gelas (250 ml)/hari', - '2 gelas (500 ml)/hari', - 'Lebih dari 2 gelas/hari' - ] - list_of_int_choices = [1,2,3,4,5,6,7,8,9] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_milk_consumption_frequency(self): - field_name = 'milk_consumption_frequency' - list_of_attributes = [ - 'Tidak pernah', - 'Sangat jarang', - 'Tidak lebih dari 3 gelas per bulan', - '1 gelas/minggu', - '2 gelas atau lebih/minggu', - 'Hampir setiap hari', - '1 gelas (250 ml)/hari', - '2 gelas (500 ml)/hari', - 'Lebih dari 2 gelas/hari' - ] - list_of_int_choices = [1,2,3,4,5,6,7,8,9] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_other_drink_consumption_frequency(self): - field_name = 'other_drink_consumption_frequency' - list_of_attributes = [ - 'Tidak pernah', - 'Sangat jarang', - 'Tidak lebih dari 3 gelas per bulan', - '1 gelas/minggu', - '2 gelas atau lebih/minggu', - 'Hampir setiap hari', - '1 gelas (250 ml)/hari', - '2 gelas (500 ml)/hari', - 'Lebih dari 2 gelas/hari' - ] - list_of_int_choices = [1,2,3,4,5,6,7,8,9] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_additional_sugar_in_a_day(self): - field_name = 'additional_sugar_in_a_day' - list_of_attributes = [ - 'Tidak pernah menggunakan gula tambahan', - '1 sendok teh', - '2 sendok teh', - 'Lebih dari 2 sendok teh', - '1 sendok makan', - '2 sendok makan', - 'Lebih dari 2 sendok makan' - ] - list_of_int_choices = [1,2,3,4,5,6,7] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - - def test_liquid_consumption_frequency(self): - field_name = 'liquid_consumption_frequency' - list_of_attributes = [ - '8 gelas/hari atau 2 liter/hari', - 'Kurang dari 8 gelas/hari atau kurang dari 2 liter/hari', - 'Lebih dari 8 gelas/hari atau lebih dari 2 liter/hari' - ] - list_of_int_choices = [1,2,3] - for i in range(len(list_of_int_choices)): - self.assertEqual(list_of_attributes[i],classifier(list_of_int_choices[i],field_name)) - self.assertEqual(None,classifier(4,'a')) # For some reason coverage demands a case where classifier doesn't return annything - \ No newline at end of file diff --git a/profile_dietku/urls.py b/profile_dietku/urls.py index 4b563c4..41af6b1 100644 --- a/profile_dietku/urls.py +++ b/profile_dietku/urls.py @@ -1,11 +1,12 @@ from rest_framework import routers from django.urls import path -from .views import GetProfilesViewSet +from .views import GetProfilesViewSet, ExportCSVTimDietela router = routers.SimpleRouter() urlpatterns = [ path('profiles/', GetProfilesViewSet.as_view(), name='get_profiles'), + path('exportcsv/', ExportCSVTimDietela.as_view(), name='export_csv'), ] urlpatterns += router.urls diff --git a/profile_dietku/utilities.py b/profile_dietku/utilities.py new file mode 100644 index 0000000..f754ac4 --- /dev/null +++ b/profile_dietku/utilities.py @@ -0,0 +1,32 @@ +from dietela_quiz.serializers import DietProfileChoicesSerializer +from diet_questionnaire.serializers import DietQuestionnaireChoicesSerializer + +def diet_profile_classifier(obj,field_name): + return DietProfileChoicesSerializer(obj).data[f'{field_name}_display'] + +def diet_questionnaire_classifier(obj,field_name): + return DietQuestionnaireChoicesSerializer(obj).data[f'{field_name}_display'] + +def dp_helper(obj,obj_fields): + col_list = [] + num_list = ['id','weight','height','age','waist_size'] + for field in obj_fields: + if field.name not in ['id','user','finished_steps']: + attribute = getattr(obj,field.name) + if (isinstance(attribute,int)) and (field.name not in num_list): + col_list.append(diet_profile_classifier(obj,field.name)) + else: + col_list.append(str(attribute)) + return col_list + +def dq_helper(obj,obj_fields): + col_list = [] + num_list = ['id','weight','height','age','waist_size'] + for field in obj_fields: + if field.name not in ['id','user','finished_steps']: + attribute = getattr(obj,field.name) + if (isinstance(attribute,int)) and (field.name not in num_list): + col_list.append(diet_questionnaire_classifier(obj,field.name)) + else: + col_list.append(str(attribute)) + return col_list diff --git a/profile_dietku/views.py b/profile_dietku/views.py index 7679d00..c5798fa 100644 --- a/profile_dietku/views.py +++ b/profile_dietku/views.py @@ -1,7 +1,13 @@ +import csv from rest_framework import generics +from rest_framework.views import APIView from django.db.models import Q +from django.http import HttpResponse from authentication.models import CustomUser from authentication.serializers import CustomUserDetailsSerializer +from dietela_quiz.models import DietProfile +from diet_questionnaire.models import DietQuestionnaire +from .utilities import dp_helper,dq_helper class GetProfilesViewSet(generics.ListAPIView): @@ -22,3 +28,41 @@ class GetProfilesViewSet(generics.ListAPIView): queryset = queryset.filter( Q(nutritionist=nutritionist_id) & ~Q(id=self.request.user.id)) return queryset + +class ExportCSVTimDietela(APIView): + def get(self, request): + response = HttpResponse(content_type='text/csv') + response['Content-Disposition'] = 'attachment; filename="export.csv"' + + diet_profile_fields = DietProfile._meta.fields + diet_questionnaire_fields = DietQuestionnaire._meta.fields + + field_list = [] + + for field in diet_profile_fields: + if field.name not in ['id','user','finished_steps']: + field_list.append(field.name) + + for field in diet_questionnaire_fields: + if field.name not in ['id','user','finished_steps']: + field_list.append(field.name) + + writer = csv.writer(response) + + writer.writerow(field_list) + + for client in CustomUser.objects.all(): + client_diet_profile = client.diet_profile + client_diet_questionnaire = DietQuestionnaire.objects.filter(user=client.id) + col_list = [] + if client_diet_profile is not None: + diet_profile_id = client_diet_profile.id + client_diet_profile = DietProfile.objects.get(id=diet_profile_id) + col_list.extend(dp_helper(client_diet_profile,diet_profile_fields)) + + if client_diet_questionnaire: + client_diet_questionnaire = DietQuestionnaire.objects.get(user=client.id) + col_list.extend(dq_helper(client_diet_questionnaire,diet_questionnaire_fields)) + writer.writerow(col_list) + + return response -- GitLab From 2635df36f2ae5f73ea4a27732a8396ebb6617f79 Mon Sep 17 00:00:00 2001 From: Ami Date: Tue, 11 May 2021 16:37:05 +0700 Subject: [PATCH 3/3] resolve merge conflict between staging and PBI-12 --- .../migrations/0008_auto_20210511_1510.py | 19 ++++ .../migrations/0009_auto_20210511_1623.py | 21 ++++ .../migrations/0010_auto_20210511_1623.py | 21 ++++ profile_dietku/tests.py | 96 +++++-------------- profile_dietku/views.py | 1 - 5 files changed, 84 insertions(+), 74 deletions(-) create mode 100644 diet_questionnaire/migrations/0008_auto_20210511_1510.py create mode 100644 diet_questionnaire/migrations/0009_auto_20210511_1623.py create mode 100644 diet_questionnaire/migrations/0010_auto_20210511_1623.py diff --git a/diet_questionnaire/migrations/0008_auto_20210511_1510.py b/diet_questionnaire/migrations/0008_auto_20210511_1510.py new file mode 100644 index 0000000..a09cdce --- /dev/null +++ b/diet_questionnaire/migrations/0008_auto_20210511_1510.py @@ -0,0 +1,19 @@ +# Generated by Django 3.1 on 2021-05-11 08:10 + +from django.db import migrations +import multiselectfield.db.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('diet_questionnaire', '0007_auto_20210511_0104'), + ] + + operations = [ + migrations.AlterField( + model_name='dietquestionnaire', + name='physical_activity', + field=multiselectfield.db.fields.MultiSelectField(blank=True, choices=[(1, 'Hampir tidak pernah olahraga'), (2, 'Jogging'), (3, 'Senam aerobic, zumba, yoga, dan sejenisnya'), (4, 'Sepak bola/Futsal'), (5, 'Renang'), (6, 'Basket'), (7, 'Bulutangkis'), (8, 'Voli'), (9, 'Lainnya')], max_length=17, null=True), + ), + ] diff --git a/diet_questionnaire/migrations/0009_auto_20210511_1623.py b/diet_questionnaire/migrations/0009_auto_20210511_1623.py new file mode 100644 index 0000000..da92e1f --- /dev/null +++ b/diet_questionnaire/migrations/0009_auto_20210511_1623.py @@ -0,0 +1,21 @@ +# Generated by Django 3.1 on 2021-05-11 09:23 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('diet_questionnaire', '0008_auto_20210511_1510'), + ] + + operations = [ + migrations.AlterField( + model_name='dietquestionnaire', + name='user', + field=models.OneToOneField(blank=True, max_length=200, on_delete=django.db.models.deletion.CASCADE, related_name='diet_questionnaire', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/diet_questionnaire/migrations/0010_auto_20210511_1623.py b/diet_questionnaire/migrations/0010_auto_20210511_1623.py new file mode 100644 index 0000000..87cba20 --- /dev/null +++ b/diet_questionnaire/migrations/0010_auto_20210511_1623.py @@ -0,0 +1,21 @@ +# Generated by Django 3.1 on 2021-05-11 09:23 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('diet_questionnaire', '0009_auto_20210511_1623'), + ] + + operations = [ + migrations.AlterField( + model_name='dietquestionnaire', + name='user', + field=models.OneToOneField(blank=True, on_delete=django.db.models.deletion.CASCADE, related_name='diet_questionnaire', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/profile_dietku/tests.py b/profile_dietku/tests.py index 093f386..e0a46b7 100644 --- a/profile_dietku/tests.py +++ b/profile_dietku/tests.py @@ -62,6 +62,28 @@ class GetProfilesAndCSVTest(APITestCase): current_condition=1, problem_to_solve=1, health_problem=[2, 3]) + + cls.diet_profile_3 = DietProfile.objects.create( + name="test22", + email="test22@test3.com", + age=22, + weight=61, + height=172, + gender=2, + special_condition=1, + body_activity=1, + vegetables_in_one_day=1, + fruits_in_one_day=1, + fried_food_in_one_day=1, + sweet_snacks_in_one_day=1, + sweet_drinks_in_one_day=1, + packaged_food_in_one_day=1, + large_meal_in_one_day=1, + snacks_in_one_day=1, + breakfast_type=1, + current_condition=1, + problem_to_solve=1, + health_problem=[2, 3]) cls.nutritionist = Nutritionist.objects.create( id=1, @@ -128,80 +150,8 @@ class GetProfilesAndCSVTest(APITestCase): name='tes', email='tesst@test.com', password='abc', - diet_profile=cls.diet_profile_2, + diet_profile=cls.diet_profile_3, nutritionist=cls.nutritionist) - - cls.diet_questionnaire = DietQuestionnaire.objects.create( - meal_provider = [ - 1, - 2, - 3 - ], - complaint = [ - 1, - 2, - 3, - 4, - 5, - 6 - ], - agree_to_all_statements_consent = 1, - personal_data_consent = 1, - general_purpose = 1, - date_of_birth = "1995-12-30", - city_and_area_of_residence = "yang jauh disana", - handphone_no = "081234567890", - whatsapp_no = "080987654321", - profession = 4, - last_education = 5, - meal_preference = 2, - waist_size = 60, - dietary_change = 2, - has_weigher = 1, - breakfast_frequency = 3, - breakfast_meal_type = 2, - sweet_tea_consumption_frequency = 9, - coffee_consumption_frequency = 9, - milk_consumption_frequency = 9, - other_drink_consumption_frequency = 9, - additional_sugar_in_a_day = 7, - liquid_consumption_frequency = 3, - meal_consumed_almost_every_day = "gaada", - unliked_food = "semua", - preferred_food_taste = "gaada", - expected_food_on_breakfast = "makanan mahal", - expected_food_on_lunch_dinner = "makanan murah", - breakfast_meal_explanation = "-", - morning_snack_explanation = "ga nyemil", - lunch_meal_explanation = "-", - evening_snack_explanation = "-", - dinner_meal_explanation = "makan enak", - night_snack_explanation = "indomi", - food_alergies = "-", - diet_drinks = "-", - cigarette_alcohol_condition = [ - 4 - ], - multivitamin_tablet_suplement = "-", - physical_activity = [ - "jogging", - "basket", - "apa aja boleh" - ], - diet_and_life_style_story = "-", - disease = [ - 18 - ], - regular_drug_consumption = "obatobatan", - other_disease = "dis-ease", - motivation_using_dietela = "-", - dietela_nutritionist_expectation = "-", - dietela_program_expectation = "-", - finished_steps = [ - 1 - ], - user = cls.custom_user_4 - ) def test_get_all_users(self): response = self.client.get(self.BASE_URL) diff --git a/profile_dietku/views.py b/profile_dietku/views.py index f710eec..8f551ce 100644 --- a/profile_dietku/views.py +++ b/profile_dietku/views.py @@ -90,4 +90,3 @@ class ExportCSVTimDietela(APIView): writer.writerow(col_list) return response - -- GitLab