Statistics
| Branch: | Tag: | Revision:

root / snf-common / synnefo / lib / context_processors.py @ 79b5d61b

History | View | Annotate | Download (2.7 kB)

1
from django.utils.safestring import mark_safe
2
from django.conf import settings
3

    
4
def cloudbar(request):
5
    """
6
    Django context processor that applies all cloudbar settings in response
7
    context plus a ready to use pre rendered script html tag containing valid
8
    javascript code for cloudbar to display.
9

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

13
    Then in your base html template::
14

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

28

29
    """
30

    
31
    CB_ACTIVE = getattr(settings, 'CLOUDBAR_ACTIVE', True)
32
    CB_LOCATION = getattr(settings, 'CLOUDBAR_LOCATION',
33
            'https://accounts.okeanos.grnet.gr/static/im/cloudbar/')
34
    CB_COOKIE_NAME = getattr(settings, 'CLOUDBAR_COOKIE_NAME',
35
            'okeanos_account')
36
    CB_ACTIVE_SERVICE = getattr(settings, 'CLOUDBAR_ACTIVE_SERVICE',
37
            'cloud')
38
    CB_SERVICES_URL = getattr(settings, 'CLOUDBAR_SERVICES_URL',
39
            'https://accounts.okeanos.grnet.gr/astakos/api/get_services')
40
    CB_MENU_URL = getattr(settings, 'CLOUDBAR_MENU_URL',
41
            'https://accounts.okeanos.grnet.gr/astakos/api/get_menu')
42
    CB_HEIGHT = getattr(settings, 'CLOUDBAR_HEIGHT',
43
            '35')
44
    CB_BGCOLOR = getattr(settings, 'CLOUDBAR_BACKGROUND_COLOR',
45
            '#000000')
46

    
47
    CB_CODE = """
48
    <script type="text/javascript">
49
        var CLOUDBAR_LOCATION = "%(location)s";
50
        var CLOUDBAR_COOKIE_NAME = "%(cookie_name)s";
51
        var CLOUDBAR_ACTIVE_SERVICE = "%(active_service)s";
52
        var GET_SERVICES_URL = "%(services_url)s";
53
        var GET_MENU_URL = "%(menu_url)s";
54
        var CLOUDBAR_HEIGHT = '%(height)s';
55

56
        $(document).ready(function(){
57
            $.getScript(CLOUDBAR_LOCATION + 'cloudbar.js');
58
        });
59

60
    </script>
61
    <style>
62
        body {
63
            border-top: %(height)spx solid %(bg_color)s;
64
        }
65
        body .cloudbar {
66
            height: %(height)spx;
67
        }
68
    </style>
69
""" % {'location': CB_LOCATION,
70
       'active_service': CB_ACTIVE_SERVICE,
71
       'cookie_name': CB_COOKIE_NAME,
72
       'services_url': CB_SERVICES_URL,
73
       'menu_url': CB_MENU_URL,
74
       'height': str(CB_HEIGHT),
75
       'bg_color': CB_BGCOLOR}
76

    
77
    CB_CODE = mark_safe(CB_CODE)
78

    
79
    return {
80
        'CLOUDBAR_ACTIVE': CB_ACTIVE,
81
        'CLOUDBAR_LOCATION': CB_LOCATION,
82
        'CLOUDBAR_COOKIE_NAME': CB_COOKIE_NAME,
83
        'CLOUDBAR_ACTIVE_SERVICE': CB_ACTIVE_SERVICE,
84
        'CLOUDBAR_SERVICES_URL': CB_SERVICES_URL,
85
        'CLOUDBAR_MENU_URL': CB_MENU_URL,
86
        'CLOUDBAR_CODE': CB_CODE
87
    }
88