Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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))