def warn_about_low_disk_space(request): """Warn about insufficient space on root partition.""" if not is_user_admin(request, cached=True): return disks = storage.get_disks() list_root = [disk for disk in disks if disk['mountpoint'] == '/'] if not list_root: logger.error('Error getting information about root partition.') return percent_used = list_root[0]['percent_used'] size_bytes = list_root[0]['size'] free_bytes = list_root[0]['free'] free_gib = free_bytes / (1024**3) message = format_lazy( # Translators: xgettext:no-python-format _('Warning: Low space on system partition ({percent_used}% used, ' '{free_space} free).'), percent_used=percent_used, free_space=storage.format_bytes(free_bytes)) if percent_used > 90 or free_gib < 1: messages.error(request, message) elif percent_used > 75 or free_gib < 2: messages.warning(request, message)
def warn_about_low_disk_space(request): """Warn about insufficient space on root partition.""" if not is_user_admin(request, cached=True): return disks = storage.get_disks() list_root = [disk for disk in disks if disk['mountpoint'] == '/'] if not list_root: logger.error('Error getting information about root partition.') return percent_used = list_root[0]['percent_used'] size_bytes = list_root[0]['size'] free_bytes = list_root[0]['free'] free_gib = free_bytes / (1024 ** 3) message = format_lazy( # Translators: xgettext:no-python-format _('Warning: Low space on system partition ({percent_used}% used, ' '{free_space} free).'), percent_used=percent_used, free_space=storage.format_bytes(free_bytes)) if percent_used > 90 or free_gib < 1: messages.error(request, message) elif percent_used > 75 or free_gib < 2: messages.warning(request, message)
def get_context_data(self, *args, **kwargs): """Return template context data.""" context = super().get_context_data(*args, **kwargs) disks = storage.get_disks() root_device = storage.get_root_device(disks) expandable_root_size = storage.is_expandable(root_device) expandable_root_size = storage.format_bytes(expandable_root_size) context['disks'] = disks context['expandable_root_size'] = expandable_root_size return context
def index(request): """Show connection list.""" disks = storage.get_disks() root_device = storage.get_root_device(disks) expandable_root_size = storage.is_expandable(root_device) expandable_root_size = storage.format_bytes(expandable_root_size) warn_about_low_disk_space(request) return TemplateResponse(request, 'storage.html', {'title': _('Storage'), 'disks': disks, 'expandable_root_size': expandable_root_size})
def expand(request): """Warn and expand the root partition.""" disks = storage.get_disks() root_device = storage.get_root_device(disks) if request.method == 'POST': expand_partition(request, root_device) return redirect(reverse('storage:index')) expandable_root_size = storage.is_expandable(root_device) expandable_root_size = storage.format_bytes(expandable_root_size) return TemplateResponse(request, 'storage_expand.html', {'title': _('Expand Root Partition'), 'expandable_root_size': expandable_root_size})
def index(request): """Show connection list.""" disks = storage.get_disks() root_device = storage.get_root_device(disks) expandable_root_size = storage.is_expandable(root_device) expandable_root_size = storage.format_bytes(expandable_root_size) warn_about_low_disk_space(request) return TemplateResponse( request, 'storage.html', { 'title': _('Storage'), 'disks': disks, 'expandable_root_size': expandable_root_size })
def expand(request): """Warn and expand the root partition.""" disks = storage.get_disks() root_device = storage.get_root_device(disks) if request.method == 'POST': expand_partition(request, root_device) return redirect(reverse('storage:index')) expandable_root_size = storage.is_expandable(root_device) expandable_root_size = storage.format_bytes(expandable_root_size) return TemplateResponse( request, 'storage_expand.html', { 'title': _('Expand Root Partition'), 'expandable_root_size': expandable_root_size })
def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" context = super().get_context_data(**kwargs) context['title'] = _('Upload and restore a backup') try: mount_info = storage.get_mount_info('/') except PlinthError as exception: logger.exception( 'Error getting information about root partition: %s', exception) else: # The maximum file size that can be uploaded and restored is at # most half of the available disk space: # - Django stores uploaded files that do not fit into memory to # disk (/tmp/). These are only copied by form_valid() after # the upload is finished. # - For restoring it's highly advisable to have at least as much # free disk space as the file size. context['max_filesize'] = storage.format_bytes( mount_info['free_bytes'] / 2) return context