manager: load (ajax) assets size on export site popup (#45466)

This commit is contained in:
Nicolas Roche 2020-09-21 11:28:52 +02:00
parent f8ee44c3f5
commit d62592c745
6 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1 @@
({{ size|filesizeformat }})

View File

@ -40,4 +40,6 @@ urlpatterns = [
url(r'^api/assets/set/(?P<key>[\w_:-]+)/$', api_views.view_set,
name='api-assets-set'),
url(r'^ajax/assets-export-size/$',
views.assets_export_size, name='combo-manager-assets-export-size'),
]

View File

@ -377,3 +377,19 @@ def serve_asset(request, key):
# get or create thumbnail and return url
return redirect(get_thumbnail(asset.asset, geometry_string, **thumb_options).url)
class AssetsExportSize(TemplateView):
template_name = 'combo/manager_assets_export_size.html'
def get_context_data(self, **kwargs):
context = super(AssetsExportSize, self).get_context_data(**kwargs)
media_prefix = default_storage.path('')
computed_size = 0
for basedir, dirnames, filenames in os.walk(media_prefix):
for filename in filenames:
computed_size += os.stat(os.path.join(basedir, filename)).st_size
context['size'] = computed_size
return context
assets_export_size = AssetsExportSize.as_view()

View File

@ -396,6 +396,11 @@ div#asset-preview img {
max-width: 100%;
}
.asset-export-size {
padding-left: 1em;
font-size: 90%;
}
ul.multisort {
list-style: none;
padding: 0;

View File

@ -13,5 +13,10 @@
<button>{% trans 'Export' %}</button>
<a class="cancel" href="{% url 'combo-manager-homepage' %}">{% trans 'Cancel' %}</a>
</div>
<script>
$.get("{% url 'combo-manager-assets-export-size' %}", function( data ) {
$('<span></span>', {'text': data, 'class': 'asset-export-size'}).appendTo($('label[for=id_include_asset]'));
}, 'text' );
</script>
</form>
{% endblock %}

View File

@ -138,3 +138,8 @@ def test_import_export_assets(some_assets, tmpdir):
clean_assets_files()
assert count_asset_files() == 0
clean_assets_files()
def test_assets_export_size_view(app, some_assets):
resp = app.get(reverse('combo-manager-assets-export-size'))
assert resp.text.split() == ['(9', 'bytes)']