Esempio n. 1
0
def get_menu(_req):

    # Imports
    from app.functions import get_menu
    from app.functions import init_menu_vign
    from app.functions import init_vign
    from django.shortcuts import render

    output = None

    if _req.method == 'GET':

        # Mise en forme du menu à vignettes du module de gestion des agents
        menu = init_menu_vign([
            init_vign(elem, ['item_href', 'item_img', 'item_name'])
            for elem in get_menu(_req)['gest_agents']['mod_items'].values()
        ], 3)

        # Affichage du template
        output = render(_req, './gest_agents/get_menu.html', {
            'menu': menu,
            'title': 'Gestion des agents'
        })

    return output
Esempio n. 2
0
        def _args_wrapper(_req, *args, **kwargs):

            # Imports
            from app.functions import get_menu
            from django.core.exceptions import PermissionDenied

            # Jaugeage de l'éventualité d'une erreur 403
            tab = get_menu(_req)
            erreur_403 = False
            if not _req.user.is_authenticated():
                erreur_403 = True
            else:
                if _mod:
                    if _mod in tab:
                        if _elem and _elem not in tab[_mod]['mod_items']:
                            erreur_403 = True
                    else:
                        erreur_403 = True

            # Exécution de la vue ou erreur 403
            if erreur_403 == False:
                return _vf(_req, *args, **kwargs)
            else:
                raise PermissionDenied
Esempio n. 3
0
def init_menus(_req):

    # Imports
    from app.functions import get_menu
    from django.template.defaultfilters import safe

    output = {}

    # Initialisation du menu utilisateur
    menu = get_menu(_req)

    # Initialisation des éléments "panel" du menu latéral
    tab_panels = []
    for cle, val in menu.items():
        if len(val['mod_items']) > 0:

            # Mise en forme d'un élément "panel" contenant des sous-éléments
            panel = '''
			<div class="panel">
				<div class="panel-heading">
					<span class="panel-title">
						<a href="#pnl_{mod_key}" data-parent="#side-menu" data-toggle="collapse">
							<img src="{mod_img}">
							{mod_name}
						</a>
					</span>
				</div>
				<div class="collapse panel-collapse" id="pnl_{mod_key}">
					<div class="panel-body">
						<table>{mod_items}</table>
					</div>
				</div>
			</div>
			'''.format(mod_img=val['mod_img'],
              mod_items=''.join([
                  '<tr><td><a href="{0}">{1}</a></td></tr>'.format(
                      elem['item_href'], elem['item_name'])
                  for elem in val['mod_items'].values()
              ]),
              mod_key=cle,
              mod_name=val['mod_name'])

        else:

            # Mise en forme d'un élément "panel" contenant aucun sous-élément
            panel = '''
			<div class="panel">
				<div class="panel-heading">
					<span class="panel-title">
						<a href="{mod_href}">
							<img src="{mod_img}">
							{mod_name}
						</a>
					</span>
				</div>
			</div>
			'''.format(mod_href=val['mod_href'],
              mod_img=val['mod_img'],
              mod_name=val['mod_name'])

        tab_panels.append(panel)

    # Mise en forme du menu latéral et empilage du tableau associatif de sortie
    menu_lat = '<div class="panel-group" id="side-menu">{}</div>'.format(
        ''.join(tab_panels))
    output['side_menu'] = safe(menu_lat)

    # Initialisation des éléments du navigateur
    tab_elem_nav = []
    for cle, val in menu.items():
        if len(val['mod_items']) > 0:
            li = '''
			<li class="dropdown">
				<a class="dropdown-toggle" data-toggle="dropdown" href="#">
					{0}
					<span class="caret"></span>
				</a>
				<ul class="dropdown-menu">{1}</ul>
			</li>
			'''.format(
                val['mod_name'], ''.join([
                    '<li><a href="{0}">{1}</a></li>'.format(
                        elem['item_href'], elem['item_name'])
                    for elem in val['mod_items'].values()
                ]))
        else:
            li = '<li><a href="{0}">{1}</a></li>'.format(
                val['mod_href'], val['mod_name'])
        tab_elem_nav.append(li)

    # Mise en forme du navigateur et empilage du tableau associatif de sortie
    nav = '<ul class="nav navbar-nav">{}</ul>'.format(''.join(tab_elem_nav))
    output['top_menu'] = safe(nav)

    return output
Esempio n. 4
0
def index(_req):

    # Imports
    from app.apps import AppConfig
    from app.forms.index import Authentifier
    from app.functions import get_menu
    from app.functions import init_fm
    from app.functions import init_form
    from app.functions import init_menu_vign
    from app.functions import init_vign
    from app.models import TUtilisateur
    from django.contrib.auth import authenticate
    from django.contrib.auth import login
    from django.contrib.auth import logout
    from django.core.urlresolvers import reverse
    from django.http import HttpResponse
    from django.shortcuts import render
    import json

    output = None

    # Initialisation du préfixe de chaque formulaire
    pref_auth = 'Authentifier'

    # Tentative d'obtention d'une instance TUtilisateur
    obj_util = TUtilisateur.objects.get(
        pk=_req.user.pk) if _req.user.is_authenticated() else None

    if _req.method == 'GET':
        if 'action' in _req.GET:

            # Déconnexion de la plateforme
            if _req.GET['action'] == 'logout':

                # Désactivation du mode super-secrétaire
                if obj_util:
                    setattr(obj_util, 'est_super_secr', False)
                    obj_util.save()

                # Nettoyage des variables de session
                for cle in list(_req.session.keys()):
                    del _req.session[cle]

                # Fermeture de la session active
                logout(_req)

                # Affichage du message de succès
                output = HttpResponse(json.dumps({
                    'success': {
                        'message':
                        'Merci pour votre connexion sur la plateforme {}.'.
                        format(AppConfig.verbose_name),
                        'redirect':
                        reverse('index')
                    }
                }),
                                      content_type='application/json')

            # Activation du mode super-secrétaire
            if _req.GET['action'] == 'activer-mode-super-secretaire':
                if obj_util and 'S' in obj_util.get_type_util__list():

                    # Mise à jour de l'instance
                    setattr(obj_util, 'est_super_secr', True)
                    obj_util.save()

                    # Affichage du message de succès
                    output = HttpResponse(json.dumps({
                        'success': {
                            'message':
                            'Vous venez d\'activer le mode super-secrétaire.',
                            'redirect': '__reload__'
                        }
                    }),
                                          content_type='application/json')

            # Désactivation du mode super-secrétaire
            if _req.GET['action'] == 'desactiver-mode-super-secretaire':
                if obj_util:

                    # Mise à jour de l'instance
                    setattr(obj_util, 'est_super_secr', False)
                    obj_util.save()

                    # Affichage du message de succès
                    output = HttpResponse(json.dumps({
                        'success': {
                            'message':
                            'Vous venez de désactiver le mode super-secrétaire.',
                            'redirect': '__reload__'
                        }
                    }),
                                          content_type='application/json')

        else:

            # Initialisation de chaque formulaire
            form_auth = Authentifier(prefix=pref_auth)

            # Mise en forme du menu principal à vignettes
            menu = init_menu_vign([
                init_vign(elem, ['mod_href', 'mod_img', 'mod_name'])
                for elem in get_menu(_req).values()
            ], 3)

            # Initialisation des fenêtres modales
            if _req.user.is_authenticated():
                tab_fm = []
            else:
                tab_fm = [
                    init_fm(
                        'login', 'Connexion à la plateforme {}'.format(
                            AppConfig.verbose_name))
                ]

            # Affichage du template
            output = render(
                _req, './index.html', {
                    'form_auth':
                    init_form(form_auth),
                    'menu':
                    menu,
                    'tab_fm':
                    tab_fm,
                    'title':
                    'Accueil'
                    if _req.user.is_authenticated() else 'Identification'
                })

    else:

        # Connexion à la plateforme
        if 'action' in _req.GET and _req.GET['action'] == 'login':

            # Soumission du formulaire
            form_auth = Authentifier(_req.POST, prefix=pref_auth)

            if form_auth.is_valid():

                # Stockage des données du formulaire
                cleaned_data = form_auth.cleaned_data
                val_username = cleaned_data.get('zs_username')
                val_password = cleaned_data.get('zs_password')

                # Déclaration de la session
                login(
                    _req,
                    authenticate(username=val_username, password=val_password))

                # Affichage du message de succès
                output = HttpResponse(json.dumps({
                    'success': {
                        'message':
                        'Bienvenue sur la plateforme {}.'.format(
                            AppConfig.verbose_name),
                        'redirect':
                        reverse('index')
                    }
                }),
                                      content_type='application/json')

            else:

                # Affichage des erreurs
                tab_errs = {
                    '{0}-{1}'.format(pref_auth, cle): val
                    for cle, val in form_auth.errors.items()
                }
                output = HttpResponse(json.dumps(tab_errs),
                                      content_type='application/json')

    return output