コード例 #1
0
    def __init__(self, request, name, data, many=False):
        super(ImageStoreView, self).__init__(request)
        self.data = data
        self.name = name
        self.many = many
        repositories = ImageStore.get_repositories()

        if name:
            assert not many
            try:
                self.repo = ImageStore(name, url=repositories[name])
            except KeyError:  # The name is not in VMS_IMAGE_REPOSITORIES
                raise ObjectNotFound(model=ImageStore)
        else:
            assert many
            if request.method == 'PUT' or (self.full or self.extended):
                self.repo = ImageStore.all(repositories)
            else:
                self.repo = repositories.keys()
コード例 #2
0
def imagestore_list(request, repo=None):
    user = request.user
    context = collect_view_data(request, 'dc_image_list')
    context['image_vm'] = ImageVm.get_uuid()
    context['is_staff'] = is_staff = user.is_staff
    context['all'] = _all = is_staff and request.GET.get('all', False)
    context['qs'] = qs = get_query_string(request, all=_all).urlencode()
    context['url_form_admin'] = reverse('admin_image_form', query_string=qs)
    context['form_admin'] = AdminImageForm(request,
                                           None,
                                           prefix='adm',
                                           initial={
                                               'owner': user.username,
                                               'access': Image.PRIVATE,
                                               'dc_bound': True
                                           })
    qs_image_filter = request.GET.copy()
    qs_image_filter.pop('created_since', None)
    qs_image_filter.pop('last', None)
    context['qs_image_filter'] = qs_image_filter.urlencode()
    context['default_limit'] = default_limit = 30
    context['image_uuids'] = set(Image.objects.all().values_list('uuid',
                                                                 flat=True))

    try:
        created_since_days = int(request.GET.get('created_since', 0))
    except (ValueError, TypeError):
        created_since_days = None

    if created_since_days:
        limit = None
    else:
        created_since_days = None

        try:
            limit = int(request.GET.get('last', default_limit))
        except (ValueError, TypeError):
            limit = default_limit

    repositories = ImageStore.get_repositories(
        include_image_vm=request.user.is_staff)
    context['imagestores'] = imagestores = ImageStore.all(repositories)
    context['created_since'] = created_since_days
    context['limit'] = limit

    if repositories:
        if repo and repo in repositories:
            context['imagestore'] = imagestore = ImageStore(
                repo, url=repositories[repo])
        else:  # Choose the first one
            context['imagestore'] = imagestore = imagestores[0]

        if created_since_days:
            created_since = make_aware(datetime.now() -
                                       timedelta(days=created_since_days))
        else:
            created_since = None

        context['images'] = imagestore.images_filter(
            created_since=created_since, limit=limit)
    else:
        context['imagestore'] = None
        context['images'] = []

    return render(request, 'gui/dc/imagestore_list.html', context)