2019-01-22 20:27:18 +01:00
import simplejson as json
2018-12-23 12:06:16 +01:00
2018-10-06 00:03:02 +02:00
from django . shortcuts import render , redirect , get_object_or_404
from django . contrib import messages
from django . urls import reverse
2018-11-22 22:52:15 +01:00
from django . contrib . auth . decorators import login_required , permission_required
2018-12-23 12:06:16 +01:00
from django . http import HttpResponse
from django . forms . models import model_to_dict
2019-02-26 23:18:53 +01:00
from django . http import Http404
2018-11-22 22:52:15 +01:00
from coopeV3 . acl import active_required
2018-08-31 14:46:35 +02:00
2018-10-06 00:03:02 +02:00
from . models import GeneralPreferences , Cotisation , PaymentMethod
from . forms import CotisationForm , PaymentMethodForm , GeneralPreferencesForm
2018-11-22 22:52:15 +01:00
@active_required
@login_required
2018-12-02 16:28:40 +01:00
@permission_required ( ' preferences.change_generalpreferences ' )
2018-10-06 00:03:02 +02:00
def generalPreferences ( request ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which displays a : class : ` ~ preferences . forms . GeneralPreferencesForm ` to edit the : class : ` ~ preferences . models . GeneralPreferences ` .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
gp , _ = GeneralPreferences . objects . get_or_create ( pk = 1 )
2019-02-18 19:20:09 +01:00
form = GeneralPreferencesForm ( request . POST or None , request . FILES or None , instance = gp )
2018-10-06 00:03:02 +02:00
if ( form . is_valid ( ) ) :
form . save ( )
2019-01-06 05:18:31 +01:00
messages . success ( request , " Les préférences générales ont bien été mises à jour " )
2018-10-06 00:03:02 +02:00
return render ( request , " preferences/general_preferences.html " , { " form " : form } )
########## Cotisations ##########
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.view_cotisation ' )
2018-10-06 00:03:02 +02:00
def cotisationsIndex ( request ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which lists all the : class : ` ~ preferences . models . Cotisation ` .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
cotisations = Cotisation . objects . all ( )
return render ( request , " preferences/cotisations_index.html " , { " cotisations " : cotisations } )
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.add_cotisation ' )
2018-10-06 00:03:02 +02:00
def addCotisation ( request ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which displays a : class : ` ~ preferences . forms . CotisationForm ` to create a : class : ` ~ preferences . models . Cotisation ` .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
form = CotisationForm ( request . POST or None )
if ( form . is_valid ( ) ) :
cotisation = form . save ( )
messages . success ( request , " La cotisation ( " + str ( cotisation . duration ) + " jours, " + str ( cotisation . amount ) + " €) a bien été créée " )
return redirect ( reverse ( ' preferences:cotisationsIndex ' ) )
2019-01-17 23:16:43 +01:00
return render ( request , " form.html " , { " form " : form , " form_title " : " Création d ' une cotisation " , " form_button " : " Créer " , " form_button_icon " : " plus-square " } )
2018-10-06 00:03:02 +02:00
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.change_cotisation ' )
2018-10-06 00:03:02 +02:00
def editCotisation ( request , pk ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which displays a : class : ` ~ preferences . forms . CotisationForm ` to edit a : class : ` ~ preferences . models . Cotisation ` .
2018-12-02 16:28:40 +01:00
2019-02-28 13:18:41 +01:00
pk
The primary key of the : class : ` ~ preferences . models . Cotisation ` to edit .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
cotisation = get_object_or_404 ( Cotisation , pk = pk )
form = CotisationForm ( request . POST or None , instance = cotisation )
if ( form . is_valid ( ) ) :
cotisation = form . save ( )
messages . success ( request , " La cotisation ( " + str ( cotisation . duration ) + " jours, " + str ( cotisation . amount ) + " €) a bien été modifiée " )
return redirect ( reverse ( ' preferences:cotisationsIndex ' ) )
2019-01-17 23:16:43 +01:00
return render ( request , " form.html " , { " form " : form , " form_title " : " Modification d ' une cotisation " , " form_button " : " Modifier " , " form_button_icon " : " pencil-alt " } )
2018-10-06 00:03:02 +02:00
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.delete_cotisation ' )
2019-02-28 13:18:41 +01:00
def deleteCotisation ( request , pk ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
Delete a : class : ` ~ preferences . models . Cotisation ` .
2018-12-02 16:28:40 +01:00
2019-02-28 13:18:41 +01:00
pk
The primary key of the : class : ` ~ preferences . models . Cotisation ` to delete .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
cotisation = get_object_or_404 ( Cotisation , pk = pk )
message = " La cotisation ( " + str ( cotisation . duration ) + " jours, " + str ( cotisation . amount ) + " €) a bien été supprimée "
cotisation . delete ( )
messages . success ( request , message )
return redirect ( reverse ( ' preferences:cotisationsIndex ' ) )
2019-01-22 20:27:18 +01:00
@active_required
@login_required
@permission_required ( ' preferences.view_cotisation ' )
def get_cotisation ( request , pk ) :
"""
2019-02-28 13:18:41 +01:00
Return the requested : class : ` ~ preferences . models . Cotisation ` in json format .
2019-01-22 20:27:18 +01:00
2019-02-28 13:18:41 +01:00
pk
The primary key of the requested : class : ` ~ preferences . models . Cotisation ` .
2019-01-22 20:27:18 +01:00
"""
cotisation = get_object_or_404 ( Cotisation , pk = pk )
data = json . dumps ( { " pk " : cotisation . pk , " duration " : cotisation . duration , " amount " : cotisation . amount , " needQuantityButton " : False } )
return HttpResponse ( data , content_type = ' application/json ' )
2018-10-06 00:03:02 +02:00
########## Payment Methods ##########
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.view_paymentmethod ' )
2018-10-06 00:03:02 +02:00
def paymentMethodsIndex ( request ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which lists all the : class : ` ~ preferences . models . PaymentMethod ` .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
paymentMethods = PaymentMethod . objects . all ( )
return render ( request , " preferences/payment_methods_index.html " , { " paymentMethods " : paymentMethods } )
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.add_paymentmethod ' )
2018-10-06 00:03:02 +02:00
def addPaymentMethod ( request ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which displays a : class : ` ~ preferences . forms . PaymentMethodForm ` to create a : class : ` ~ preferences . models . PaymentMethod ` .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
form = PaymentMethodForm ( request . POST or None )
if ( form . is_valid ( ) ) :
paymentMethod = form . save ( )
messages . success ( request , " Le moyen de paiement " + paymentMethod . name + " a bien été crée " )
return redirect ( reverse ( ' preferences:paymentMethodsIndex ' ) )
2019-01-17 23:16:43 +01:00
return render ( request , " form.html " , { " form " : form , " form_title " : " Création d ' un moyen de paiement " , " form_button " : " Créer " , " form_button_icon " : " plus-square " } )
2018-10-06 00:03:02 +02:00
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.change_paymentmethod ' )
2018-10-06 00:03:02 +02:00
def editPaymentMethod ( request , pk ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
View which displays a : class : ` ~ preferences . forms . PaymentMethodForm ` to edit a : class : ` ~ preferences . models . PaymentMethod ` .
2018-12-02 16:28:40 +01:00
2019-02-28 13:18:41 +01:00
pk
The primary key of the : class : ` ~ preferences . models . PaymentMethod ` to edit .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
paymentMethod = get_object_or_404 ( PaymentMethod , pk = pk )
form = PaymentMethodForm ( request . POST or None , instance = paymentMethod )
if ( form . is_valid ( ) ) :
paymentMethod = form . save ( )
messages . success ( request , " Le moyen de paiment " + paymentMethod . name + " a bien été modifié " )
return redirect ( reverse ( ' preferences:paymentMethodsIndex ' ) )
2019-01-17 23:16:43 +01:00
return render ( request , " form.html " , { " form " : form , " form_title " : " Modification d ' un moyen de paiement " , " form_button " : " Modifier " , " form_button_icon " : " pencil-alt " } )
2018-10-06 00:03:02 +02:00
2018-11-22 22:52:15 +01:00
@active_required
@login_required
@permission_required ( ' preferences.delete_paymentmethod ' )
2018-10-06 00:03:02 +02:00
def deletePaymentMethod ( request , pk ) :
2018-12-02 16:28:40 +01:00
"""
2019-02-28 13:18:41 +01:00
Delete a : class : ` ~ preferences . models . PaymentMethod ` .
2018-12-02 16:28:40 +01:00
2019-02-28 13:18:41 +01:00
pk
The primary key of the : class : ` ~ preferences . models . PaymentMethod ` to delete .
2018-12-02 16:28:40 +01:00
"""
2018-10-06 00:03:02 +02:00
paymentMethod = get_object_or_404 ( PaymentMethod , pk = pk )
message = " Le moyen de paiement " + paymentMethod . name + " a bien été supprimé "
paymentMethod . delete ( )
messages . success ( request , message )
2018-12-02 16:28:40 +01:00
return redirect ( reverse ( ' preferences:paymentMethodsIndex ' ) )
2018-12-14 09:17:56 +01:00
########## Active Site ##########
def inactive ( request ) :
"""
2019-02-28 13:18:41 +01:00
View which displays the inactive message ( if the site is inactive ) .
2018-12-14 09:17:56 +01:00
"""
gp , _ = GeneralPreferences . objects . get_or_create ( pk = 1 )
return render ( request , ' preferences/inactive.html ' , { " message " : gp . active_message } )
2018-12-23 12:06:16 +01:00
########## Config ##########
def get_config ( request ) :
"""
2019-02-28 13:18:41 +01:00
Load the : class : ` ~ preferences . models . GeneralPreferences ` and return it in json format ( except for : attr : ` ~ preferences . models . GeneralPreferences . statutes ` , : attr : ` ~ preferences . models . GeneralPreferences . rules ` and : attr : ` ~ preferences . models . GeneralPreferences . menu ` )
2018-12-23 12:06:16 +01:00
"""
2019-02-26 23:18:53 +01:00
gp , _ = GeneralPreferences . objects . defer ( " statutes " , " rules " , " menu " ) . get_or_create ( pk = 1 )
gp_dict = model_to_dict ( gp )
del gp_dict [ " statutes " ]
del gp_dict [ " rules " ]
del gp_dict [ " menu " ]
2019-04-28 18:35:48 +02:00
del gp_dict [ " alcohol_charter " ]
2019-02-26 23:18:53 +01:00
data = json . dumps ( gp_dict )
2018-12-23 12:06:16 +01:00
return HttpResponse ( data , content_type = ' application/json ' )
2018-12-14 09:17:56 +01:00