diff --git a/module_activity/api/serializers.py b/module_activity/api/serializers.py index b580767..fab68ea 100644 --- a/module_activity/api/serializers.py +++ b/module_activity/api/serializers.py @@ -281,7 +281,7 @@ class MealRecordSerializer(serializers.ModelSerializer): food_ingredient_record_data = validated_data.pop("food_ingredient_records", []) meal_record = self.Meta.model.objects.create(**validated_data) - + print(f"meal recordd id in serializer {meal_record.id}") food_record_list = [] for data in food_record_data: obj, _ = FoodRecord.objects.get_or_create(**data) @@ -309,6 +309,8 @@ class MealRecordSerializer(serializers.ModelSerializer): instance.meal_type = validated_data.get("meal_type", instance.meal_type) instance.save() + print(f"meal record id in update 1 method {instance.id}") + food_record_data = validated_data.pop("food_records", []) beverage_record_data = validated_data.pop("beverage_records", []) food_ingredient_record_data = validated_data.pop("food_ingredient_records", []) @@ -333,6 +335,7 @@ class MealRecordSerializer(serializers.ModelSerializer): instance.beverage_records.set(beverage_record_list) instance.save() + print(f"meal record id in update 2 method {instance.id}") return instance @@ -446,6 +449,8 @@ class MealSymptomRecordSerializer(serializers.ModelSerializer): related_meal=related_meal_id, **validated_data ) + print(f"symptoms meal record in create {meal_symptom_record.id, meal_symptom_record.related_meal.id}") + before_meal_list = [] for data in before_meal_data: obj, _ = SymptomTypeBeforeMeal.objects.get_or_create(**data) @@ -490,5 +495,6 @@ class MealSymptomRecordSerializer(serializers.ModelSerializer): instance.symptoms_after_meal.set(after_meal_instances) instance.save() + print(f"symptoms meal record in update {instance.id, instance.related_meal.id}") return instance diff --git a/module_activity/api/views.py b/module_activity/api/views.py index f7c51e8..a87eb92 100644 --- a/module_activity/api/views.py +++ b/module_activity/api/views.py @@ -496,7 +496,8 @@ class MealSymptomAPIView(APIView): message=constants.FAILURE, errors=serializer.errors ) try: - serializer.save(principal=request.user) + instance = serializer.save(principal=request.user) + print(f"symptoms meal in put view {instance.id}") except Exception as e: return ApiResponse.error(message=constants.FAILURE, errors=str(e)) @@ -517,7 +518,8 @@ class MealSymptomAPIView(APIView): return ApiResponse.error(message=constants.FAILURE, errors=serializer.data) try: - serializer.save() + instance = serializer.save() + print(f"symptoms meal in put view {instance.id}") except Exception as e: return ApiResponse.error(message=constants.FAILURE, errors=str(e)) @@ -572,7 +574,8 @@ class MealAPIView(APIView): message=constants.FAILURE, errors=serializer.errors ) try: - serializer.save(principal=request.user) + meal_id = serializer.save(principal=request.user) + print(f"meal id in views {meal_id.id}") except Exception as e: return ApiResponse.error(message=constants.FAILURE, errors=str(e)) @@ -593,7 +596,8 @@ class MealAPIView(APIView): return ApiResponse.error(message=constants.FAILURE, errors=serializer.data) try: - serializer.save() + instance = serializer.save() + print(f"meal record id in put emthod {instance.id}") except Exception as e: return ApiResponse.error(message=constants.FAILURE, errors=str(e)) @@ -666,7 +670,7 @@ class MealDateAPIView(APIView): return ApiResponse.error( message=constants.FAILURE, errors="Invalid date format" ) - obj = self.model.objects.filter(date=date_obj) + obj = self.model.objects.filter(principal=request.user.id, date=date_obj) serializer = self.serializer_class(obj, many=True) return ApiResponse.success(message=constants.SUCCESS, data=serializer.data) diff --git a/module_auth/api/views.py b/module_auth/api/views.py index 165ae9f..1dbb258 100644 --- a/module_auth/api/views.py +++ b/module_auth/api/views.py @@ -349,14 +349,18 @@ class AppleSignin(APIView): class VersionCheck(APIView): authentication_classes = [] permission_classes = [] + model = AppVersion def get(self, request, *args, **kwargs): app_version = request.GET.get('appVersion') + device_type = request.GET.get('deviceType') + if not app_version or not device_type: + return ApiResponse.error(message=constants.FAILURE, errors="App version and device type is required") # Query the database to retrieve the upgrade flags based on the app version try: - version = AppVersion.objects.get(version=app_version) - except AppVersion.DoesNotExist: + version = self.model.objects.get(version=app_version) + except self.model.DoesNotExist: version = None if version: diff --git a/module_iam/migrations/0008_appversion_device_type_alter_appversion_version.py b/module_iam/migrations/0008_appversion_device_type_alter_appversion_version.py new file mode 100644 index 0000000..c9d1ec0 --- /dev/null +++ b/module_iam/migrations/0008_appversion_device_type_alter_appversion_version.py @@ -0,0 +1,25 @@ +# Generated by Django 5.0.2 on 2024-04-04 10:10 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('module_iam', '0007_iamprincipalresourcelink_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='appversion', + name='device_type', + field=models.CharField(choices=[('apple', 'apple'), ('android', 'android')], default=1, max_length=10), + preserve_default=False, + ), + migrations.AlterField( + model_name='appversion', + name='version', + field=models.CharField(max_length=10, validators=[django.core.validators.RegexValidator('^\\d+\\.\\d+$')]), + ), + ] diff --git a/module_iam/models.py b/module_iam/models.py index 0c2cab5..497afc9 100644 --- a/module_iam/models.py +++ b/module_iam/models.py @@ -448,7 +448,12 @@ class IAmPrincipalBiometric(BaseModel): class AppVersion(models.Model): - version = models.CharField(max_length=10, validators=[RegexValidator(r'^\d+\.\d+\.\d+$')]) + DEVICE_CHOICES = [ + ('apple', 'apple'), + ('android', 'android'), + ] + device_type = models.CharField(max_length=10, choices=DEVICE_CHOICES) + version = models.CharField(max_length=10, validators=[RegexValidator(r'^\d+\.\d+$')]) force_upgrade = models.BooleanField(default=False, help_text='Indicates whether a force upgrade is needed for this app version.') recommend_upgrade = models.BooleanField(default=False, help_text='Indicates whether a recommend upgrade is needed for this app version.')