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
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
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
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