context_processors.py 2.54 KB
Newer Older
lhark's avatar
lhark committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# Re2o est un logiciel d'administration développé initiallement au rezometz. Il
# se veut agnostique au réseau considéré, de manière à être installable en
# quelques clics.
#
# Copyright © 2017  Gabriel Détraz
# Copyright © 2017  Goulven Kermarec
# Copyright © 2017  Augustin Lemesle
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
chirac's avatar
chirac committed
22 23
"""Fonction de context, variables renvoyées à toutes les vues"""

24
from __future__ import unicode_literals
25 26 27

import datetime

28
from django.contrib import messages
29
from django.http import HttpRequest
30
from preferences.models import GeneralOption, OptionalMachine
31
from django.utils.translation import get_language
chirac's avatar
chirac committed
32

chirac's avatar
chirac committed
33

chirac's avatar
chirac committed
34
def context_user(request):
chirac's avatar
chirac committed
35 36
    """Fonction de context lorsqu'un user est logué (ou non),
    renvoie les infos sur l'user, la liste de ses droits, ses machines"""
chirac's avatar
chirac committed
37
    user = request.user
38 39 40 41
    if get_language()=='fr':
        global_message = GeneralOption.get_cached_value('general_message_fr')
    else:
        global_message = GeneralOption.get_cached_value('general_message_en')
42
    if global_message:
43 44 45 46
        if isinstance(request, HttpRequest):
            messages.warning(request, global_message)
        else:
            messages.warning(request._request, global_message)
chirac's avatar
chirac committed
47
    if user.is_authenticated():
48
        interfaces = user.user_interfaces()
chirac's avatar
chirac committed
49 50
    else:
        interfaces = None
chirac's avatar
chirac committed
51 52
    return {
        'request_user': user,
chirac's avatar
chirac committed
53
        'interfaces': interfaces,
54 55 56
        # Must takes a different name because djang.auth.contrib.views.login()
        # overrides 'site_name' context variable.
        'name_website': GeneralOption.get_cached_value('site_name'),
57
        'ipv6_enabled': OptionalMachine.get_cached_value('ipv6'),
chirac's avatar
chirac committed
58
    }
59 60 61 62 63 64 65 66 67


def date_now(request):
    """Add the current date in the context for quick informations and
    comparisons"""
    return {
        'now_aware': datetime.datetime.now(datetime.timezone.utc),
        'now_naive': datetime.datetime.now()
    }