def ger_pm(_req, _kwargs): # Imports from app.forms.gest_marches import GererPrestataireMarche from app.functions.form_init import sub as form_init from django.template.context_processors import csrf # Initialisation du formulaire form = form_init(GererPrestataireMarche(**_kwargs)) return ''' <form action="?action={}-prestataire" method="post" name="form_{}_pm" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> {} <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> {} <button class="center-block custom-button main-button" type="submit">Valider</button> </form> '''.format('modifier' if 'instance' in _kwargs else 'ajouter', 'modif' if 'instance' in _kwargs else 'ajout', csrf(_req)['csrf_token'], form['zl_prest'], form.get('nbre_dj_ap_pm') or '', form.get('nbre_dj_pp_pm') or '', form.get('nbre_dj_ani_pm') or '')
def ger_rr(_req, _kwargs) : # Imports from app.forms.gest_reserv import GererReferentReservation from app.functions.form_init import sub as form_init from django.template.context_processors import csrf # Initialisation du formulaire form = form_init(GererReferentReservation(**_kwargs)) return ''' <form action="?action={}-referent-reservation" method="post" name="form_{}_rr" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> <button class="center-block custom-button main-button" type="submit">Valider</button> </form> '''.format( 'modifier' if 'instance' in _kwargs else 'ajouter', 'modif' if 'instance' in _kwargs else 'ajout', csrf(_req)['csrf_token'], form['nom_rr'], form['prenom_rr'], form['courr_rr'], form['tel_rr'] )
def chois_projet(_req): # Imports from app.forms.gest_projets import FiltrerProjet from app.functions.datatable_reset import sub as datatable_reset from app.functions.form_init import sub as form_init from app.models import TUtilisateur from django.http import HttpResponse from django.shortcuts import render import json output = None if _req.method == 'GET': # Initialisation du formulaire form_filtr_projet = FiltrerProjet( kw_org=TUtilisateur.get_util_connect(_req).get_org()) # Affichage du template output = render( _req, './gest_projets/chois_projet.html', { 'dtable_filtr_projet': form_filtr_projet.get_datatable(_req), 'form_filtr_projet': form_init(form_filtr_projet), 'title': 'Choisir un projet' }) else: # Soumission du formulaire form_filtr_projet = FiltrerProjet(_req.POST) # Réinitialisation de la datatable ou affichage des erreurs if form_filtr_projet.is_valid(): output = datatable_reset(form_filtr_projet.get_datatable(_req)) else: output = HttpResponse(json.dumps(form_filtr_projet.errors), content_type='application/json') return output
def ger_anim(_req, _inst): # Imports from app.forms.gest_anim import GererAnimation from app.forms.gest_projets import GererProjet from app.functions.form_init import sub as form_init from app.functions.modal_init import sub as modal_init from app.models import TAnimation from app.models import TUtilisateur from django.core.urlresolvers import reverse from django.http import Http404 from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.shortcuts import render from django.template.context_processors import csrf import json output = None # Tentative d'obtention d'une instance TAnimation (si page de modification en cours) if _inst == False: obj_anim = None else: if 'id' in _req.GET: obj_anim = get_object_or_404(TAnimation, pk=_req.GET['id']) else: raise Http404 # Obtention d'une instance TUtilisateur obj_util_connect = TUtilisateur.get_util_connect(_req) if _req.method == 'GET': # Initialisation du formulaire form_ger_anim = GererAnimation(instance=obj_anim, kw_org=obj_util_connect.get_org()) # Définition du contenu de la balise <title/> (également utile à d'autres endroits) title = 'Modifier une animation' if obj_anim else 'Ajouter une animation' # Déclaration des fenêtres modales modals = [modal_init('ger_anim', title)] if not obj_anim: # Initialisation du formulaire et de ses attributs form_ger_projet = form_init(GererProjet(kw_util=obj_util_connect)) modals.append( modal_init( 'ajout_projet', 'Ajouter un projet', ''' <form action="?action=ajouter-projet" method="post" name="form_ajout_projet" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> {} {} {} <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> <button class="center-block custom-button main-button" type="submit">Valider</button> </form> '''.format( csrf(_req)['csrf_token'], form_ger_projet['zl_pm'] if 'zl_pm' in form_ger_projet else '', form_ger_projet['int_projet'], form_ger_projet['id_type_public'], form_ger_projet['nom_refer_projet'], form_ger_projet['prenom_refer_projet'], form_ger_projet['courr_refer_projet'], form_ger_projet['tel_refer_projet']))) # Affichage du template output = render( _req, './gest_anim/ger_anim.html', { 'form_ger_anim': form_init(form_ger_anim), 'a': obj_anim, 'b': obj_anim.get_bilan__object() if obj_anim else None, 'modals': modals, 'title': title }) else: if 'action' in _req.GET: if _req.GET['action'] == 'ajouter-projet': # Soumission du formulaire form_ger_projet = GererProjet(_req.POST, kw_util=obj_util_connect) if form_ger_projet.is_valid(): # Création/modification d'une instance TProjet obj_projet_valid = form_ger_projet.save() # Rafraichissement de la liste des projets et sélection automatique du nouveau projet créé _form_ger_anim = GererAnimation( kw_org=obj_util_connect.get_org()) _form_ger_anim.fields[ 'zl_projet'].initial = obj_projet_valid.get_pk() _form_ger_anim = form_init(_form_ger_anim) # Désaffichage du formulaire d'ajout d'un projet output = HttpResponse(json.dumps({ 'success': { 'elements': [['#fw_zl_projet', _form_ger_anim['zl_projet']]], 'modal_status': 'hide', 'reset': True } }), content_type='application/json') else: # Affichage des erreurs output = HttpResponse(json.dumps(form_ger_projet.errors), content_type='application/json') else: # Vérification du droit d'accès if obj_anim: obj_util_connect.can_access(obj_anim.get_projet().get_org(), False) # Soumission du formulaire form_ger_anim = GererAnimation(_req.POST, instance=obj_anim, kw_org=obj_util_connect.get_org()) if form_ger_anim.is_valid(): # Création/modification d'une instance TAnimation obj_anim_valid = form_ger_anim.save() # Affichage du message de succès output = HttpResponse(json.dumps({ 'success': { 'message': 'L\'animation a été {} avec succès.'.format( 'modifiée' if obj_anim else 'ajoutée'), 'redirect': reverse('consult_anim', args=[obj_anim_valid.get_pk()]) } }), content_type='application/json') else: # Affichage des erreurs output = HttpResponse(json.dumps(form_ger_anim.errors), content_type='application/json') return output
def chois_anim(_req): # Imports from app.forms.gest_anim import FiltrerAnimation from app.functions.form_init import sub as form_init from app.functions.modal_init import sub as modal_init from app.models import TAnimation from app.models import TUtilisateur from django.core.urlresolvers import reverse from django.http import HttpResponse from django.shortcuts import render import json output = None # Obtention d'une instance TUtilisateur obj_util_connect = TUtilisateur.get_util_connect(_req) if _req.method == 'GET': if 'action' in _req.GET: # Affichage d'une partie d'une animation if _req.GET['action'] == 'consulter-animation' and 'id' in _req.GET: # Obtention d'une instance TAnimation obj_anim = TAnimation.objects.get(pk=_req.GET['id']) # Initialisation des attributs de l'animation attrs_anim = obj_anim.get_attrs_anim() contenu = ''' <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> {} {} <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> <a href="{}" class="icon-with-text inform-icon">Consulter l'animation</a> '''.format(attrs_anim['prest'], attrs_anim['projet'], attrs_anim['dt_heure_anim'], attrs_anim['nat_anim'], attrs_anim['lieu_anim'], attrs_anim['comm'], reverse('consult_anim', args=[obj_anim.get_pk()])) # Affichage output = HttpResponse(json.dumps( {'success': { 'modal_content': contenu }}), content_type='application/json') else: # Initialisation du formulaire form_filtr_anim = FiltrerAnimation(kw_util=obj_util_connect) # Affichage du template output = render( _req, './gest_anim/chois_anim.html', { 'cal_filtr_anim': form_filtr_anim.get_calendar(_req), 'form_filtr_anim': form_init(form_filtr_anim), 'modals': [ modal_init('consult_anim', 'Consulter une partie d\'une animation') ], 'title': 'Choisir une animation' }) else: # Soumission du formulaire form_filtr_anim = FiltrerAnimation(_req.POST, kw_util=obj_util_connect) # Mise à jour du calendrier ou affichage des erreurs if form_filtr_anim.is_valid(): output = HttpResponse(json.dumps({ 'success': { 'elements': [['#za_cal_anim', form_filtr_anim.get_calendar(_req)]] } }), content_type='application/json') else: output = HttpResponse(json.dumps(form_filtr_anim.errors), content_type='application/json') return output
def index(_req) : # Imports from app.apps import AppConfig from app.forms.index import Authentifier from app.functions.form_init import sub as form_init from app.functions.menu_init import sub as menu_init from app.functions.modal_init import sub as modal_init 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 # Tentative d'obtention d'une instance TUtilisateur obj_util_connect = TUtilisateur.get_util_connect(_req) if _req.method == 'GET' : if 'action' in _req.GET : # Déconnexion de la plateforme if _req.GET['action'] == 'logout' : # Nettoyage des variables de session for cle in list(_req.session.keys()) : del _req.session[cle] # Désactivation du mode super-administrateur if obj_util_connect and obj_util_connect.get_en_mode_superadmin() == True : obj_util_connect.en_mode_superadmin = False; obj_util_connect.save() # Fermeture de la session 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-administrateur if _req.GET['action'] == 'activer-mode-super-administrateur' : if obj_util_connect and obj_util_connect.get_est_superadmin() == 0 : # Mise à jour de l'instance obj_util_connect.en_mode_superadmin = True; obj_util_connect.save() # Affichage du message de succès output = HttpResponse( json.dumps({ 'success' : { 'message' : 'Vous venez d\'activer le mode super-administrateur.', 'redirect' : '__RELOAD__' }}), content_type = 'application/json' ) # Désactivation du mode super-administrateur if _req.GET['action'] == 'desactiver-mode-super-administrateur' : if obj_util_connect and obj_util_connect.get_est_superadmin() == 1 : # Mise à jour de l'instance obj_util_connect.en_mode_superadmin = False; obj_util_connect.save() # Affichage du message de succès output = HttpResponse( json.dumps({ 'success' : { 'message' : 'Vous venez de désactiver le mode super-administrateur.', 'redirect' : '__RELOAD__' }}), content_type = 'application/json' ) else : # Initialisation du formulaire form_auth = Authentifier() # Déclaration des fenêtres modales modals = [modal_init('login', 'Connexion à la plateforme {}'.format(AppConfig.verbose_name))] # Affichage du template output = render(_req, './index.html', { 'form_auth' : form_init(form_auth), 'menu' : menu_init(_req, '__ALL__', 3), 'modals' : modals, '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) 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' : '__RELOAD__' }}), content_type = 'application/json' ) else : # Affichage des erreurs output = HttpResponse(json.dumps(form_auth.errors), content_type = 'application/json') return output
def consult_compte(_req) : # Imports from app.forms.gest_marches import GererTransactionDemiJournees from app.forms.index import GererUtilisateur from app.functions.attributes_init import sub as attributes_init from app.functions.form_init import sub as form_init from app.functions.modal_init import sub as modal_init from app.models import TPrestatairesMarche from app.models import TUtilisateur from django.forms import formset_factory from django.http import HttpResponse from django.shortcuts import render from django.template.context_processors import csrf from functools import partial from functools import wraps import json output = None # Obtention d'une instance TUtilisateur obj_util_connect = TUtilisateur.get_util_connect(_req) if _req.method == 'GET' : if 'action' in _req.GET : # Initialisation du formset relatif aux demi-journées de préparation et de réalisation if _req.GET['action'] == 'initialiser-formset-transactions-demi-journees' and 'id' in _req.GET : # Obtention d'une instance TPrestatairesMarche obj_pm = TPrestatairesMarche.objects.get(pk = _req.GET['id'], id_prest = obj_util_connect.get_org()) # Mise en session de l'identifiant du couple prestataire/marché _req.session['ttransactiondemijournees__id_pm__update'] = obj_pm.get_pk() output = GererTransactionDemiJournees(kw_pm = obj_pm).get_datatable(_req) else : # Initialisation des balises <tr/> de la datatable des marchés trs = [] for pm in obj_util_connect.get_org().get_pm().all() : tds = [ pm.get_marche(), pm.get_nbre_dj_ap_pm__str(), pm.get_nbre_dj_progr_pm('AP'), pm.get_nbre_dj_ap_rest_pm(), pm.get_nbre_dj_pp_pm__str(), pm.get_nbre_dj_progr_pm('PP'), pm.get_nbre_dj_prep_real_pm(True), pm.get_nbre_dj_prep_real_pm(False), pm.get_nbre_dj_pp_rest_pm(False), pm.get_nbre_dj_pp_rest_pm(True), ''' <span action="?action=initialiser-formset-transactions-demi-journees&id={}" class="half-icon icon-without-text" modal-suffix="ger_tdj" onclick="ajax(event);" title="Gérer les demi-journées de préparation et de réalisation"></span> '''.format(pm.get_pk()) ] trs.append('<tr>{}</tr>'.format(''.join(['<td>{}</td>'.format(td) for td in tds]))) # Initialisation des attributs utilisateur attrs_util = { 'email' : { 'label' : 'Courriel', 'value' : obj_util_connect.get_email() }, 'nom_complet' : { 'label' : 'Nom complet', 'value' : obj_util_connect.get_nom_complet() }, 'org' : { 'label' : 'Organisme', 'value' : obj_util_connect.get_org() } } # Initialisation du formulaire form_modif_util = form_init(GererUtilisateur(instance = obj_util_connect)) # Déclaration des fenêtres modales modals = [ modal_init( 'ger_tdj', 'Gérer les demi-journées de préparation et de réalisation', ''' <form action="?action=gerer-transactions-demi-journees" method="post" name="form_ger_tdj" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> {} <button class="center-block custom-button main-button" type="submit">Valider</button> </form> {} '''.format( csrf(_req)['csrf_token'], *GererTransactionDemiJournees(kw_init = True).get_datatable(_req) ) ), modal_init( 'modif_compte', 'Modifier mon compte', ''' <form action="" method="post" name="form_modif_compte" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> {} <button class="center-block custom-button main-button" type="submit">Valider</button> </form> '''.format( csrf(_req)['csrf_token'], form_modif_util['last_name'], form_modif_util['first_name'], form_modif_util['email'] ) ) ] # Affichage du template output = render(_req, './extras/consult_compte.html', { 'attrs_util' : attributes_init(attrs_util), 'modals' : modals, 'tbody' : ''.join(trs), 'title' : 'Consulter mon compte', 'u' : obj_util_connect }) else : if 'action' in _req.GET : # Gestion des demi-journées de préparation et de réalisation if _req.GET['action'] == 'gerer-transactions-demi-journees' : # Obtention d'une instance TPrestatairesMarche obj_pm = TPrestatairesMarche.objects.get( pk = _req.session.get('ttransactiondemijournees__id_pm__update') ) # Soumission du formset _GererTransactionDemiJournees = formset_factory( wraps(GererTransactionDemiJournees)(partial(GererTransactionDemiJournees, kw_pm = obj_pm)) ) formset_ger_tdj = _GererTransactionDemiJournees(_req.POST) # Initialisation des erreurs erreurs = {} if not formset_ger_tdj.is_valid() : for form in formset_ger_tdj : for cle, val in form.errors.items() : erreurs['{}-{}'.format(form.prefix, cle)] = val if len(erreurs) == 0 : # Suppression de la variable de session si définie if 'ttransactiondemijournees__id_pm__update' in _req.session : del _req.session['ttransactiondemijournees__id_pm__update'] # Suppression de toutes les instances TTransactionDemiJournees liées à une instance # TPrestatairesMarche obj_pm.get_tdj().all().delete() # Création d'une instance TTransactionDemiJournees for form in formset_ger_tdj : form.save() # Affichage du message de succès output = HttpResponse( json.dumps({ 'success' : { 'message' : 'Le marché a été modifié avec succès.', 'redirect' : '__RELOAD__' }}), content_type = 'application/json' ) else : # Affichage des erreurs output = HttpResponse(json.dumps(erreurs), content_type = 'application/json') else : # Soumission du formulaire form_modif_util = GererUtilisateur(_req.POST, instance = obj_util_connect) if form_modif_util.is_valid() : # Modification de l'instance TUtilisateur form_modif_util.save() # Affichage du message de succès output = HttpResponse( json.dumps({ 'success' : { 'message' : 'Le compte a été modifié avec succès.', 'redirect' : '__RELOAD__' }}), content_type = 'application/json' ) else : # Affichage des erreurs output = HttpResponse(json.dumps(form_modif_util.errors), content_type = 'application/json') return output
def ger_bilan(_req, _kwargs): # Imports from app.forms.gest_anim import ClonerBilan from app.forms.gest_anim import GererBilan from app.forms.gest_anim import GererBilanAnimation from app.forms.gest_anim import GererPoint from app.functions.form_init import sub as form_init from django.template.context_processors import csrf kwargs = {cle: val for cle, val in _kwargs.items()} # Initialisation du formulaire de clonage form_clon_bilan = form_init( ClonerBilan(kw_anim=kwargs['kw_anim'], prefix='ClonerBilan')) if kwargs['kw_anim'].get_est_anim() == True: # Mise à jour de l'instance (TBilan -> TBilanAnimation) kwargs['instance'] = kwargs['instance'].get_ba( ) if kwargs['instance'] else None # Initialisation du formulaire form = form_init(GererBilanAnimation(**kwargs)) # Initialisation du formset dtable_ger_point = GererPoint( kw_ba=kwargs['instance']).get_datatable(_req) # Mise en forme du formulaire content = ''' <div class="custom-well form-well">Données générales de l'animation</div> {} {} {} {} <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> <div class="custom-well form-well">Animateur référent</div> <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> <div class="custom-well form-well">Ressenti de l'animation</div> {} {} <div class="custom-well form-well">Données complémentaires de l'animation</div> {} {} {} {} {} {} {} {} {} '''.format(form['titre_ba'], form['nbre_pers_pres_ba'], form['themat_abord_ba'], form['deroul_ba'], form['en_inter'], form['en_exter'], form['nom_refer_bilan'], form['prenom_refer_bilan'], form['fonct_refer_bilan'], form['struct_refer_bilan'], form['eval_ba'], dtable_ger_point[0], form['zcc_plaq'], form['photo_1_ba'], form['photo_2_ba'], form['photo_3_ba'], form['rdp_1_ba'], form['rdp_2_ba'], form['rdp_3_ba'], form['outil_ba'], form['comm_bilan']) # Mise en forme du contenu hors-formulaire extra_content = dtable_ger_point[1] else: # Initialisation du formulaire form = form_init(GererBilan(**kwargs)) content = ''' <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> <div class="row"> <div class="col-md-6">{}</div> <div class="col-md-6">{}</div> </div> {} '''.format(form['nom_refer_bilan'], form['prenom_refer_bilan'], form['fonct_refer_bilan'], form['struct_refer_bilan'], form['comm_bilan']) extra_content = '' return ''' <form action="?action=cloner-bilan" method="post" name="form_clon_bilan" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> {} </form> <form action="?action=gerer-bilan" enctype="multipart/form-data" method="post" name="form_ger_bilan" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> {} <button class="center-block custom-button main-button" type="submit">Valider</button> </form> {} '''.format( csrf(_req)['csrf_token'], form_clon_bilan['zl_bilan'], csrf(_req)['csrf_token'], content, extra_content)
def ger_reserv(_req, _inst) : # Imports from app.forms.gest_reserv import GererReservation from app.functions.form_init import sub as form_init from app.functions.modal_init import sub as modal_init from app.models import TReservation from app.models import TUtilisateur from django.core.urlresolvers import reverse from django.http import Http404 from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.shortcuts import render from smmaranim.custom_settings import ALERTS from smmaranim.custom_settings import SMMAR_SUPPORT import json output = None # Tentative d'obtention d'une instance TReservation (si page de modification en cours) if _inst == False : obj_reserv = None else : if 'id' in _req.GET : obj_reserv = get_object_or_404(TReservation, pk = _req.GET['id']) else : raise Http404 # Obtention d'une instance TUtilisateur obj_util_connect = TUtilisateur.get_util_connect(_req) # Vérification du droit d'accès if obj_reserv : obj_util_connect.can_access(obj_reserv.get_util().get_org(), False) if _req.method == 'GET' : # Initialisation du formulaire form_ger_reserv = GererReservation(instance = obj_reserv) # Définition du contenu de la balise <title/> (également utile à d'autres endroits) title = 'Modifier une réservation' if obj_reserv else 'Ajouter une réservation' # Affichage du template output = render(_req, './gest_reserv/ger_reserv.html', { 'aides_smmar' : ALERTS['aides_smmar'], 'form_ger_reserv' : form_init(form_ger_reserv), 'modals' : [modal_init('ger_reserv', title)], 'r' : obj_reserv, 'support' : SMMAR_SUPPORT, 'title' : title }) else : # Soumission du formulaire form_ger_reserv = GererReservation( _req.POST, instance = obj_reserv, kw_dt_reserv = int(_req.POST.get('rb_dt_reserv')), kw_doit_chercher = 0 if not _req.POST.get('doit_chercher') else int(_req.POST.get('doit_chercher')), kw_doit_demonter = 0 if not _req.POST.get('doit_demonter') else int(_req.POST.get('doit_demonter')), kw_doit_livrer = 0 if not _req.POST.get('doit_livrer') else int(_req.POST.get('doit_livrer')), kw_doit_monter = 0 if not _req.POST.get('doit_monter') else int(_req.POST.get('doit_monter')), kw_util = obj_util_connect ) if form_ger_reserv.is_valid() : # Création/modification d'une instance TReservation obj_reserv_valid = form_ger_reserv.save() # Affichage du message de succès output = HttpResponse( json.dumps({ 'success' : { 'message' : 'La réservation a été {} avec succès.'.format('modifiée' if obj_reserv else 'ajoutée'), 'redirect' : reverse('consult_reserv', args = [obj_reserv_valid.get_pk()]) }}), content_type = 'application/json' ) else : # Affichage des erreurs output = HttpResponse(json.dumps(form_ger_reserv.errors), content_type = 'application/json') return output
def chois_reserv(_req) : # Imports from app.forms.gest_reserv import FiltrerReservation from app.functions.form_init import sub as form_init from app.functions.modal_init import sub as modal_init from app.models import TReservation from django.core.urlresolvers import reverse from django.http import HttpResponse from django.shortcuts import render import json output = None if _req.method == 'GET' : if 'action' in _req.GET : # Affichage d'une partie d'une réservation if _req.GET['action'] == 'consulter-reservation' and 'id' in _req.GET : # Obtention d'une instance TReservation obj_reserv = TReservation.objects.get(pk = _req.GET['id']) # Initialisation des attributs de la réservation attrs_reserv = obj_reserv.get_attrs_reserv() contenu = ''' {} {} {} <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> <a href="{}" class="icon-with-text inform-icon">Consulter la réservation</a> '''.format( attrs_reserv['outil'], attrs_reserv['dt_reserv'], attrs_reserv['nom_complet_refer_reserv'], attrs_reserv['courr_refer_reserv'], attrs_reserv['tel_refer_reserv'], reverse('consult_reserv', args = [obj_reserv.get_pk()]) ) # Affichage output = HttpResponse( json.dumps({ 'success' : { 'modal_content' : contenu }}), content_type = 'application/json' ) else : # Initialisation du formulaire form_filtr_reserv = FiltrerReservation() # Affichage du template output = render(_req, './gest_reserv/chois_reserv.html', { 'cal_filtr_reserv' : form_filtr_reserv.get_calendar(_req), 'form_filtr_reserv' : form_init(form_filtr_reserv), 'modals' : [ modal_init('affich_outil', 'Afficher l\'outil'), modal_init('consult_reserv', 'Consulter une partie d\'une réservation') ], 'title' : 'Choisir une réservation' }) else : # Soumission du formulaire form_filtr_reserv = FiltrerReservation(_req.POST) # Mise à jour du calendrier ou affichage des erreurs if form_filtr_reserv.is_valid() : output = HttpResponse( json.dumps({ 'success' : { 'elements' : [['#za_cal_reserv', form_filtr_reserv.get_calendar(_req)]] }}), content_type = 'application/json' ) else : output = HttpResponse(json.dumps(form_filtr_reserv.errors), content_type = 'application/json') return output
def sub(_suffix, _form, _formset_label, _keys, _kwargs={}): # Imports from app.functions.form_init import sub as form_init from bs4 import BeautifulSoup from django.forms import formset_factory from django.template.defaultfilters import safe from smmaranim.custom_settings import REQUIRED_FIELD # Initialisation des arguments kwargs = {'formset': None, 'initial': None} for cle, val in _kwargs.items(): kwargs[cle] = val # Initialisation du formset et de ses arguments formset_kwargs = {'extra': 1 if not kwargs['initial'] else 0} if kwargs['formset']: formset_kwargs['formset'] = kwargs['formset'] F = formset_factory(_form, **formset_kwargs) formset = F(initial=kwargs['initial']) # Initialisation des lignes de la datatable trs = [] for form in formset: # Initialisation des balises <th/> et <td/> ths = [] tds = [] # Initialisation de chaque champ du formulaire courant form = form_init(form) for key in _keys.split('|'): # Instanciation d'un objet BeautifulSoup bs = BeautifulSoup(form[key]) # Obtention du label original label = bs.find('span', {'class': 'field-label'}) # Empilement des balises <th/> ths.append('<th>{}</th>'.format(''.join( str(elem) for elem in label.contents))) # Suppression du label (surchargement avec une chaîne vide) label.replaceWith('') # Empilement des balises <td/> tds.append('<td>{}</td>'.format(bs)) # Ajout d'une colonne permettant la gestion du formset ths.append(''' <th> <span class="add-form fa fa-plus-circle" onclick="add_form_to_formset('{}');" title="Ajouter"></span> </th> '''.format(_suffix)) tds.append(''' <td><span class="delete-icon icon-without-text" onclick="remove_form_to_formset(event);" title="Supprimer"></span></td> ''') # Empilement des lignes de la datatable trs.append('<tr class="formset-form">{}</tr>'.format(''.join(tds))) # Initialisation des balises <td/> du formulaire vide tds = [] # Initialisation de chaque champ du formulaire vide empty_form = form_init(formset.empty_form) for key in _keys.split('|'): # Instanciation d'un objet BeautifulSoup bs = BeautifulSoup(empty_form[key]) # Suppression du label (surchargement avec une chaîne vide) bs.find('span', {'class': 'field-label'}).replaceWith('') # Empilement des balises <td/> du formulaire vide tds.append('<td>{}</td>'.format(bs)) # Ajout d'une colonne permettant la gestion du formset tds.append(''' <td><span class="delete-icon icon-without-text" onclick="remove_form_to_formset(event);" title="Supprimer"></span></td> ''') output = [ ''' <div id="formset_{}" class="formsets-wrapper"> {} <span class="formset-label">{}</span> <div class="custom-table" id="dtable_{}"> <table border="1" bordercolor="#DDD"> <thead> <tr>{}</tr> </thead> <tbody>{}</tbody> </table> </div> </div> '''.format( _suffix, formset.management_form, _formset_label[0] + REQUIRED_FIELD if _formset_label[1] == True else _formset_label[0], _suffix, ''.join(ths), ''.join(trs)), ''' <div id="formset_{}__empty_form" style="display: none;"> <form> <table> <tbody> <tr class="formset-form">{}</tr> </tbody> </table> </form> </div> '''.format(_suffix, ''.join(tds)) ] return [safe(elem) for elem in output]
def ger_projet(_req, _inst): # Imports from app.forms.gest_projets import GererProjet from app.functions.form_init import sub as form_init from app.functions.modal_init import sub as modal_init from app.models import TProjet from app.models import TUtilisateur from django.core.urlresolvers import reverse from django.http import Http404 from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.shortcuts import render from smmaranim.custom_settings import PKS import json output = None # Tentative d'obtention d'une instance TProjet (si page de modification en cours) if _inst == False: obj_projet = None else: if 'id' in _req.GET: obj_projet = get_object_or_404(TProjet, pk=_req.GET['id']) else: raise Http404 # Obtention d'une instance TUtilisateur obj_util_connect = TUtilisateur.get_util_connect(_req) # Vérification du droit d'accès if obj_projet: obj_util_connect.can_access(obj_projet.get_org(), False) if _req.method == 'GET': # Initialisation du formulaire form_ger_projet = GererProjet(instance=obj_projet, kw_util=obj_util_connect) # Définition du contenu de la balise <title/> (également utile à d'autres endroits) title = 'Modifier un projet' if obj_projet else 'Ajouter un projet' # Définition du message d'avertissement f = None if obj_projet: if obj_projet.get_type_public().get_pk( ) == PKS['id_type_public__jps']: f = 'classes' elif obj_projet.get_type_public().get_pk( ) == PKS['id_type_public__jpes']: f = 'tranches d\'âge' if f: message = ''' Attention, si vous changez le type de public visé, alors les {} précédemment ajoutées seront supprimées. '''.format(f) else: message = '' # Affichage du template output = render( _req, './gest_projets/ger_projet.html', { 'form_ger_projet': form_init(form_ger_projet), 'message': message, 'modals': [modal_init('ger_projet', title)], 'p': obj_projet, 'title': title }) else: # Soumission du formulaire form_ger_projet = GererProjet(_req.POST, instance=obj_projet, kw_util=obj_util_connect) if form_ger_projet.is_valid(): # Création/modification d'une instance TProjet obj_projet_valid = form_ger_projet.save() # Affichage du message de succès output = HttpResponse(json.dumps({ 'success': { 'message': 'Le projet a été {} avec succès.'.format( 'modifié' if obj_projet else 'ajouté'), 'redirect': reverse('consult_projet', args=[obj_projet_valid.get_pk()]) } }), content_type='application/json') else: # Affichage des erreurs output = HttpResponse(json.dumps(form_ger_projet.errors), content_type='application/json') return output
def ger_expos(_req, _kwargs) : # Imports from app.forms.gest_reserv import GererExposition from app.functions.form_init import sub as form_init from django.template.context_processors import csrf # Initialisation du formulaire form = GererExposition(**_kwargs) _form = form_init(form) # Définition d'un paramètre d'affichage des champs date if 'instance' in _kwargs and not len(_kwargs['instance'].get_dt_expos()) > 1 : tranche = 0 elif 'kw_reserv' in _kwargs and not len(_kwargs['kw_reserv'].get_dt_reserv()) > 1 : tranche = 0 else : tranche = 1 return ''' <form action="?action={}-exposition" method="post" name="form_{}_expos" onsubmit="ajax(event);"> <input name="csrfmiddlewaretoken" type="hidden" value="{}"> {} <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> {} <div id="za_{}-dt_expos__on" style="{}"> <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> </div> <div id="za_{}-dt_expos__off" style="{}"> <div class="row"> <div class="col-sm-6">{}</div> <div class="col-sm-6">{}</div> </div> </div> {} {} <button class="center-block custom-button main-button" type="submit">Valider</button> </form> '''.format( 'modifier' if 'instance' in _kwargs else 'ajouter', 'modif' if 'instance' in _kwargs else 'ajout', csrf(_req)['csrf_token'], _form['id_struct'], _form['lieu_expos'], _form['zl_comm'], _form['rb_dt_expos'], form.prefix, 'display: none;' if tranche == 0 else '', _form['zd_dt_deb_expos'], _form['zl_borne_dt_deb_expos'], _form['zd_dt_fin_expos'], _form['zl_borne_dt_fin_expos'], form.prefix, 'display: none;' if tranche == 1 else '', _form['zd_dt_expos'], _form['zl_borne_dt_expos'], _form['zl_rr'], _form['comm_expos'] )