Projet

Général

Profil

0001-manager-load-ajax-assets-size-on-export-site-popup-4.patch

Nicolas Roche, 07 octobre 2020 20:41

Télécharger (4,13 ko)

Voir les différences:

Subject: [PATCH] manager: load (ajax) assets size on export site popup
 (#45466)

 .../combo/manager_assets_export_size.html        |  1 +
 combo/apps/assets/urls.py                        |  2 ++
 combo/apps/assets/views.py                       | 16 ++++++++++++++++
 combo/manager/templates/combo/site_export.html   |  5 +++++
 tests/test_assets.py                             |  5 +++++
 5 files changed, 29 insertions(+)
 create mode 100644 combo/apps/assets/templates/combo/manager_assets_export_size.html
combo/apps/assets/templates/combo/manager_assets_export_size.html
1
({{ size|filesizeformat }})
combo/apps/assets/urls.py
35 35

  
36 36
urlpatterns = [
37 37
    url(r'^assets/(?P<key>[\w_:-]+)$', views.serve_asset),
38 38
    url(r'^manage/assets/', decorated_includes(manager_required,
39 39
        include(assets_manager_urls))),
40 40

  
41 41
    url(r'^api/assets/set/(?P<key>[\w_:-]+)/$', api_views.view_set,
42 42
        name='api-assets-set'),
43
    url(r'^ajax/assets-export-size/$',
44
        views.assets_export_size, name='combo-manager-assets-export-size'),
43 45
]
combo/apps/assets/views.py
372 372
        geometry_string += 'x%s' % height
373 373

  
374 374
    # no thumbnail whithout geometry_string or for a svg file
375 375
    if not geometry_string or asset.asset.name.endswith('svg'):
376 376
        return redirect(asset.asset.url)
377 377

  
378 378
    # get or create thumbnail and return url
379 379
    return redirect(get_thumbnail(asset.asset, geometry_string, **thumb_options).url)
380

  
381

  
382
class AssetsExportSize(TemplateView):
383
    template_name = 'combo/manager_assets_export_size.html'
384

  
385
    def get_context_data(self, **kwargs):
386
        context = super(AssetsExportSize, self).get_context_data(**kwargs)
387
        media_prefix = default_storage.path('')
388
        computed_size = 0
389
        for basedir, dirnames, filenames in os.walk(media_prefix):
390
            for filename in filenames:
391
                computed_size += os.stat(os.path.join(basedir, filename)).st_size
392
        context['size'] = computed_size
393
        return context
394

  
395
assets_export_size = AssetsExportSize.as_view()
combo/manager/templates/combo/site_export.html
8 8
{% block content %}
9 9
<form method="post">
10 10
  {% csrf_token %}
11 11
  {{ form.as_p }}
12 12
  <div class="buttons">
13 13
    <button>{% trans 'Export' %}</button>
14 14
    <a class="cancel" href="{% url 'combo-manager-homepage' %}">{% trans 'Cancel' %}</a>
15 15
  </div>
16
  <script>
17
    $.get("{% url 'combo-manager-assets-export-size' %}", function( data ) {
18
      $("p").append("<span>" + data + "</span>")
19
    }, "text" );
20
  </script>
16 21
</form>
17 22
{% endblock %}
tests/test_assets.py
133 133
    fd = open(filename, 'rb')
134 134
    import_assets(fd, overwrite=True)
135 135
    assert count_asset_files() == 2
136 136
    assert open('%s/assets/test.png' % path, 'r').read() == 'test'
137 137
    assert open('%s/assets/test2.png' % path, 'r').read() == 'test2'
138 138
    clean_assets_files()
139 139
    assert count_asset_files() == 0
140 140
    clean_assets_files()
141

  
142

  
143
def test_assets_export_size_view(app, some_assets):
144
    resp = app.get(reverse('combo-manager-assets-export-size'))
145
    assert resp.text.split() == ['(9', 'bytes)']
141
-