~ubuntu-branches/ubuntu/utopic/horizon/utopic-updates

« back to all changes in this revision

Viewing changes to openstack_dashboard/dashboards/project/containers/tables.py

  • Committer: Package Import Robot
  • Author(s): James Page, Chris Johnston, James Page
  • Date: 2014-10-03 17:54:18 UTC
  • mfrom: (0.4.1) (1.1.44) (70.1.2 utopic)
  • Revision ID: package-import@ubuntu.com-20141003175418-1jomx0azdvnl5fxz
Tags: 1:2014.2~rc1-0ubuntu1
[ Chris Johnston ]
* d/theme/css/ubuntu.css: Fix Ubuntu theme for Instances "more" dropdown
  (LP: #1308651).

[ James Page ]
* New upstream release candidate:
  - d/p/*: Refresh.
* d/watch: Use tarballs.openstack.org for upstream releases. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#    under the License.
14
14
import logging
15
15
 
16
 
from django.core.urlresolvers import reverse
17
16
from django import shortcuts
18
17
from django import template
19
18
from django.template import defaultfilters as filters
20
19
from django.utils import http
21
20
from django.utils import safestring
22
21
from django.utils.translation import ugettext_lazy as _
 
22
from django.utils.translation import ungettext_lazy
23
23
 
24
24
from horizon import exceptions
25
25
from horizon import messages
26
26
from horizon import tables
 
27
from horizon.utils.urlresolvers import reverse  # noqa
27
28
 
28
29
from openstack_dashboard import api
29
30
from openstack_dashboard.api import swift
47
48
 
48
49
    def get_link_url(self, datum=None):
49
50
        obj_id = self.table.get_object_id(datum)
50
 
        args = (http.urlquote(obj_id),)
51
 
        return reverse(self.url, args=args)
 
51
        return reverse(self.url, args=(obj_id,))
52
52
 
53
53
 
54
54
class MakePublicContainer(tables.Action):
104
104
 
105
105
 
106
106
class DeleteContainer(tables.DeleteAction):
107
 
    data_type_singular = _("Container")
108
 
    data_type_plural = _("Containers")
 
107
    @staticmethod
 
108
    def action_present(count):
 
109
        return ungettext_lazy(
 
110
            u"Delete Container",
 
111
            u"Delete Containers",
 
112
            count
 
113
        )
 
114
 
 
115
    @staticmethod
 
116
    def action_past(count):
 
117
        return ungettext_lazy(
 
118
            u"Deleted Container",
 
119
            u"Deleted Containers",
 
120
            count
 
121
        )
 
122
 
109
123
    success_url = "horizon:project:containers:index"
110
124
 
111
125
    def delete(self, request, obj_id):
164
178
        else:
165
179
            container_name = self.table.kwargs['container_name']
166
180
        subfolders = self.table.kwargs.get('subfolder_path', '')
167
 
        args = (http.urlquote(bit) for bit in
168
 
                (container_name, subfolders) if bit)
 
181
        args = (bit for bit in (container_name, subfolders) if bit)
169
182
        return reverse(self.url, args=args)
170
183
 
171
184
    def allowed(self, request, datum=None):
190
203
        # Usable for both the container and object tables
191
204
        if getattr(datum, 'container', datum):
192
205
            # This is a container
193
 
            container_name = http.urlquote(datum.name)
 
206
            container_name = datum.name
194
207
        else:
195
208
            # This is a table action, and we already have the container name
196
209
            container_name = self.table.kwargs['container_name']
197
210
        subfolders = self.table.kwargs.get('subfolder_path', '')
198
 
        args = (http.urlquote(bit) for bit in
199
 
                (container_name, subfolders) if bit)
 
211
        args = (bit for bit in (container_name, subfolders) if bit)
200
212
        return reverse(self.url, args=args)
201
213
 
202
214
    def allowed(self, request, datum=None):
216
228
 
217
229
def get_container_link(container):
218
230
    return reverse("horizon:project:containers:index",
219
 
                   args=(http.urlquote(wrap_delimiter(container.name)),))
 
231
                   args=(wrap_delimiter(container.name),))
220
232
 
221
233
 
222
234
class ContainerAjaxUpdateRow(tables.Row):
298
310
 
299
311
    def get_link_url(self, obj):
300
312
        container_name = self.table.kwargs['container_name']
301
 
        return reverse(self.url, args=(http.urlquote(container_name),
302
 
                                       http.urlquote(obj.name)))
 
313
        return reverse(self.url, args=(container_name, obj.name))
303
314
 
304
315
 
305
316
class UpdateObject(tables.LinkAction):
312
323
 
313
324
    def get_link_url(self, obj):
314
325
        container_name = self.table.kwargs['container_name']
315
 
        return reverse(self.url, args=(http.urlquote(container_name),
316
 
                                       http.urlquote(obj.name)))
 
326
        return reverse(self.url, args=(container_name, obj.name))
317
327
 
318
328
 
319
329
class DeleteObject(tables.DeleteAction):
 
330
    @staticmethod
 
331
    def action_present(count):
 
332
        return ungettext_lazy(
 
333
            u"Delete Object",
 
334
            u"Delete Objects",
 
335
            count
 
336
        )
 
337
 
 
338
    @staticmethod
 
339
    def action_past(count):
 
340
        return ungettext_lazy(
 
341
            u"Deleted Object",
 
342
            u"Deleted Objects",
 
343
            count
 
344
        )
 
345
 
320
346
    name = "delete_object"
321
 
    data_type_singular = _("Object")
322
 
    data_type_plural = _("Objects")
323
347
    allowed_data_types = ("objects", "subfolders",)
324
348
 
325
349
    def delete(self, request, obj_id):
349
373
 
350
374
    def get_link_url(self, obj):
351
375
        container_name = self.table.kwargs['container_name']
352
 
        return reverse(self.url, args=(http.urlquote(container_name),
353
 
                                       http.urlquote(obj.name)))
 
376
        return reverse(self.url, args=(container_name, obj.name))
354
377
 
355
378
 
356
379
class DownloadObject(tables.LinkAction):
362
385
 
363
386
    def get_link_url(self, obj):
364
387
        container_name = self.table.kwargs['container_name']
365
 
        return reverse(self.url, args=(http.urlquote(container_name),
366
 
                                       http.urlquote(obj.name)))
 
388
        return reverse(self.url, args=(container_name, obj.name))
367
389
 
368
390
    def allowed(self, request, object):
369
391
        return object.bytes and object.bytes > 0
410
432
def get_link_subfolder(subfolder):
411
433
    container_name = subfolder.container_name
412
434
    return reverse("horizon:project:containers:index",
413
 
                   args=(http.urlquote(wrap_delimiter(container_name)),
414
 
                         http.urlquote(wrap_delimiter(subfolder.name))))
 
435
                   args=(wrap_delimiter(container_name),
 
436
                         wrap_delimiter(subfolder.name)))
415
437
 
416
438
 
417
439
class ObjectsTable(tables.DataTable):