From a833b5a96b0b5bafebab8a529f9db029ba051a19 Mon Sep 17 00:00:00 2001 From: sks444 <krishnasingh.ss30@gmail.com> Date: Wed, 11 Nov 2020 14:00:39 +0530 Subject: [PATCH] Hanlde submissions which can not be screened by defaults --- hypha/apply/api/v1/screening/serializers.py | 10 ++--- hypha/apply/api/v1/screening/views.py | 2 +- hypha/apply/funds/models/submissions.py | 6 +++ .../includes/screening_status_block.html | 38 +++++++++++-------- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/hypha/apply/api/v1/screening/serializers.py b/hypha/apply/api/v1/screening/serializers.py index 0a5fed73d..2152524f0 100644 --- a/hypha/apply/api/v1/screening/serializers.py +++ b/hypha/apply/api/v1/screening/serializers.py @@ -6,18 +6,18 @@ from hypha.apply.funds.models import ScreeningStatus class ScreeningStatusListSerializer(serializers.ModelSerializer): class Meta: model = ScreeningStatus - fields = ('title', 'yes', 'default') + fields = ('id', 'title', 'yes', 'default') class ScreeningStatusSerializer(serializers.Serializer): - title = serializers.CharField() + id = serializers.IntegerField() - def validate_title(self, value): + def validate_id(self, value): try: - ScreeningStatus.objects.get(title=value) + ScreeningStatus.objects.get(id=value) except ScreeningStatus.DoesNotExist: raise exceptions.ValidationError({ - 'detail': 'Title is not valid' + 'detail': 'Not found' }) return value diff --git a/hypha/apply/api/v1/screening/views.py b/hypha/apply/api/v1/screening/views.py index 2bc96a0ef..95defb85d 100644 --- a/hypha/apply/api/v1/screening/views.py +++ b/hypha/apply/api/v1/screening/views.py @@ -39,7 +39,7 @@ class SubmissionScreeningStatusViewSet( permission_classes = ( HasAPIKey | permissions.IsAuthenticated, HasAPIKey | IsApplyStaffUser, ) - serializer_class = ScreeningStatusSerializer + serializer_class = ScreeningStatusListSerializer def get_queryset(self): submission = self.get_submission_object() diff --git a/hypha/apply/funds/models/submissions.py b/hypha/apply/funds/models/submissions.py index 9d5c02a2a..16f0c35fb 100644 --- a/hypha/apply/funds/models/submissions.py +++ b/hypha/apply/funds/models/submissions.py @@ -840,6 +840,12 @@ class ApplicationSubmission( {status.title: status.id for status in ScreeningStatus.objects.filter(yes=False)} ) + @property + def supports_default_screening(self): + if self.screening_statuses.exists(): + return self.screening_statuses.filter(default=True).exists() + return True + @receiver(post_transition, sender=ApplicationSubmission) def log_status_update(sender, **kwargs): diff --git a/hypha/apply/funds/templates/funds/includes/screening_status_block.html b/hypha/apply/funds/templates/funds/includes/screening_status_block.html index d46b93996..4cf53bd46 100644 --- a/hypha/apply/funds/templates/funds/includes/screening_status_block.html +++ b/hypha/apply/funds/templates/funds/includes/screening_status_block.html @@ -1,24 +1,26 @@ <div class="sidebar__inner"> <h5>Screening Status</h5> - <div class="screening-status-box" style="display: flex;"> - <div class="screening-status-yes" style="margin-right: 2em;"> - <div> - {{ default_yes }} + {% if object.supports_default_screening %} + <div class="screening-status-box" style="display: flex;"> + <div class="screening-status-yes" style="margin-right: 2em;"> + <div> + {{ default_yes }} + </div> + <div class="thumb thumbs-up" data-id="{{ object.id }}" data-yes="true"> + <svg class="icon icon--like {% if object.has_yes_default_screening_status_set %}icon--like-yes{% endif %} {% if object.can_not_edit_default %}icon--like-disable{% endif %}"><use xlink:href="#like"></use></svg> + </div> </div> - <div class="thumb thumbs-up" data-id="{{ object.id }}" data-yes="true"> - <svg class="icon icon--like {% if object.has_yes_default_screening_status_set %}icon--like-yes{% endif %} {% if object.can_not_edit_default %}icon--like-disable{% endif %}"><use xlink:href="#like"></use></svg> + <div class="screening-status-no"> + <div> + {{ default_no }} + </div> + <div class="thumb thumbs-down" data-id="{{ object.id }}" data-yes="false"> + <svg class="icon icon--dislike {% if object.has_no_default_screening_status_set %}icon--dislike-no{% endif %} {% if object.can_not_edit_default %}icon--dislike-disable{% endif %}"><use xlink:href="#dislike"></use></svg> + </div> </div> </div> - <div class="screening-status-no"> - <div> - {{ default_no }} - </div> - <div class="thumb thumbs-down" data-id="{{ object.id }}" data-yes="false"> - <svg class="icon icon--dislike {% if object.has_no_default_screening_status_set %}icon--dislike-no{% endif %} {% if object.can_not_edit_default %}icon--dislike-disable{% endif %}"><use xlink:href="#dislike"></use></svg> - </div> - </div> - </div> + {% endif %} <div class="show-screening-options"> {% if object.has_default_screening_status_set %} @@ -27,6 +29,10 @@ <a id="screening-options" data-fancybox="" data-src="#screen-application" data-yes="{% if object.has_yes_default_screening_status_set %}true{% else %}false{% endif %}" class="link link--secondary-change" href="#">Screening Options</a> </p> {% endif %} + {% if not object.supports_default_screening %} + <p id="screening-options-para"> + {{ object.screening_statuses.all|join:', ' }} + </p> + {% endif %} </div> - </div> -- GitLab