• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

akvo / rtmis / #1101

15 Apr 2024 03:12PM UTC coverage: 79.088% (+0.05%) from 79.04%
#1101

push

coveralls-python

dedenbangkit
Fix duplicated value on the form options

2425 of 3228 branches covered (75.12%)

Branch coverage included in aggregate %.

5797 of 7168 relevant lines covered (80.87%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

56.99
backend/api/v1/v1_jobs/serializers.py
1
from django.core.validators import FileExtensionValidator
1✔
2
from rest_framework import serializers
1✔
3

4
from drf_spectacular.utils import extend_schema_field
1✔
5
from drf_spectacular.types import OpenApiTypes
1✔
6
from api.v1.v1_forms.models import Forms
1✔
7
from api.v1.v1_jobs.constants import JobTypes, JobStatus
1✔
8
from api.v1.v1_jobs.models import Jobs
1✔
9
from api.v1.v1_profile.models import Administration, AdministrationAttribute
1✔
10
from utils.custom_serializer_fields import CustomPrimaryKeyRelatedField, \
1✔
11
    CustomFileField, CustomChoiceField
12

13

14
class DownloadDataRequestSerializer(serializers.Serializer):
1✔
15
    form_id = CustomPrimaryKeyRelatedField(queryset=Forms.objects.none())
1✔
16
    administration_id = CustomPrimaryKeyRelatedField(
1✔
17
        queryset=Administration.objects.none(), required=False)
18

19
    def __init__(self, **kwargs):
1✔
20
        super().__init__(**kwargs)
×
21
        self.fields.get('form_id').queryset = Forms.objects.all()
×
22
        self.fields.get(
×
23
            'administration_id').queryset = Administration.objects.all()
24

25

26
class DownloadListSerializer(serializers.ModelSerializer):
1✔
27
    type = serializers.SerializerMethodField()
1✔
28
    category = serializers.SerializerMethodField()
1✔
29
    status = serializers.SerializerMethodField()
1✔
30
    administration = serializers.SerializerMethodField()
1✔
31
    date = serializers.DateTimeField(
1✔
32
        source='available', format="%B %d, %Y %I:%M %p")
33
    form = serializers.SerializerMethodField()
1✔
34
    attributes = serializers.SerializerMethodField()
1✔
35

36
    @extend_schema_field(CustomChoiceField(
1✔
37
        choices=[JobTypes.FieldStr[d] for d in JobTypes.FieldStr]))
38
    def get_category(self, instance):
1✔
39
        job_type = JobTypes.FieldStr.get(instance.type)
×
40
        if job_type == 'download_administration':
×
41
            return 'Administration List'
×
42
        if job_type == 'download_entities':
×
43
            return 'Entities'
×
44
        return 'Form Data'
×
45

46
    @extend_schema_field(CustomChoiceField(
1✔
47
        choices=[JobStatus.FieldStr[d] for d in JobStatus.FieldStr]))
48
    def get_status(self, instance):
1✔
49
        return JobStatus.FieldStr.get(instance.status)
×
50

51
    @extend_schema_field(OpenApiTypes.STR)
1✔
52
    def get_administration(self, instance):
1✔
53
        admin_id = instance.info.get('administration') or instance.info.get(
×
54
            'adm_id')
55
        if admin_id:
×
56
            return Administration.objects.get(pk=admin_id).full_name
×
57
        return None
×
58

59
    @extend_schema_field(OpenApiTypes.STR)
1✔
60
    def get_form(self, instance):
1✔
61
        form_id = instance.info.get('form_id')
×
62
        if form_id:
×
63
            return Forms.objects.get(pk=form_id).name
×
64
        return None
×
65

66
    @extend_schema_field(CustomChoiceField(
1✔
67
        choices=[JobTypes.FieldStr[d] for d in JobTypes.FieldStr]))
68
    def get_type(self, instance):
1✔
69
        return JobTypes.FieldStr.get(instance.type)
×
70

71
    @extend_schema_field(OpenApiTypes.ANY)
1✔
72
    def get_attributes(self, instance):
1✔
73
        if instance.type == JobTypes.download_entities:
×
74
            return instance.info.get("entities")
×
75
        if instance.type == JobTypes.download_administration:
×
76
            attributes = AdministrationAttribute.objects.filter(
×
77
                pk__in=instance.info.get("attributes")
78
            ).values("id", "name")
79
            attributes = [a for a in attributes]
×
80
            return attributes
×
81
        return instance.info.get("attributes")
×
82

83
    class Meta:
1✔
84
        model = Jobs
1✔
85
        fields = ['id', 'task_id', 'type', 'status', 'form',
1✔
86
                  'category', 'administration', 'date', 'result', 'attributes']
87

88

89
class UploadExcelSerializer(serializers.Serializer):
1✔
90
    file = CustomFileField(validators=[FileExtensionValidator(['xlsx'])])
1✔
91
    is_update = serializers.BooleanField(default=False)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc