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)
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')
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'), )
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__'
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 = []
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')
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')
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']
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)
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
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
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 = []
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 = ()
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')
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 = []
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', ]
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")
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']
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')
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
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', ]
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', )
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')
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 = []
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')
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', )
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 = []
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')
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 = []