fix meal api and force update api

This commit is contained in:
bobbyvish
2024-04-04 16:27:43 +05:30
parent 9e66760fae
commit 8878dc89ac
5 changed files with 53 additions and 9 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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:

View File

@@ -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+$')]),
),
]

View File

@@ -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.')