def get_queryset(self):
        request_user = self.request.user
        # Showing non-end dated, public ProviderMachines
        public_set = ProviderMachine.objects.filter(
            only_current_source(),
            only_public_providers(),
            application_version__application__private=False)
        if not isinstance(request_user, AnonymousUser):
            # Showing non-end dated, public ProviderMachines
            shared_set = ProviderMachine.objects.filter(
                only_current_source(),
                members__in=request_user.group_set.values('id'))
            # NOTE: Showing 'my pms' EVEN if they are end-dated.
            my_set = ProviderMachine.objects.filter(user_provider_machine_set(request_user))
            if request_user.is_staff:
                admin_set = get_admin_machines(request_user)
            else:
                admin_set = ProviderMachine.objects.none()
        else:
            shared_set = my_set = admin_set = ProviderMachine.objects.none()
        # Order them by date, make sure no dupes.
        queryset = (
            public_set | shared_set | my_set | admin_set).distinct().order_by(
            '-instance_source__start_date')

        if not isinstance(request_user, AnonymousUser):
            queryset = queryset.filter(in_provider_list(request_user.current_providers))
        return queryset
예제 #2
0
    def get_queryset(self):
        request_user = self.request.user
        # Showing non-end dated, public ProviderMachines
        public_set = ProviderMachine.objects.filter(
            only_current_source(),
            only_public_providers(),
            application_version__application__private=False)
        if not isinstance(request_user, AnonymousUser):
            # Showing non-end dated, public ProviderMachines
            shared_set = ProviderMachine.objects.filter(
                only_current_source(),
                members__id__in=request_user.memberships.values_list(
                    'group__id', flat=True))
            # NOTE: Showing 'my pms' EVEN if they are end-dated.
            my_set = ProviderMachine.objects.filter(
                user_provider_machine_set(request_user))
            if request_user.is_staff:
                admin_set = get_admin_machines(request_user)
            else:
                admin_set = ProviderMachine.objects.none()
        else:
            shared_set = my_set = admin_set = ProviderMachine.objects.none()
        # Order them by date, make sure no dupes.
        queryset = (
            public_set | shared_set | my_set
            | admin_set).distinct().order_by('-instance_source__start_date')

        if not isinstance(request_user, AnonymousUser):
            queryset = queryset.filter(
                in_provider_list(request_user.current_providers))
        return queryset
예제 #3
0
 def current_apps(cls, atmo_user=None):
     from core.models.user import AtmosphereUser
     public_images = Application.public_apps()
     if not atmo_user or isinstance(atmo_user, AnonymousUser):
         return public_images.distinct()
     if not isinstance(atmo_user, AtmosphereUser):
         raise Exception("Expected atmo_user to be of type AtmosphereUser"
                         " - Received %s" % type(atmo_user))
     user_images = atmo_user.application_set.all()
     shared_images = Application.shared_with(atmo_user)
     if atmo_user.is_staff:
         admin_images = Application.admin_apps(atmo_user)
     else:
         admin_images = Application.objects.none()
     all_the_images = (public_images | user_images |
             shared_images | admin_images).distinct().filter(
             in_provider_list(atmo_user.current_providers, key_override='versions__machines__instance_source__provider'))
     return all_the_images