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()
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)