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 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 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 OrderItemFilter(django_filters.FilterSet): offering = core_filters.URLFilter(view_name='marketplace-offering-detail', name='offering__uuid') offering_uuid = django_filters.UUIDFilter(name='offering__uuid') project_uuid = django_filters.UUIDFilter(name='order__project__uuid') category_uuid = django_filters.UUIDFilter(name='offering__category__uuid') provider_uuid = django_filters.UUIDFilter(name='offering__customer__uuid') customer_uuid = django_filters.UUIDFilter( name='order__project__customer__uuid') state = core_filters.MappedMultipleChoiceFilter( choices=[ (representation, representation) for db_value, representation in models.OrderItem.States.CHOICES ], choice_mappings={ representation: db_value for db_value, representation in models.OrderItem.States.CHOICES }, ) 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 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 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 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 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 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 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 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 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 BackupFilter(structure_filters.BaseResourceFilter): instance = core_filters.URLFilter( view_name='openstacktenant-instance-detail', name='instance__uuid') instance_uuid = django_filters.UUIDFilter(name='instance__uuid') backup_schedule = core_filters.URLFilter( view_name='openstacktenant-backup-schedule-detail', name='backup_schedule__uuid') backup_schedule_uuid = django_filters.UUIDFilter( name='backup_schedule__uuid') class Meta(structure_filters.BaseResourceFilter.Meta): model = models.Backup
class VolumeFilter(structure_filters.BaseResourceFilter): instance = core_filters.URLFilter( view_name='openstacktenant-instance-detail', field_name='instance__uuid' ) instance_uuid = django_filters.UUIDFilter(field_name='instance__uuid') snapshot = core_filters.URLFilter( view_name='openstacktenant-snapshot-detail', field_name='restoration__snapshot__uuid', ) snapshot_uuid = django_filters.UUIDFilter(field_name='restoration__snapshot__uuid') availability_zone_name = django_filters.CharFilter( field_name='availability_zone__name' ) attach_instance_uuid = django_filters.UUIDFilter(method='filter_attach_instance') def filter_attach_instance(self, queryset, name, value): """ This filter is used by volume attachment dialog for instance. It allows to filter out volumes that could be attached to the given instance. """ try: instance = models.Instance.objects.get(uuid=value) except models.Volume.DoesNotExist: return queryset.none() queryset = queryset.filter( service_settings=instance.service_settings, project=instance.project, ).exclude(instance=instance) zones_map = get_valid_availability_zones(instance) if instance.availability_zone and zones_map: zone_names = { nova_zone for (nova_zone, cinder_zone) in zones_map.items() if cinder_zone == instance.availability_zone.name } nova_zones = models.InstanceAvailabilityZone.objects.filter( settings=instance.service_settings, name__in=zone_names, available=True, ) queryset = queryset.filter(availability_zone__in=nova_zones) return queryset class Meta(structure_filters.BaseResourceFilter.Meta): model = models.Volume fields = structure_filters.BaseResourceFilter.Meta.fields + ('runtime_state',) ORDERING_FIELDS = structure_filters.BaseResourceFilter.ORDERING_FIELDS + ( ('instance__name', 'instance_name'), ('size', 'size'), )
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 = []
class ResourceCreateRequestFilter(django_filters.FilterSet): state = ReviewStateFilter() offering = core_filters.URLFilter( view_name='marketplace-offering-detail', field_name='offering__uuid', ) offering_uuid = django_filters.UUIDFilter(field_name='offering__uuid') service_provider = core_filters.URLFilter( view_name='customer-detail', field_name='offering__customer__uuid', ) service_provider_uuid = django_filters.UUIDFilter( field_name='offering__customer__uuid')
class PackageTemplateFilter(django_filters.FilterSet): name = django_filters.CharFilter(lookup_expr='icontains') service_settings = core_filters.URLFilter( view_name='servicesettings-detail', name='service_settings__uuid') service_settings_uuid = django_filters.UUIDFilter(name='service_settings__uuid') openstack_package_service_settings = core_filters.URLFilter( view_name='servicesettings-detail', name='openstack_packages__service_settings__uuid') openstack_package_service_settings_uuid = django_filters.UUIDFilter( name='openstack_packages__service_settings__uuid') class Meta(object): model = models.PackageTemplate fields = ['archived']
class DeploymentPlanFilter(django_filters.FilterSet): project = core_filters.URLFilter(view_name='project-detail', name='project__uuid') project_uuid = django_filters.UUIDFilter(name='project__uuid') customer = core_filters.URLFilter(view_name='customer-detail', name='project__customer__uuid') customer_uuid = django_filters.UUIDFilter(name='project__customer__uuid') o = django_filters.OrderingFilter(fields=('name', 'created')) class Meta(object): model = models.DeploymentPlan fields = ('project', 'project_uuid', 'customer', 'customer_uuid')
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( method='filter_by_full_name', label='Caller full name contains') 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') def filter_by_full_name(self, queryset, name, value): return core_filters.filter_by_full_name(queryset, value, 'caller') o = KeyOrderingFilter(fields=( ('created', 'created'), ('modified', 'modified'), ('type', 'type'), ('status', 'status'), ('priority', 'priority'), ('summary', 'summary'), ('customer__name', 'customer_name'), ('project__name', 'project_name'), ('caller__first_name', 'caller_first_name'), ('caller__last_name', 'caller_last_name'), ('reporter__name', 'reporter_name'), ('assignee__name', 'assignee_name'), )) class Meta: model = models.Issue fields = [ 'key', 'type', 'status', ]
class OfferingFilter(django_filters.FilterSet): name = django_filters.CharFilter(lookup_expr='icontains') description = django_filters.CharFilter(lookup_expr='icontains') type = django_filters.ModelMultipleChoiceFilter( queryset=models.OfferingTemplate.objects.all(), to_field_name='name', method='offering_template_filter', ) template = django_filters.ModelMultipleChoiceFilter( queryset=models.OfferingTemplate.objects.all(), ) issue = core_filters.URLFilter( view_name='support-issue-detail', field_name='issue__uuid' ) issue_uuid = django_filters.UUIDFilter(field_name='issue__uuid') issue_key = django_filters.CharFilter(field_name='issue__key') 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.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')) def offering_template_filter(self, queryset, name, value): if value: return queryset.filter(template__in=value) return queryset class Meta: model = models.Offering fields = ( 'name', 'description', 'template', 'issue', 'issue_uuid', 'project', 'project_uuid', 'state', )
class OrderItemFilter(OfferingFilterMixin, django_filters.FilterSet): project_uuid = django_filters.UUIDFilter(field_name='order__project__uuid') category_uuid = django_filters.UUIDFilter( field_name='offering__category__uuid') provider_uuid = django_filters.UUIDFilter( field_name='offering__customer__uuid') customer_uuid = django_filters.UUIDFilter( field_name='order__project__customer__uuid') service_manager_uuid = django_filters.UUIDFilter( method='filter_service_manager') state = core_filters.MappedMultipleChoiceFilter( choices=[ (representation, representation) for db_value, representation in models.OrderItem.States.CHOICES ], choice_mappings={ representation: db_value for db_value, representation in models.OrderItem.States.CHOICES }, ) type = core_filters.MappedMultipleChoiceFilter( choices=[(representation, representation) for db_value, representation in models.OrderItem.Types.CHOICES ], choice_mappings={ representation: db_value for db_value, representation in models.OrderItem.Types.CHOICES }, ) order = core_filters.URLFilter(view_name='marketplace-order-detail', field_name='order__uuid') order_uuid = django_filters.UUIDFilter(field_name='order__uuid') resource = core_filters.URLFilter(view_name='marketplace-resource-detail', field_name='resource__uuid') resource_uuid = django_filters.UUIDFilter(field_name='resource__uuid') o = django_filters.OrderingFilter(fields=('created', )) class Meta: model = models.OrderItem fields = [] def filter_service_manager(self, queryset, name, value): return queryset.filter( offering__shared=True, offering__permissions__user__uuid=value, offering__permissions__is_active=True, )
class IssueFilter(django_filters.FilterSet): created_before = django_filters.IsoDateTimeFilter(field_name="created", lookup_expr="lte") created_after = django_filters.IsoDateTimeFilter(field_name="created", lookup_expr="gte") summary = django_filters.CharFilter(lookup_expr='icontains') description = django_filters.CharFilter(lookup_expr='icontains') jira_project = core_filters.URLFilter(view_name='project-detail', field_name='project__uuid') jira_project_uuid = django_filters.UUIDFilter(field_name='project__uuid') priority_name = django_filters.ModelMultipleChoiceFilter( field_name='priority__name', to_field_name='name', queryset=models.Priority.objects.all() ) project = core_filters.URLFilter(view_name='project-detail', field_name='project__service_project_link__project__uuid') project_uuid = django_filters.UUIDFilter(field_name='project__service_project_link__project__uuid') type_name = django_filters.CharFilter(field_name='type__name') updated_before = django_filters.IsoDateTimeFilter(field_name="updated", lookup_expr="lte") updated_after = django_filters.IsoDateTimeFilter(field_name="updated", lookup_expr="gte") user_uuid = django_filters.UUIDFilter(field_name='user__uuid') key = django_filters.CharFilter(field_name='backend_id') status = core_filters.LooseMultipleChoiceFilter() sla_ttr_breached = django_filters.BooleanFilter(field_name='resolution_sla', method='filter_resolution_sla', widget=django_filters.widgets.BooleanWidget()) def filter_resolution_sla(self, queryset, name, value): if value: return queryset.exclude(Q(resolution_sla__gte=0) | Q(resolution_sla__isnull=True)) else: return queryset.filter(resolution_sla__gte=0) class Meta: model = models.Issue fields = [ 'description', 'key', 'status', 'summary', 'user_uuid', 'creator_name', 'assignee_name', 'reporter_name', ] order_by = [ 'created', 'updated', # desc '-created', '-updated', ]
class SQLDatabaseFilter(BaseResourceGroupFilter): class Meta(BaseResourceGroupFilter.Meta): model = models.SQLDatabase server = core_filters.URLFilter(view_name='azure-server-detail', field_name='server__uuid') server_uuid = django_filters.UUIDFilter(field_name='server__uuid')
class InvitationCustomerFilterBackend(DjangoFilterBackend): url_filter = core_filters.URLFilter( view_name='customer-detail', name='customer__uuid', ) def filter_queryset(self, request, queryset, view): customer_uuid = self.extract_customer_uuid(request) if not customer_uuid: return queryset try: uuid.UUID(customer_uuid) except ValueError: return queryset.none() query = Q(customer__uuid=customer_uuid) query |= Q(project__customer__uuid=customer_uuid) return queryset.filter(query) def extract_customer_uuid(self, request): if 'customer_url' in request.query_params: return self.url_filter.get_uuid(request.query_params['customer_url']) if 'customer' in request.query_params: return request.query_params['customer']
class OpenStackServiceProjectLinkFilter( structure_filters.BaseServiceProjectLinkFilter): service = core_filters.URLFilter(view_name='openstack-detail', name='service__uuid') class Meta(structure_filters.BaseServiceProjectLinkFilter.Meta): model = models.OpenStackServiceProjectLink
class SecurityGroupFilter(structure_filters.BaseResourceFilter): tenant_uuid = django_filters.UUIDFilter(name='tenant__uuid') tenant = core_filters.URLFilter(view_name='openstack-tenant-detail', name='tenant__uuid') class Meta(structure_filters.BaseResourceFilter.Meta): model = models.SecurityGroup
class NetworkFilter(structure_filters.BaseResourceFilter): tenant_uuid = django_filters.UUIDFilter(field_name='tenant__uuid') tenant = core_filters.URLFilter(view_name='openstack-tenant-detail', field_name='tenant__uuid') class Meta(structure_filters.BaseResourceFilter.Meta): model = models.Network
class AttachmentFilter(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') class Meta: model = models.Attachment fields = []
class UserPermissionFilter(django_filters.FilterSet): user = django_filters.UUIDFilter(field_name='user__uuid') user_url = core_filters.URLFilter( view_name='user-detail', field_name='user__uuid', ) username = django_filters.CharFilter( field_name='user__username', lookup_expr='exact', ) full_name = django_filters.CharFilter(method='filter_by_full_name', label='User full name contains') native_name = django_filters.CharFilter( field_name='user__native_name', lookup_expr='icontains', ) def filter_by_full_name(self, queryset, name, value): return core_filters.filter_by_full_name(queryset, value, 'user') o = core_filters.ExtendedOrderingFilter(fields=( ('user__username', 'username'), (('user__first_name', 'user__last_name'), 'full_name'), ('user__native_name', 'native_name'), ('user__email', 'email'), ('expiration_time', 'expiration_time'), ('created', 'created'), ('role', 'role'), ))