Example #1
0
class UserFilter(django_filters.FilterSet):
    cluster_uuid = django_filters.UUIDFilter(method='filter_by_cluster')
    user_uuid = django_filters.UUIDFilter(field_name='user__uuid')
    user_username = django_filters.CharFilter(field_name='user__username',
                                              lookup_expr='icontains')
    user_full_name = django_filters.CharFilter(field_name='user__full_name',
                                               lookup_expr='icontains')
    settings_uuid = django_filters.UUIDFilter(field_name='settings__uuid')

    class Meta:
        model = models.RancherUser
        fields = (
            'cluster_uuid',
            'user_uuid',
            'settings_uuid',
            'is_active',
        )

    def filter_by_cluster(self, queryset, name, value):
        try:
            cluster = models.Cluster.objects.get(uuid=value)
        except models.Cluster.DoesNotExist:
            return queryset.none()
        else:
            user_ids = models.RancherUserClusterLink.objects.filter(
                cluster=cluster).values_list('user_id', flat=True)
            return queryset.filter(id__in=user_ids)
Example #2
0
class BaseServiceFilter(six.with_metaclass(ServiceFilterMetaclass, django_filters.FilterSet)):
    customer = django_filters.UUIDFilter(name='customer__uuid')
    name = django_filters.CharFilter(name='settings__name', lookup_expr='icontains')
    name_exact = django_filters.CharFilter(name='settings__name', lookup_expr='exact')
    project = core_filters.URLFilter(view_name='project-detail', name='projects__uuid', distinct=True)
    project_uuid = django_filters.UUIDFilter(name='projects__uuid', distinct=True)
    settings = core_filters.URLFilter(view_name='servicesettings-detail', name='settings__uuid', distinct=True)
    shared = django_filters.BooleanFilter(name='settings__shared', distinct=True, widget=BooleanWidget)
    type = ServiceTypeFilter(name='settings__type')
    tag = django_filters.ModelMultipleChoiceFilter(
        name='settings__tags__name',
        to_field_name='name',
        lookup_expr='in',
        queryset=taggit.models.Tag.objects.all(),
    )
    # rtag - required tag, support for filtration by tags using AND operation
    # ?rtag=t1&rtag=t2 - will filter instances that have both t1 and t2.
    rtag = django_filters.ModelMultipleChoiceFilter(
        name='settings__tags__name',
        to_field_name='name',
        queryset=taggit.models.Tag.objects.all(),
        conjoined=True,
    )

    class Meta(object):
        model = models.Service
        fields = ('name', 'name_exact', 'project_uuid',
                  'customer', 'project', 'settings', 'shared', 'type', 'tag', 'rtag')
Example #3
0
class SnapshotFilter(structure_filters.BaseResourceFilter):
    source_volume_uuid = django_filters.UUIDFilter(field_name='source_volume__uuid')
    source_volume = core_filters.URLFilter(
        view_name='openstacktenant-volume-detail', field_name='source_volume__uuid'
    )
    backup_uuid = django_filters.UUIDFilter(field_name='backups__uuid')
    backup = core_filters.URLFilter(
        view_name='openstacktenant-backup-detail', field_name='backups__uuid'
    )

    snapshot_schedule = core_filters.URLFilter(
        view_name='openstacktenant-snapshot-schedule-detail',
        field_name='snapshot_schedule__uuid',
    )
    snapshot_schedule_uuid = django_filters.UUIDFilter(
        field_name='snapshot_schedule__uuid'
    )

    class Meta(structure_filters.BaseResourceFilter.Meta):
        model = models.Snapshot
        fields = structure_filters.BaseResourceFilter.Meta.fields + ('runtime_state',)

    ORDERING_FIELDS = structure_filters.BaseResourceFilter.ORDERING_FIELDS + (
        ('source_volume__name', 'source_volume_name'),
        ('size', 'size'),
    )
Example #4
0
class OpenStackPackageFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(name='tenant__name',
                                     lookup_expr='icontains')
    customer = core_filters.URLFilter(
        view_name='customer-detail',
        name='tenant__service_project_link__project__customer__uuid')
    customer_uuid = django_filters.UUIDFilter(
        name='tenant__service_project_link__project__customer__uuid')
    project = core_filters.URLFilter(
        view_name='project-detail',
        name='tenant__service_project_link__project__uuid')
    project_uuid = django_filters.UUIDFilter(
        name='tenant__service_project_link__project__uuid')
    template = core_filters.URLFilter(view_name='package-template-detail',
                                      name='template__uuid')
    template_uuid = django_filters.UUIDFilter(name='template__uuid')
    tenant = core_filters.URLFilter(view_name='openstack-tenant-detail',
                                    name='tenant__uuid')
    tenant_uuid = django_filters.UUIDFilter(name='tenant__uuid')
    service_settings = core_filters.URLFilter(
        view_name='servicesettings-detail', name='service_settings__uuid')
    service_settings_uuid = django_filters.UUIDFilter(
        name='service_settings__uuid')

    class Meta(object):
        model = models.OpenStackPackage
        fields = '__all__'
Example #5
0
class OrderFilter(django_filters.FilterSet):
    customer = core_filters.URLFilter(
        view_name='customer-detail', field_name='project__customer__uuid'
    )
    customer_uuid = django_filters.UUIDFilter(field_name='project__customer__uuid')
    project = core_filters.URLFilter(
        view_name='project-detail', field_name='project__uuid'
    )
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')
    state = core_filters.MappedMultipleChoiceFilter(
        choices=[
            (representation, representation)
            for db_value, representation in models.Order.States.CHOICES
        ],
        choice_mappings={
            representation: db_value
            for db_value, representation in models.Order.States.CHOICES
        },
    )
    o = django_filters.OrderingFilter(
        fields=('created', 'approved_at', 'total_cost', 'state')
    )

    class Meta:
        model = models.Order
        fields = []
Example #6
0
class FeedbackFilter(django_filters.FilterSet):
    issue = core_filters.URLFilter(view_name='support-issue-detail',
                                   field_name='issue__uuid')
    issue_uuid = django_filters.UUIDFilter(field_name='issue__uuid')

    user = core_filters.URLFilter(view_name='user-detail',
                                  field_name='issue__caller__uuid')
    user_uuid = django_filters.UUIDFilter(field_name='issue__caller__uuid')

    created_before = django_filters.DateTimeFilter(field_name="created",
                                                   lookup_expr="lte")
    created_after = django_filters.DateTimeFilter(field_name="created",
                                                  lookup_expr="gte")

    evaluation = core_filters.MappedMultipleChoiceFilter(
        choices=[
            (representation, representation)
            for db_value, representation in models.Feedback.Evaluation.CHOICES
        ],
        choice_mappings={
            representation: db_value
            for db_value, representation in models.Feedback.Evaluation.CHOICES
        },
    )

    issue_key = django_filters.CharFilter(field_name='issue__key')
    user_full_name = django_filters.CharFilter(method='filter_by_full_name',
                                               label='User full name contains')

    def filter_by_full_name(self, queryset, name, value):
        return core_filters.filter_by_full_name(queryset, value,
                                                'issue__caller')
Example #7
0
class OfferingFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(lookup_expr='icontains')
    description = django_filters.CharFilter(lookup_expr='icontains')
    type = django_filters.ChoiceFilter(
        choices=[(item, item)
                 for item in settings.WALDUR_SUPPORT['OFFERINGS'].keys()])
    issue = core_filters.URLFilter(view_name='support-issue-detail',
                                   name='issue__uuid')
    issue_uuid = django_filters.UUIDFilter(name='issue__uuid')
    project = core_filters.URLFilter(view_name='project-detail',
                                     name='project__uuid')
    project_uuid = django_filters.UUIDFilter(name='project__uuid')
    state = core_filters.MappedMultipleChoiceFilter(
        choices=[(representation, representation)
                 for db_value, representation in models.Offering.States.CHOICES
                 ],
        choice_mappings={
            representation: db_value
            for db_value, representation in models.Offering.States.CHOICES
        },
    )

    o = django_filters.OrderingFilter(fields=('created', 'modified', 'state'))

    class Meta(object):
        model = models.Offering
        fields = ('name', 'description', 'type', 'issue', 'issue_uuid',
                  'project', 'project_uuid', 'state')
Example #8
0
class IngredientCompositionFilter(FilterSet):
    ingredient_uuid = django_filters.UUIDFilter(name='ingredient__uuid')
    measurement_uuid = django_filters.UUIDFilter(name='measurement__uuid')

    class Meta:
        model = IngredientComposition
        fields = ['ingredient_uuid', 'quantity', 'measurement_uuid', 'uuid']
Example #9
0
class TemplateFilter(structure_filters.ServicePropertySettingsFilter):
    catalog_uuid = django_filters.UUIDFilter(field_name='catalog__uuid')
    cluster_uuid = django_filters.UUIDFilter(method='filter_by_cluster')
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')
    o = django_filters.OrderingFilter(fields=(('name', 'name'),
                                              ('catalog__name',
                                               'catalog_name')))

    class Meta:
        model = models.Template
        fields = structure_filters.ServicePropertySettingsFilter.Meta.fields + (
            'catalog_uuid',
            'cluster_uuid',
            'project_uuid',
        )

    def filter_by_cluster(self, queryset, name, value):
        try:
            cluster = models.Cluster.objects.get(uuid=value)
        except models.Cluster.DoesNotExist:
            return queryset.none()
        else:
            # Include global templates
            service_settings = cluster.service_project_link.service.settings
            ctype = ContentType.objects.get_for_model(service_settings)
            global_subquery = Q(catalog__content_type=ctype,
                                catalog__object_id=service_settings.id)
            return queryset.filter(Q(cluster=cluster) | global_subquery)
Example #10
0
class IngressFilter(structure_filters.BaseResourceFilter):
    cluster_uuid = django_filters.UUIDFilter(field_name='cluster__uuid')
    rancher_project_uuid = django_filters.UUIDFilter(
        field_name='rancher_project__uuid')
    namespace_uuid = django_filters.UUIDFilter(field_name='namespace__uuid')

    class Meta(structure_filters.BaseResourceFilter.Meta):
        model = models.Ingress
Example #11
0
class ApplicationFilter(structure_filters.BaseResourceFilter):
    cluster_uuid = django_filters.UUIDFilter(field_name='cluster__uuid')
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')
    template_uuid = django_filters.UUIDFilter(field_name='template__uuid')
    namespace_uuid = django_filters.UUIDFilter(field_name='namespace__uuid')

    class Meta(structure_filters.BaseResourceFilter.Meta):
        model = models.Application
Example #12
0
class CommentFilter(django_filters.FilterSet):
    issue = core_filters.URLFilter(view_name='jira-issues-detail', field_name='issue__uuid')
    issue_uuid = django_filters.UUIDFilter(field_name='issue__uuid')
    user_uuid = django_filters.UUIDFilter(field_name='user__uuid')

    class Meta:
        model = models.Comment
        fields = []
Example #13
0
class BaseServiceProjectLinkFilter(django_filters.FilterSet):
    service_uuid = django_filters.UUIDFilter(name='service__uuid')
    customer_uuid = django_filters.UUIDFilter(name='service__customer__uuid')
    project_uuid = django_filters.UUIDFilter(name='project__uuid')
    project = core_filters.URLFilter(view_name='project-detail', name='project__uuid')

    class Meta(object):
        model = models.ServiceProjectLink
        fields = ()
Example #14
0
class ServiceSettingsFilter(NameFilterSet):
    type = ServiceTypeFilter()
    state = core_filters.StateFilter()
    customer = django_filters.UUIDFilter(field_name='customer__uuid')
    customer_uuid = django_filters.UUIDFilter(field_name='customer__uuid')

    class Meta:
        model = models.ServiceSettings
        fields = ('name', 'type', 'state', 'shared')
Example #15
0
class ApplicationFilter(BaseSummaryFilterSet):
    project = django_filters.UUIDFilter(field_name='project__uuid')
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')
    project_name = django_filters.CharFilter(field_name='project__name',
                                             lookup_expr='icontains')

    class Meta:
        model = models.ApplicationModel
        fields = []
Example #16
0
class IssueFilter(django_filters.FilterSet):
    summary = django_filters.CharFilter(lookup_expr='icontains')

    customer = core_filters.URLFilter(
        view_name='customer-detail', field_name='customer__uuid'
    )
    customer_uuid = django_filters.UUIDFilter(field_name='customer__uuid')

    project = core_filters.URLFilter(
        view_name='project-detail', field_name='project__uuid'
    )
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')

    reporter_name = django_filters.CharFilter(
        lookup_expr='icontains', field_name='reporter__name'
    )
    reporter = core_filters.URLFilter(
        view_name='support-user-detail', field_name='reporter__uuid'
    )

    caller_full_name = django_filters.CharFilter(
        lookup_expr='icontains', field_name='caller__full_name'
    )
    caller = core_filters.URLFilter(view_name='user-detail', field_name='caller__uuid')

    assignee_name = django_filters.CharFilter(
        lookup_expr='icontains', field_name='assignee__name'
    )
    assignee = core_filters.URLFilter(
        view_name='support-user-detail', field_name='assignee__uuid'
    )

    o = django_filters.OrderingFilter(
        fields=(
            ('created', 'created'),
            ('modified', 'modified'),
            ('type', 'type'),
            ('key', 'key'),
            ('status', 'status'),
            ('priority', 'priority'),
            ('summary', 'summary'),
            ('customer__name', 'customer_name'),
            ('project__name', 'project_name'),
            ('caller__full_name', 'caller_full_name'),
            ('reporter__name', 'reporter_name'),
            ('assignee__name', 'assignee_name'),
        )
    )

    class Meta:
        model = models.Issue
        fields = [
            'key',
            'type',
            'status',
        ]
Example #17
0
class BaseOfferingFilter(django_filters.FilterSet):
    name = django_filters.CharFilter(lookup_expr='icontains')
    name_exact = django_filters.CharFilter(field_name='name')
    customer = core_filters.URLFilter(
        view_name='customer-detail', field_name='customer__uuid'
    )
    customer_uuid = django_filters.UUIDFilter(field_name='customer__uuid')
    project_uuid = django_filters.UUIDFilter(method='filter_project')
    allowed_customer_uuid = django_filters.UUIDFilter(
        field_name='customer__uuid', method='filter_allowed_customer'
    )
    attributes = django_filters.CharFilter(
        field_name='attributes', method='filter_attributes'
    )
    state = core_filters.MappedMultipleChoiceFilter(
        choices=[
            (representation, representation)
            for db_value, representation in models.Offering.States.CHOICES
        ],
        choice_mappings={
            representation: db_value
            for db_value, representation in models.Offering.States.CHOICES
        },
    )
    category_uuid = django_filters.UUIDFilter(field_name='category__uuid')
    billable = django_filters.BooleanFilter(widget=BooleanWidget)
    o = django_filters.OrderingFilter(fields=('name', 'created'))

    def filter_allowed_customer(self, queryset, name, value):
        return queryset.filter_for_customer(value)

    def filter_project(self, queryset, name, value):
        return queryset.filter_for_project(value)

    def filter_attributes(self, queryset, name, value):
        try:
            value = json.loads(value)
        except ValueError:
            raise rf_exceptions.ValidationError(
                _('Filter attribute is not valid json.')
            )

        if not isinstance(value, dict):
            raise rf_exceptions.ValidationError(
                _('Filter attribute should be an dict.')
            )

        for k, v in value.items():
            if isinstance(v, list):
                # If a filter value is a list, use multiple choice.
                queryset = queryset.filter(
                    **{'attributes__{key}__has_any_keys'.format(key=k): v}
                )
            else:
                queryset = queryset.filter(attributes__contains={k: v})
        return queryset
class SupersedeRelationshipFilter(django_filters.rest_framework.FilterSet):
    class Meta:
        model = MDR.SupersedeRelationship
        fields: dict = {}
        strict = django_filters.STRICTNESS.RAISE_VALIDATION_ERROR

    superseded_by = django_filters.UUIDFilter(name='newer_item__uuid',
                                              label="Superseded by")
    superseded_item = django_filters.UUIDFilter(name='older_item__uuid',
                                                label="Superseded by")
Example #19
0
class ProfileFilterSet(BaseAPIFilterSet):
    organization = django_filters.UUIDFilter(field_name='projects__project__tagged_items__tag_id', distinct=True,
                                             label='Associated with organization associated with at least one project '
                                                   'associated with profile')
    project = django_filters.UUIDFilter(field_name='projects__project', distinct=True,
                                        label='Associated with project')

    class Meta:
        model = Profile
        fields = ['organization', 'project', 'email']
Example #20
0
class AllocationUserUsageFilter(django_filters.FilterSet):
    allocation = core_filters.URLFilter(
        view_name='slurm-allocation-detail',
        field_name='allocation__uuid',
    )
    allocation_uuid = django_filters.UUIDFilter(field_name='allocation__uuid')

    user = core_filters.URLFilter(view_name='user-detail',
                                  field_name='user__uuid')
    user_uuid = django_filters.UUIDFilter(field_name='user__uuid')
Example #21
0
class SubNetFilter(structure_filters.BaseResourceFilter):
    tenant_uuid = django_filters.UUIDFilter(name='network__tenant__uuid')
    tenant = core_filters.URLFilter(view_name='openstack-tenant-detail',
                                    name='network__tenant__uuid')
    network_uuid = django_filters.UUIDFilter(name='network__uuid')
    network = core_filters.URLFilter(view_name='openstack-network-detail',
                                     name='network__uuid')

    class Meta(structure_filters.BaseResourceFilter.Meta):
        model = models.SubNet
Example #22
0
class CustomerPermissionReviewFilter(django_filters.FilterSet):
    customer_uuid = django_filters.UUIDFilter(field_name='customer__uuid')
    reviewer_uuid = django_filters.UUIDFilter(field_name='reviewer__uuid')
    o = django_filters.OrderingFilter(fields=('created', 'closed'))

    class Meta:
        model = models.CustomerPermissionReview
        fields = [
            'is_pending',
        ]
Example #23
0
class ProjectPermissionFilter(UserPermissionFilter):
    class Meta:
        fields = ['role']
        model = models.ProjectPermission

    customer = django_filters.UUIDFilter(field_name='project__customer__uuid',)
    project = django_filters.UUIDFilter(field_name='project__uuid',)
    project_url = core_filters.URLFilter(
        view_name='project-detail', field_name='project__uuid',
    )
Example #24
0
class AllocationUsageFilter(django_filters.FilterSet):
    user = core_filters.URLFilter(view_name='user-detail', name='user__uuid')
    user_uuid = django_filters.UUIDFilter(name='user__uuid')

    allocation = core_filters.URLFilter(view_name='slurm-allocation-detail',
                                        name='allocation__uuid')
    allocation_uuid = django_filters.UUIDFilter(name='allocation__uuid')

    class Meta(object):
        model = models.AllocationUsage
        fields = ('year', 'month')
Example #25
0
class ExpertBidFilter(django_filters.FilterSet):
    request = core_filters.URLFilter(view_name='expert-request-detail',
                                     name='request__uuid')
    request_uuid = django_filters.UUIDFilter(name='request__uuid')
    customer = core_filters.URLFilter(view_name='customer-detail',
                                      name='team__customer__uuid')
    customer_uuid = django_filters.UUIDFilter(name='team__customer__uuid')

    class Meta(object):
        model = models.ExpertBid
        fields = []
Example #26
0
class PortFilter(structure_filters.BaseResourceFilter):
    class Meta(structure_filters.BaseResourceFilter.Meta):
        model = models.Port

    vm = core_filters.URLFilter(view_name='opennebula-virtual-machine-detail',
                                field_name='vm__uuid')
    vm_uuid = django_filters.UUIDFilter(field_name='vm__uuid')

    network = core_filters.URLFilter(view_name='opennebula-network-detail',
                                     field_name='network__uuid')
    network_uuid = django_filters.UUIDFilter(field_name='network__uuid')
Example #27
0
class TemplateFilter(structure_filters.ServicePropertySettingsFilter):
    catalog_uuid = django_filters.UUIDFilter(field_name='catalog__uuid')
    cluster_uuid = django_filters.UUIDFilter(field_name='cluster__uuid')
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')

    class Meta:
        model = models.Template
        fields = structure_filters.ServicePropertySettingsFilter.Meta.fields + (
            'catalog_uuid',
            'cluster_uuid',
            'project_uuid',
        )
Example #28
0
class ItemFilter(django_filters.FilterSet):
    offering = core_filters.URLFilter(view_name='marketplace-offering-detail',
                                      name='offering__uuid')
    offering_uuid = django_filters.UUIDFilter(name='offering__uuid')

    order = core_filters.URLFilter(view_name='marketplace-order-detail',
                                   name='order__uuid')
    order_uuid = django_filters.UUIDFilter(name='order__uuid')

    class Meta(object):
        model = models.OrderItem
        fields = []
Example #29
0
class QueueFilter(django_filters.FilterSet):
    class Meta:
        model = Queue
        fields = ('name', 'creatorId', 'creatorUsername')

    id = django_filters.UUIDFilter(field_name='id', lookup_expr='exact')
    name = django_filters.CharFilter(field_name='name',
                                     lookup_expr='istartswith')
    creatorId = django_filters.UUIDFilter(field_name='creator__id',
                                          lookup_expr='exact')
    creatorUsername = django_filters.CharFilter(field_name='creator__username',
                                                lookup_expr='istartswith')
Example #30
0
class CartItemFilter(django_filters.FilterSet):
    customer = core_filters.URLFilter(view_name='customer-detail',
                                      field_name='project__customer__uuid')
    customer_uuid = django_filters.UUIDFilter(
        field_name='project__customer__uuid')
    project = core_filters.URLFilter(view_name='project-detail',
                                     field_name='project__uuid')
    project_uuid = django_filters.UUIDFilter(field_name='project__uuid')

    class Meta:
        model = models.CartItem
        fields = []