diff --git a/account/custom_middleware.py b/account/custom_middleware.py index ca89a86..42a3b0f 100644 --- a/account/custom_middleware.py +++ b/account/custom_middleware.py @@ -45,7 +45,11 @@ class CustomMiddleware(object): api_endpoint = request.path if request.user.is_authenticated: # device details - device_details = UserDeviceDetails.objects.filter(user=request.user, device_id=device_id).last() + if device_id: + device_details = UserDeviceDetails.objects.filter(user=request.user, device_id=device_id).last() + if not device_details and api_endpoint != '/api/v1/user/login/': + custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND) + response = custom_response(custom_error) if user_type and str(user_type) == str(NUMBER['one']): junior = Junior.objects.filter(auth=request.user, is_active=False).last() if junior: @@ -56,13 +60,11 @@ class CustomMiddleware(object): if guardian: custom_error = custom_error_response(ERROR_CODE['2075'], response_status=status.HTTP_404_NOT_FOUND) response = custom_response(custom_error) - if device_id and not device_details and api_endpoint != '/api/v1/user/login/': - custom_error = custom_error_response(ERROR_CODE['2037'], response_status=status.HTTP_404_NOT_FOUND) - response = custom_response(custom_error) - force_update = ForceUpdate.objects.filter(version=version, device_type=device_type).last() - api_endpoint_checks = not any(endpoint in api_endpoint for endpoint in ['/admin/', '/api/v1/admin/']) - if not force_update and version and device_type: - custom_error = custom_error_response(ERROR_CODE['2079'], - response_status=status.HTTP_308_PERMANENT_REDIRECT) - response = custom_response(custom_error, status.HTTP_308_PERMANENT_REDIRECT) + + if version and device_type: + force_update = ForceUpdate.objects.filter(version=version, device_type=device_type).last() + if not force_update: + custom_error = custom_error_response(ERROR_CODE['2079'], + response_status=status.HTTP_308_PERMANENT_REDIRECT) + response = custom_response(custom_error, status.HTTP_308_PERMANENT_REDIRECT) return response diff --git a/web_admin/serializers/article_serializer.py b/web_admin/serializers/article_serializer.py index 62d09d4..675591f 100644 --- a/web_admin/serializers/article_serializer.py +++ b/web_admin/serializers/article_serializer.py @@ -237,8 +237,7 @@ class ArticleListSerializer(serializers.ModelSerializer): return None def get_total_points(self, obj): """total points of article""" - total_question = ArticleSurvey.objects.filter(article=obj).count() - return total_question * NUMBER['five'] + return obj.article_survey.all().count() * NUMBER['five'] def get_is_completed(self, obj): """complete all question""" @@ -278,7 +277,7 @@ class ArticleQuestionSerializer(serializers.ModelSerializer): """attempt question or not""" context_data = self.context.get('user') junior_article_obj = JuniorArticlePoints.objects.filter(junior__auth=context_data, - question=obj, is_answer_correct=True).last() + question=obj).last() if junior_article_obj: return junior_article_obj.submitted_answer.id return None diff --git a/web_admin/views/article.py b/web_admin/views/article.py index f362f8b..902f579 100644 --- a/web_admin/views/article.py +++ b/web_admin/views/article.py @@ -229,10 +229,7 @@ class ArticleListViewSet(GenericViewSet, mixins.ListModelMixin): http_method_names = ['get',] def get_queryset(self): - article = self.queryset.objects.filter(is_deleted=False, is_published=True).prefetch_related( - 'article_cards', 'article_survey', 'article_survey__options' - ).order_by('-created_at') - queryset = self.filter_queryset(article) + queryset = self.queryset.objects.filter(is_deleted=False, is_published=True).order_by('-created_at') return queryset def list(self, request, *args, **kwargs):