diff --git a/api/dashboard/profile/profile_serializer.py b/api/dashboard/profile/profile_serializer.py index 7fdd0d55..3839a3a8 100644 --- a/api/dashboard/profile/profile_serializer.py +++ b/api/dashboard/profile/profile_serializer.py @@ -70,6 +70,7 @@ class Meta: "percentile", ) + def get_percentile(self, obj): users_count_lt_user_karma = Wallet.objects.filter( karma__lt=obj.wallet_user.karma @@ -177,7 +178,7 @@ def get_tasks(self, obj): user_igs = UserIgLink.objects.filter( user__id=user_id).values_list("ig__name", flat=True) tasks = TaskList.objects.filter(level=obj) - + if obj.level_order > 4: tasks = tasks.filter(ig__name__in=user_igs) @@ -271,8 +272,8 @@ def update(self, instance, validated_data): class UserProfileEditSerializer(serializers.ModelSerializer): communities = serializers.ListField(write_only=True) - - + + def to_representation(self, instance): data = super().to_representation(instance) communities = instance.user_organization_link_user.filter( @@ -312,7 +313,7 @@ def update(self, instance, validated_data): UserOrganizationLink.objects.bulk_create( user_organization_links) - + return super().update(instance, validated_data) @@ -326,9 +327,9 @@ class Meta: "gender", "dob", "district", - + ] - + class UserIgListSerializer(serializers.ModelSerializer): @@ -409,7 +410,7 @@ def create_karma_activity_log(task_hashtag, karma_value): WebHookActions.UPDATE.value, value ) - + else: KarmaActivityLog.objects.filter( task_id=task.id, user_id=user_id @@ -431,3 +432,18 @@ def create_karma_activity_log(task_hashtag, karma_value): create_karma_activity_log(f"#social_{account}", -20) return super().update(instance, validated_data) + +class UserTermSerializer(serializers.ModelSerializer): + is_userterms_approved = serializers.SerializerMethodField() + + + class Meta: + model = UserSettings + fields =[ + "is_userterms_approved", + "user", + ] + def get_userterm(self, instance, validated_data): + instance.is_userterms_approved = validated_data.get('is_userterms_approved', instance.is_userterms_approved) + instance.save() + return instance diff --git a/api/dashboard/profile/profile_view.py b/api/dashboard/profile/profile_view.py index db20a97a..555789d5 100644 --- a/api/dashboard/profile/profile_view.py +++ b/api/dashboard/profile/profile_view.py @@ -436,3 +436,31 @@ def get(self, request, muid): return CustomResponse( response="The given muid seems to be invalid" ).get_failure_response() + +class UsertermAPI(APIView): + def post(self, request,muid): + user = User.objects.get(muid=muid) + try: + settings = UserSettings.objects.get(user=user) + except UserSettings.DoesNotExist: + return CustomResponse(response="The user setting doesn't exists").get_failure_response() + + serializer = UserTermSerializer(settings, data={"is_userterms_approved": True}, partial=True) + if serializer.is_valid(): + settings = serializer.save() + if settings.is_userterms_approved: + return CustomResponse(response=response_data).get_success_response() + else: + return CustomResponse(response="The given muid seems to be invalid").get_failure_response() + return CustomResponse(response=response_data).get_failure_response() + + def get(self,request,muid): + user = User.objects.get(muid=muid) + try: + settings = UserSettings.objects.get(user=user) + except UserSettings.DoesNotExist: + return CustomResponse(response="The user settings doesn't exists").get_failure_response() + if settings.is_userterms_approved: + return CustomResponse(response=response_data).get_success_response() + else: + return CustomResponse(response=response_data).get_failure_response() diff --git a/api/dashboard/profile/urls.py b/api/dashboard/profile/urls.py index 2a6da3b2..5552aac6 100644 --- a/api/dashboard/profile/urls.py +++ b/api/dashboard/profile/urls.py @@ -21,4 +21,5 @@ path('socials//', profile_view.GetSocialsAPI.as_view()), path('qrcode-get//', profile_view.QrcodeRetrieveAPI.as_view()), path('change-password/', profile_view.ResetPasswordAPI.as_view()), + path('userterm-approved/,/',profile_view.UsertermAPI.as_view()) ] diff --git a/api/launchpad/launchpad_views.py b/api/launchpad/launchpad_views.py index 3827fc07..5d2557fe 100644 --- a/api/launchpad/launchpad_views.py +++ b/api/launchpad/launchpad_views.py @@ -144,7 +144,7 @@ def get(self, request): paginated_queryset = CommonUtils.get_paginated_queryset( users, request, - ["full_name", "karma", "org", "district_name", "state"] + ["muid","full_name","org"] ) final_users = paginated_queryset.get("queryset") diff --git a/db/user.py b/db/user.py index 3177c558..e40e633c 100644 --- a/db/user.py +++ b/db/user.py @@ -164,6 +164,7 @@ class UserSettings(models.Model): id = models.CharField(primary_key=True, max_length=36, default=uuid.uuid4) user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user_settings_user") is_public = models.BooleanField(default=False) + is_userterms_approved = models.BooleanField(default=False) updated_by = models.ForeignKey(User, on_delete=models.SET(settings.SYSTEM_ADMIN_ID), db_column='updated_by', related_name='user_settings_updated_by') updated_at = models.DateTimeField(auto_now=True) @@ -221,6 +222,3 @@ class Meta: managed = False db_table = 'user_coupon_link' - - - diff --git a/utils/types.py b/utils/types.py index d4431952..5eafabde 100644 --- a/utils/types.py +++ b/utils/types.py @@ -156,7 +156,8 @@ def get_all_values(cls): class TFPTasksHashtags(Enum): SCRATCH = '#tfp2.0-scratch' COMMAND_LINE = '#tfp2.0-command-line' - + GIT_GITHUB = '#tfp2.0-git-github' + @classmethod def get_all_values(cls): return [member.value for member in cls]