Exemplo n.º 1
0
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 '')
Exemplo n.º 2
0
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']
	)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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]
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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']
	)