class ReleaseFilter(django_filters.FilterSet):
    release_id = filters.MultiValueFilter(name='release_id')
    base_product = filters.MultiValueFilter(name='base_product__base_product_id')
    has_base_product = django_filters.CharFilter(method='find_has_base_product')
    release_type = filters.MultiValueFilter(name='release_type__short')
    product_version = filters.MultiValueFilter(name='product_version__product_version_id')
    integrated_with = filters.NullableCharFilter(name='integrated_with__release_id')
    active = filters.CaseInsensitiveBooleanFilter()
    name = filters.MultiValueFilter(name='name')
    short = filters.MultiValueFilter(name='short')
    version = filters.MultiValueFilter(name='version')
    sigkey = filters.MultiValueFilter(name='sigkey__key_id')
    allow_buildroot_push = filters.CaseInsensitiveBooleanFilter()
    allowed_debuginfo_services = filters.MultiValueFilter(name='allowed_debuginfo_services__name')
    allowed_push_targets = AllowedPushTargetsFilter(['product_version'])

    class Meta:
        model = Release
        fields = ("release_id", "name", "short", "version", 'product_version',
                  "release_type", "base_product", 'active', 'integrated_with',
                  'sigkey', 'allow_buildroot_push', 'allowed_debuginfo_services',
                  'allowed_push_targets')

    def find_has_base_product(self, queryset, name, value, *args, **kwargs):
        """
        Make it possible to filter releases if base_product is null or not.
        """
        if value == 'True':
            return queryset.filter(base_product__isnull=False).distinct()
        elif value == 'False':
            return queryset.filter(base_product__isnull=True).distinct()
        return queryset
class PartnerFilterSet(django_filters.FilterSet):
    enabled = filters.CaseInsensitiveBooleanFilter()
    binary = filters.CaseInsensitiveBooleanFilter()
    source = filters.CaseInsensitiveBooleanFilter()
    name = django_filters.CharFilter(lookup_type='icontains')
    type = django_filters.CharFilter(name='type__name')
    short = filters.MultiValueFilter(name='short')
    ftp_dir = filters.MultiValueFilter(name='ftp_dir')
    rsync_dir = filters.MultiValueFilter(name='rsync_dir')
    compose_arches = filters.MultiValueFilter(name='compose_arches__name')
    errata_packages = filters.MultiValueFilter(name='errata_packages__name')

    class Meta:
        model = models.Partner
        fields = (
            'short',
            'name',
            'type',
            'enabled',
            'binary',
            'source',
            'ftp_dir',
            'rsync_dir',
            'compose_arches',
            'errata_packages',
        )
class ReleaseFilter(django_filters.FilterSet):
    release_id = filters.MultiValueFilter(name='release_id')
    base_product = filters.MultiValueFilter(
        name='base_product__base_product_id')
    has_base_product = django_filters.MethodFilter(
        action='find_has_base_product')
    release_type = filters.MultiValueFilter(name='release_type__short')
    product_version = filters.MultiValueFilter(
        name='product_version__product_version_id')
    integrated_with = filters.NullableCharFilter(
        name='integrated_with__release_id')
    active = filters.CaseInsensitiveBooleanFilter()
    name = filters.MultiValueFilter(name='name')
    short = filters.MultiValueFilter(name='short')
    version = filters.MultiValueFilter(name='version')

    class Meta:
        model = Release
        fields = ("release_id", "name", "short", "version", 'product_version',
                  "release_type", "base_product", 'active', 'integrated_with')

    def find_has_base_product(self, queryset, value, *args, **kwargs):
        """
        Make it possible to filter releases if base_product is null or not.
        """
        if value == 'True':
            return queryset.filter(base_product__isnull=False).distinct()
        elif value == 'False':
            return queryset.filter(base_product__isnull=True).distinct()
        return queryset
示例#4
0
class ReleaseGroupFilter(django_filters.FilterSet):
    name = filters.MultiValueFilter(name='name')
    description = filters.MultiValueFilter(name='description')
    type = filters.MultiValueFilter(name='type__name')
    releases = filters.MultiValueFilter(name='releases__release_id')
    active = filters.CaseInsensitiveBooleanFilter()

    class Meta:
        model = ReleaseGroup
        fields = ('name', 'description', 'type', 'releases', 'active')