예제 #1
0
파일: filters.py 프로젝트: atline/lava
class DeviceTypeFilter(filters.FilterSet):
    architecture = RelatedFilter(ArchitectureFilter,
                                 name="architecture",
                                 queryset=Architecture.objects.all())
    processor = RelatedFilter(ProcessorFamilyFilter,
                              name="processor",
                              queryset=ProcessorFamily.objects.all())
    alias = RelatedFilter(AliasFilter,
                          name="aliases",
                          queryset=Alias.objects.all())
    bits = RelatedFilter(BitWidthFilter,
                         name="bits",
                         queryset=BitWidth.objects.all())
    cores = RelatedFilter(CoreFilter,
                          name="cores",
                          queryset=Core.objects.all())
    health_denominator = CharFilter(method="filter_health_denominator")

    def filter_health_denominator(self, queryset, name, value):
        try:
            value = DeviceType.HEALTH_DENOMINATOR_REVERSE[value]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*DeviceType.HEALTH_DENOMINATOR))[1]))
        return queryset.filter(health_denominator=value)

    class Meta:
        model = DeviceType
        fields = {
            "name":
            ["exact", "in", "contains", "icontains", "startswith", "endswith"],
            "cpu_model": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "description": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "health_frequency": ["exact", "in"],
            "disable_health_check": ["exact", "in"],
            "health_denominator": ["exact"],
            "display": ["exact", "in"],
            "core_count": ["exact", "in"],
        }
예제 #2
0
class GroupDevicePermissionFilter(filters.FilterSet):
    device = RelatedFilter(
        DeviceFilter, name="device", queryset=DeviceType.objects.all()
    )
    group = RelatedFilter(GroupFilter, name="group", queryset=Group.objects.all())
    permission = RelatedFilter(
        PermissionFilter, name="permission", queryset=Permission.objects.all()
    )

    class Meta:
        model = GroupDevicePermission
        exclude = {}
예제 #3
0
class DeviceTypeFilter(filters.FilterSet):
    architecture = RelatedFilter(ArchitectureFilter,
                                 name="architecture",
                                 queryset=Architecture.objects.all())
    processor = RelatedFilter(ProcessorFamilyFilter,
                              name="processor",
                              queryset=ProcessorFamily.objects.all())
    alias = RelatedFilter(AliasFilter,
                          name="alias",
                          queryset=Alias.objects.all())
    bits = RelatedFilter(BitWidthFilter,
                         name="bits",
                         queryset=BitWidth.objects.all())
    cores = RelatedFilter(CoreFilter,
                          name="cores",
                          queryset=Core.objects.all())
    health_denominator = ChoiceFilter(choices=DeviceType.HEALTH_DENOMINATOR)

    class Meta:
        model = DeviceType
        fields = {
            "name":
            ["exact", "in", "contains", "icontains", "startswith", "endswith"],
            "cpu_model": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "description": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "health_frequency": ["exact", "in"],
            "disable_health_check": ["exact", "in"],
            "health_denominator": ["exact", "in"],
            "display": ["exact", "in"],
            "core_count": ["exact", "in"],
        }
예제 #4
0
class TestSetFilter(filters.FilterSet):
    suite = RelatedFilter(
        "TestSuiteFilter", name="suite", queryset=TestSuite.objects.all()
    )

    class Meta:
        model = TestSet
        fields = {
            "id": ["exact", "lt", "gt"],
            "name": ["exact", "in", "contains", "icontains", "startswith", "endswith"],
        }
예제 #5
0
class TestCaseFilter(filters.FilterSet):
    result = CharFilter(method="filter_result")
    suite = RelatedFilter(
        "TestSuiteFilter", name="suite", queryset=TestSuite.objects.all()
    )
    test_set = RelatedFilter(
        "TestSetFilter", name="test_set", queryset=TestSet.objects.all()
    )

    def filter_result(self, queryset, name, value):
        try:
            value = TestCase.RESULT_MAP[value.lower()]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(TestCase.RESULT_MAP.keys()))
            )
        return queryset.filter(result=value)

    class Meta:
        model = TestCase
        exclude = {}
        fields = {
            "id": ["exact", "lt", "gt"],
            "start_log_line": ["exact", "lt", "lte", "gt", "gte"],
            "end_log_line": ["exact", "lt", "lte", "gt", "gte"],
            "logged": ["exact", "lt", "lte", "gt", "gte"],
            "measurement": ["exact", "lt", "lte", "gt", "gte"],
            "metadata": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "units": ["exact", "in", "contains", "icontains", "startswith", "endswith"],
            "name": ["exact", "in", "contains", "icontains", "startswith", "endswith"],
        }
예제 #6
0
class UserFilter(filters.FilterSet):
    group = RelatedFilter(GroupFilter, name="group", queryset=Group.objects.all())

    class Meta:
        model = User
        fields = {
            "username": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "email": ["exact", "in", "contains", "icontains", "startswith", "endswith"],
        }
예제 #7
0
class DeviceFilter(filters.FilterSet):
    device_type = RelatedFilter(DeviceTypeFilter,
                                name="device_type",
                                queryset=DeviceType.objects.all())
    physical_owner = RelatedFilter(UserFilter,
                                   name="physical_owner",
                                   queryset=User.objects.all())
    physical_group = RelatedFilter(GroupFilter,
                                   name="physical_group",
                                   queryset=Group.objects.all())
    tags = RelatedFilter(TagFilter, name="tags", queryset=Tag.objects.all())
    last_health_report_job = RelatedFilter(
        "TestJobFilter",
        name="last_health_report_job",
        queryset=TestJob.objects.filter(health_check=True),
    )
    worker_host = RelatedFilter(WorkerFilter,
                                name="worker_host",
                                queryset=Worker.objects.all())
    health = ChoiceFilter(choices=Device.HEALTH_CHOICES)
    state = ChoiceFilter(choices=Device.STATE_CHOICES)

    class Meta:
        model = Device
        fields = {
            "hostname": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "device_version": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "description": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "state": ["exact", "in"],
            "health": ["exact", "in"],
        }
예제 #8
0
파일: filters.py 프로젝트: atline/lava
class TestJobFilter(filters.FilterSet):
    requested_device_type = RelatedFilter(
        DeviceTypeFilter,
        name="requested_device_type",
        queryset=DeviceType.objects.all(),
    )
    actual_device = RelatedFilter(DeviceFilter,
                                  name="actual_device",
                                  queryset=Device.objects.all())
    tags = RelatedFilter(TagFilter, name="tags", queryset=Tag.objects.all())
    viewing_groups = RelatedFilter(GroupFilter,
                                   name="viewing_groups",
                                   queryset=Group.objects.all())
    submitter = RelatedFilter(UserFilter,
                              name="submitter",
                              queryset=User.objects.all())
    failure_tags = RelatedFilter(JobFailureTagFilter,
                                 name="failure_tags",
                                 queryset=JobFailureTag.objects.all())
    health = CharFilter(method="filter_health")
    state = CharFilter(method="filter_state")

    def filter_health(self, queryset, name, value):
        try:
            value = TestJob.HEALTH_REVERSE[value]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*TestJob.HEALTH_CHOICES))[1]))
        return queryset.filter(health=value)

    def filter_state(self, queryset, name, value):
        try:
            value = TestJob.STATE_REVERSE[value]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*TestJob.STATE_CHOICES))[1]))
        return queryset.filter(state=value)

    class Meta:
        model = TestJob
        fields = {
            "submit_time": ["exact", "lt", "gt"],
            "start_time": ["exact", "lt", "gt"],
            "end_time": ["exact", "lt", "gt"],
            "health_check": ["exact"],
            "target_group":
            ["exact", "in", "contains", "icontains", "startswith"],
            "state": ["exact"],
            "health": ["exact"],
            "priority": ["exact", "in", "lt", "lte", "gt", "gte"],
            "description": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "definition": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "original_definition": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "multinode_definition": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "failure_comment": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
                "isnull",
            ],
        }
예제 #9
0
파일: filters.py 프로젝트: atline/lava
class DeviceFilter(filters.FilterSet):
    device_type = RelatedFilter(DeviceTypeFilter,
                                name="device_type",
                                queryset=DeviceType.objects.all())
    physical_owner = RelatedFilter(UserFilter,
                                   name="physical_owner",
                                   queryset=User.objects.all())
    physical_group = RelatedFilter(GroupFilter,
                                   name="physical_group",
                                   queryset=Group.objects.all())
    tags = RelatedFilter(TagFilter, name="tags", queryset=Tag.objects.all())
    last_health_report_job = RelatedFilter(
        "TestJobFilter",
        name="last_health_report_job",
        queryset=TestJob.objects.filter(health_check=True),
    )
    worker_host = RelatedFilter(WorkerFilter,
                                name="worker_host",
                                queryset=Worker.objects.all())
    health = CharFilter(method="filter_health")
    state = CharFilter(method="filter_state")

    def filter_health(self, queryset, name, value):
        try:
            # Need upper() here because HEALTH_REVERSE has inconsistant keys.
            value = Device.HEALTH_REVERSE[value.upper()]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*Device.HEALTH_CHOICES))[1]))
        return queryset.filter(health=value)

    def filter_state(self, queryset, name, value):
        try:
            value = Device.STATE_REVERSE[value]
        except KeyError:
            raise ValidationError(
                "Select a valid choice. %s is not one of the available choices: %s"
                % (value, list(zip(*Device.STATE_CHOICES))[1]))
        return queryset.filter(state=value)

    class Meta:
        model = Device
        fields = {
            "hostname": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "device_version": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "description": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "state": ["exact"],
            "health": ["exact"],
        }
예제 #10
0
class TestJobFilter(filters.FilterSet):
    requested_device_type = RelatedFilter(
        DeviceTypeFilter,
        name="requested_device_type",
        queryset=DeviceType.objects.all(),
    )
    actual_device = RelatedFilter(DeviceFilter,
                                  name="actual_device",
                                  queryset=Device.objects.all())
    tags = RelatedFilter(TagFilter, name="tags", queryset=Tag.objects.all())
    viewing_groups = RelatedFilter(GroupFilter,
                                   name="viewing_groups",
                                   queryset=Group.objects.all())
    submitter = RelatedFilter(UserFilter,
                              name="submitter",
                              queryset=User.objects.all())
    failure_tags = RelatedFilter(JobFailureTagFilter,
                                 name="failure_tags",
                                 queryset=JobFailureTag.objects.all())
    health = ChoiceFilter(choices=TestJob.HEALTH_CHOICES)
    state = ChoiceFilter(choices=TestJob.STATE_CHOICES)

    class Meta:
        model = TestJob
        fields = {
            "submit_time": ["exact", "lt", "gt"],
            "start_time": ["exact", "lt", "gt"],
            "end_time": ["exact", "lt", "gt"],
            "health_check": ["exact"],
            "target_group":
            ["exact", "in", "contains", "icontains", "startswith"],
            "state": ["exact", "in"],
            "health": ["exact", "in"],
            "priority": ["exact", "in"],
            "definition": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "original_definition": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "multinode_definition": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
            ],
            "failure_comment": [
                "exact",
                "in",
                "contains",
                "icontains",
                "startswith",
                "endswith",
                "isnull",
            ],
        }