Statistics
| Branch: | Tag: | Revision:

root / snf-common / synnefo / lib / context_processors.py @ 5f6ad491

History | View | Annotate | Download (2.3 kB)

1 9af7206b Kostas Papadimitriou
from django.utils.safestring import mark_safe
2 9af7206b Kostas Papadimitriou
from django.conf import settings
3 9af7206b Kostas Papadimitriou
4 9af7206b Kostas Papadimitriou
def cloudbar(request):
5 9af7206b Kostas Papadimitriou
    """
6 9af7206b Kostas Papadimitriou
    Django context processor that applies all cloudbar settings in response
7 9af7206b Kostas Papadimitriou
    context plus a ready to use pre rendered script html tag containing valid
8 9af7206b Kostas Papadimitriou
    javascript code for cloudbar to display.
9 9af7206b Kostas Papadimitriou

10 9af7206b Kostas Papadimitriou
    To use it add ``synnefo.lib.context_processors.cloudbar`` in your project's
11 9af7206b Kostas Papadimitriou
    ``TEMPLATE_CONTEXT_PROCESSORS setting`` (snf-webproject already does).
12 9af7206b Kostas Papadimitriou

13 9af7206b Kostas Papadimitriou
    Then in your base html template::
14 9af7206b Kostas Papadimitriou

15 9af7206b Kostas Papadimitriou
        <html>
16 9af7206b Kostas Papadimitriou
        ....
17 9af7206b Kostas Papadimitriou
        <head>
18 9af7206b Kostas Papadimitriou
        ...
19 9af7206b Kostas Papadimitriou
        {% if CLOUDBAR_ACTIVE %}
20 9af7206b Kostas Papadimitriou
            {{ CLOUDBAR_CODE }}
21 9af7206b Kostas Papadimitriou
        {% endif %}
22 9af7206b Kostas Papadimitriou
        </head>
23 9af7206b Kostas Papadimitriou
        <body>
24 9af7206b Kostas Papadimitriou
        ....
25 9af7206b Kostas Papadimitriou
        </body>
26 9af7206b Kostas Papadimitriou
        </html>
27 9af7206b Kostas Papadimitriou

28 9af7206b Kostas Papadimitriou

29 9af7206b Kostas Papadimitriou
    """
30 9af7206b Kostas Papadimitriou
31 9af7206b Kostas Papadimitriou
    CB_ACTIVE = getattr(settings, 'CLOUDBAR_ACTIVE', True)
32 9af7206b Kostas Papadimitriou
    CB_LOCATION = getattr(settings, 'CLOUDBAR_LOCATION',
33 9af7206b Kostas Papadimitriou
            'https://accounts.okeanos.grnet.gr/static/im/cloudbar/')
34 9af7206b Kostas Papadimitriou
    CB_COOKIE_NAME = getattr(settings, 'CLOUDBAR_COOKIE_NAME',
35 9af7206b Kostas Papadimitriou
            'okeanos_account')
36 9af7206b Kostas Papadimitriou
    CB_ACTIVE_SERVICE = getattr(settings, 'CLOUDBAR_ACTIVE_SERVICE',
37 9af7206b Kostas Papadimitriou
            'cloud')
38 9af7206b Kostas Papadimitriou
    CB_SERVICES_URL = getattr(settings, 'CLOUDBAR_SERVICES_URL',
39 9af7206b Kostas Papadimitriou
            'https://accounts.okeanos.grnet.gr/im/get_services')
40 9af7206b Kostas Papadimitriou
    CB_MENU_URL = getattr(settings, 'CLOUDBAR_MENU_URL',
41 9af7206b Kostas Papadimitriou
            'https://accounts.okeanos.grnet.gr/im/get_menu')
42 9af7206b Kostas Papadimitriou
43 9af7206b Kostas Papadimitriou
    CB_CODE = """
44 9af7206b Kostas Papadimitriou
    <script type="text/javascript">
45 9af7206b Kostas Papadimitriou
        var CLOUDBAR_LOCATION = "%(location)s";
46 9af7206b Kostas Papadimitriou
        var CLOUDBAR_COOKIE_NAME = "%(cookie_name)s";
47 9af7206b Kostas Papadimitriou
        var CLOUDBAR_ACTIVE_SERVICE = "%(active_service)s";
48 9af7206b Kostas Papadimitriou
        var GET_SERVICES_URL = "%(services_url)s";
49 9af7206b Kostas Papadimitriou
        var GET_MENU_URL = "%(menu_url)s";
50 9af7206b Kostas Papadimitriou

51 9af7206b Kostas Papadimitriou
        $(document).ready(function(){
52 9af7206b Kostas Papadimitriou
            $.getScript(CLOUDBAR_LOCATION + 'cloudbar.js');
53 9af7206b Kostas Papadimitriou
        })
54 9af7206b Kostas Papadimitriou
    </script>
55 9af7206b Kostas Papadimitriou
""" % {'location': CB_LOCATION,
56 9af7206b Kostas Papadimitriou
       'active_service': CB_ACTIVE_SERVICE,
57 9af7206b Kostas Papadimitriou
       'cookie_name': CB_COOKIE_NAME,
58 9af7206b Kostas Papadimitriou
       'services_url': CB_SERVICES_URL,
59 9af7206b Kostas Papadimitriou
       'menu_url': CB_MENU_URL}
60 9af7206b Kostas Papadimitriou
61 9af7206b Kostas Papadimitriou
    CB_CODE = mark_safe(CB_CODE)
62 9af7206b Kostas Papadimitriou
63 9af7206b Kostas Papadimitriou
    return {
64 9af7206b Kostas Papadimitriou
        'CLOUDBAR_ACTIVE': CB_ACTIVE,
65 9af7206b Kostas Papadimitriou
        'CLOUDBAR_LOCATION': CB_LOCATION,
66 9af7206b Kostas Papadimitriou
        'CLOUDBAR_COOKIE_NAME': CB_COOKIE_NAME,
67 9af7206b Kostas Papadimitriou
        'CLOUDBAR_ACTIVE_SERVICE': CB_ACTIVE_SERVICE,
68 9af7206b Kostas Papadimitriou
        'CLOUDBAR_SERVICES_URL': CB_SERVICES_URL,
69 9af7206b Kostas Papadimitriou
        'CLOUDBAR_MENU_URL': CB_MENU_URL,
70 9af7206b Kostas Papadimitriou
        'CLOUDBAR_CODE': CB_CODE
71 9af7206b Kostas Papadimitriou
    }