def partial_update(self, request, pk=None): serializer = MemberPartialSerializer(data=request.data) if serializer.is_valid(): response = self.dolibarr.get( model='members/{}'.format(pk), api_key=request.user.profile.dolibarr_token) # Validate / modify data (serialize to match Dolibarr formats) data = Member.validate_data(request.data, mode='update', base_options=response['array_options']) try: # Envoi mail lorsque l'option "Je souhaite être informé..." à été modifiée if (response['array_options']['options_recevoir_actus'] != data['array_options']['options_recevoir_actus']): Member.send_mail_newsletter( login=str(request.user), profile=request.user.profile, new_status=data['array_options'] ['options_recevoir_actus'], lang=response['array_options']['options_langue']) # Envoi mail lorsque l'option "Je souhaite être informé..." à été modifiée if (response['array_options'] ['options_prelevement_change_montant'] != data['array_options'] ['options_prelevement_change_montant']): Member.send_mail_change_auto( login=str(request.user), profile=request.user.profile, mode=data['mode'], new_amount=data['array_options'] ['options_prelevement_change_montant'], comment=data['prelevement_change_comment'], lang=response['array_options']['options_langue']) except KeyError: pass else: log.critical(serializer.errors) return Response( { 'error': 'Oops! Something is wrong in your request data: {}'.format( serializer.errors) }, status=status.HTTP_400_BAD_REQUEST) return Response( self.dolibarr.patch(model='members/{}'.format(pk), data=data, api_key=request.user.profile.dolibarr_token))
def partial_update(self, request, pk=None): serializer = MemberPartialSerializer(data=request.data) if serializer.is_valid(): member = self.dolibarr.get(model='members/{}'.format(pk), api_key=request.user.profile.dolibarr_token) # Validate / modify data (serialize to match Dolibarr formats) data = Member.validate_data(request.data, mode='update', base_options=member['array_options']) try: # Envoi d'un email lorsque l'option "Recevoir les actualités liées à l'Eusko" est modifiée if (member['array_options']['options_recevoir_actus'] != data['array_options']['options_recevoir_actus']): Member.send_mail_newsletter( login=str(request.user), profile=request.user.profile, new_status=data['array_options']['options_recevoir_actus'], lang=member['array_options']['options_langue']) # Envoi d'un email lorsque l'option "Montant du change automatique" est modifiée if (float(member['array_options']['options_prelevement_change_montant']) != float(data['array_options']['options_prelevement_change_montant'])): Member.send_mail_change_auto( login=str(request.user), profile=request.user.profile, mode=data['mode'], new_amount=data['array_options']['options_prelevement_change_montant'], comment=data['prelevement_change_comment'], email=member['email'], lang=member['array_options']['options_langue']) # Envoi d'un email lorsque l'option "IBAN" est modifiée. if (member['array_options']['options_iban'] != data['array_options']['options_iban']): sujet = _("Modification de l'IBAN pour le change automatique mensuel") texte = render_to_string('mails/modification_iban.txt', {'dolibarr_member': member, 'nouvel_iban': data['array_options']['options_iban']}).strip('\n') sendmail_euskalmoneta(subject=sujet, body=texte) except KeyError: pass else: log.critical(serializer.errors) return Response({'error': 'Oops! Something is wrong in your request data: {}'.format(serializer.errors)}, status=status.HTTP_400_BAD_REQUEST) return Response(self.dolibarr.put(model='members/{}'.format(pk), data=data, api_key=request.user.profile.dolibarr_token))