~ubuntu-branches/ubuntu/precise/horizon/precise-updates

« back to all changes in this revision

Viewing changes to horizon/horizon/usage/views.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-03-02 12:11:59 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20120302121159-65b88lcl4slve26i
Tags: 2012.1~e4-0ubuntu1
* New upstream version.
* debian/rules: Update due to upstream build changes.
* debian/control: Update standards-version.
* debian/patches/openstack-config-settings.patch: Dropped
* debian/patches/fix-dashboard-django-wsgi.patch: Refreshed
* debian/patches/fix-dashboard-manage.patch: Refreshed
* debian/openstack-dashboard.install: Update due to upstream build changes.
* debian/dashboard: Update to upstream build changes.
* debian/pydist-overrides: Dont try to install python-django-nose-selenium.
* debian/openstack-dashboard.install: Add missing config files.
* debian/rules: Fix broken settings.py
* debian/patches/pkg-setup.patch: Copy missing templates, shameously
  taken from debian
* debian/patches/fix-broken-tarbll.patch: Add missing files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import logging
2
 
 
3
 
from horizon import tables
4
 
from .base import BaseUsage
5
 
 
6
 
 
7
 
LOG = logging.getLogger(__name__)
8
 
 
9
 
 
10
 
class UsageView(tables.DataTableView):
11
 
    usage_class = None
12
 
    show_terminated = True
13
 
 
14
 
    def __init__(self, *args, **kwargs):
15
 
        super(UsageView, self).__init__(*args, **kwargs)
16
 
        if not issubclass(self.usage_class, BaseUsage):
17
 
            raise AttributeError("You must specify a usage_class attribute "
18
 
                                 "which is a subclass of BaseUsage.")
19
 
 
20
 
    def get_template_names(self):
21
 
        if self.request.GET.get('format', 'html') == 'csv':
22
 
            return ".".join((self.template_name.rsplit('.', 1)[0], 'csv'))
23
 
        return self.template_name
24
 
 
25
 
    def get_content_type(self):
26
 
        if self.request.GET.get('format', 'html') == 'csv':
27
 
            return "text/csv"
28
 
        return "text/html"
29
 
 
30
 
    def get_data(self):
31
 
        tenant_id = self.kwargs.get('tenant_id', self.request.user.tenant_id)
32
 
        self.usage = self.usage_class(self.request, tenant_id)
33
 
        self.usage.summarize(*self.usage.get_date_range())
34
 
        self.kwargs['usage'] = self.usage
35
 
        return self.usage.usage_list
36
 
 
37
 
    def get_context_data(self, **kwargs):
38
 
        context = super(UsageView, self).get_context_data(**kwargs)
39
 
        context['table'].kwargs['usage'] = self.usage
40
 
        context['form'] = self.usage.form
41
 
        context['usage'] = self.usage
42
 
        return context
43
 
 
44
 
    def render_to_response(self, context, **response_kwargs):
45
 
        resp = self.response_class(request=self.request,
46
 
                                   template=self.get_template_names(),
47
 
                                   context=context,
48
 
                                   content_type=self.get_content_type(),
49
 
                                   **response_kwargs)
50
 
        if self.request.GET.get('format', 'html') == 'csv':
51
 
            resp['Content-Disposition'] = 'attachment; filename=usage.csv'
52
 
            resp['Content-Type'] = 'text/csv'
53
 
        return resp