Commit f806b09c by Yvon Kerdoncuff

prevent adding shift in a period of time where member benefits from a exempting…

prevent adding shift in a period of time where member benefits from a exempting leave, from member space
parent 681b110c
Pipeline #4122 failed with stage
in 0 seconds
......@@ -110,9 +110,13 @@ function add_or_change_shift(new_shift_id) {
} else {
closeModal();
selected_shift = null;
alert(`Une erreur est survenue. ` +
if(data.msg) {
alert(data.msg)
} else {
alert(`Une erreur est survenue. ` +
`Il est néanmoins possible que la requête ait abouti, ` +
`veuillez patienter quelques secondes puis vérifier vos services enregistrés.`);
}
// Refectch shifts anyway, if registration/exchange was still succesful
setTimeout(() => {
......
......@@ -169,6 +169,32 @@ class CagetteShift(models.Model):
fields = ['stop_date', 'id', 'start_date']
return self.o_api.search_read('shift.leave', cond, fields)
def check_new_shift_not_in_exempting_leave(self, shift_id, partner_id):
leaves = self.find_active_exempting_leaves_during_shift(shift_id, partner_id)
if leaves:
leave = leaves[0]
message = "Ce choix est impossible car vous serez exempté à cette date."
now = datetime.datetime.now()
if leave['start_date'] > now.isoformat():
message = message + " Vous pouvez choisir une date avant le " + leave['start_date']
if leave['stop_date']:
message = message + " Vous pouvez choisir une date après le " + leave['stop_date']
return message
return None
def find_active_exempting_leaves_during_shift(self, shift_id, partner_id):
shift_date = self.o_api.search_read('shift.shift',
[['id', '=', shift_id]],
['date_begin']
)[0]['date_begin']
cond = [['partner_id', '=', partner_id],
['partner_state', '=', 'exempted'],
['start_date', '<=', shift_date],
'|',
['stop_date', '>=', shift_date],
['stop_date', '=', False]]
return self.o_api.search_read('shift.leave', cond, ['start_date', 'stop_date'])
def get_shift_ticket(self,idShift, shift_type):
"""Récupérer le shift_ticket suivant le membre et flotant ou pas"""
if getattr(settings, 'USE_STANDARD_SHIFT', True) == False:
......
......@@ -108,16 +108,21 @@ def get_list_shift_partner(request, partner_id):
def change_shift(request):
if 'verif_token' in request.POST:
if Verification.verif_token(request.POST.get('verif_token'), int(request.POST.get('idPartner'))) is True:
idPartner = int(request.POST.get('idPartner'))
if Verification.verif_token(request.POST.get('verif_token'), idPartner) is True:
cs = CagetteShift()
if 'idNewShift' in request.POST and 'idOldShift' in request.POST:
idNewShift = int(request.POST['idNewShift'])
# Make sure the new shift is not inside an exempted leave period
in_exempting_leave_msg = cs.check_new_shift_not_in_exempting_leave(idNewShift,idPartner)
if in_exempting_leave_msg:
response = {'msg': in_exempting_leave_msg}
return JsonResponse(response, status=200)
idOldShift = request.POST['idOldShift']
listRegister = [int(request.POST['idRegister'])]
data = {
"idPartner": int(request.POST['idPartner']),
"idShift": int(request.POST['idNewShift']),
"idPartner": idPartner,
"idShift": idNewShift,
"shift_type": request.POST['shift_type'],
"is_makeup": cs.shift_is_makeup(listRegister[0]),
"origin": "Espace membre : changement de service"
......@@ -204,6 +209,10 @@ def add_shift(request):
if 'idNewShift' in request.POST and 'idPartner' in request.POST:
partner_id = int(request.POST['idPartner'])
id_shift = int(request.POST['idNewShift'])
in_exempting_leave_msg = cs.check_new_shift_not_in_exempting_leave(id_shift,partner_id)
if in_exempting_leave_msg:
response = {'result': False, 'msg': in_exempting_leave_msg}
return JsonResponse(response, status=200)
data = {
"idPartner": partner_id,
"idShift": id_shift,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment