Exemple #1
0
 def post(self, request, format=None):
     data = request.data
     email = data.get('email', None)
     if email:
         response, response_status = mautic_api.getContactByEmail(email)
         if response_status == 200:
             contacts = response['contacts']
             if contacts:
                 mautic_id = list(contacts.keys())[0]
                 response, response_status = mautic_api.sendEmail(
                     settings.MAIL_TEMPLATES['EDIT_SUBSCRIPTIPNS'],
                     mautic_id, {})
                 return Response({'msg': 'mail sent'})
             else:
                 subscriber = models.Subscriber.objects.create()
                 subscriber.save()
                 response, response_status = subscriber.save_to_mautic(
                     email)
                 if response_status != 200:
                     return Response({'msg': response},
                                     status=response_status)
                 else:
                     response, response_status = mautic_api.sendEmail(
                         settings.MAIL_TEMPLATES['WELLCOME_MAIL'],
                         subscriber.mautic_id, {})
                     return Response({'msg': 'mail sent'})
         else:
             return Response({'msg': response}, status=response_status)
     return Response({'error': 'Missing email and/or token.'},
                     status=status.HTTP_409_CONFLICT)
Exemple #2
0
    def send_mail(self, email, title, body, name):
        print("send mail")
        pdf = self.get_pdf()
        if pdf[0]:

            response, response_status = mautic_api.saveFile(
                'racun.pdf', pdf[1])
            response, response_status = mautic_api.saveAsset(
                'racun', response['file']['name'])
            asset_id = response['asset']['id']

            response_contact, response_status = mautic_api.createContact(
                email, name, '')
            response_mail, response_status = mautic_api.createEmail(
                'racun-' + email,
                '',
                title,
                body,
                'To je mail z racunom',
                assetAttachments=[asset_id])
            mautic_api.sendEmail(response_mail['email']['id'],
                                 response_contact['contact']['id'], {})

            return True, 'Sent'
        else:
            return False, 'Cannot get pdf'
Exemple #3
0
 def save_to_mautic(self, email, send_email=True):
     response, response_status = mautic_api.createContact(email=email, name=self.name, token=self.token)
     if response_status == 200:
         self.mautic_id = response['contact']['id']
         self.save()
         if send_email:
             response, response_status = mautic_api.sendEmail(
                 settings.MAIL_TEMPLATES['WELLCOME_MAIL'],
                 response['contact']['id'],
                 {
                     'unsubscribe_text': 'asdasd'
                 }
             )
         return self, 200
     else:
         return response, response_status
Exemple #4
0
    def post(self, request):
        data = request.data
        owner_token = data.get('owner_token', None)

        gift_email = data.get('gift_email', None)
        subscriber_token = data.get('subscriber_token')
        name = data.get('name', None)
        message = data.get('message', None)

        subscriber = models.Subscriber.objects.get(token=owner_token)

        new_subscriber = models.Subscriber.objects.get(token=subscriber_token)
        donation = models.Donation.objects.filter(subscriber=new_subscriber)
        if donation:
            donation = donation[0]
            if donation.is_assigned:
                return Response({
                    'msg': 'donation is already assigned',
                },
                                status=status.HTTP_409_CONFLICT)
            mautic_id = None
            response, response_status = mautic_api.getContactByEmail(
                gift_email)
            if response_status == 200:
                contacts = response['contacts']
            else:
                return Response({'msg': response}, status=response_status)
            if contacts:
                mautic_id = list(contacts.keys())[0]
            else:
                print('dodaj novga')
                new_subscriber.name = name
                new_subscriber.save()
                response, response_status = new_subscriber.save_to_mautic(
                    gift_email, send_email=False)

                if response_status != 200:
                    return Response({'msg': response}, status=response_status)

                mautic_id = new_subscriber.mautic_id

            print(mautic_id)
            message = message.replace('\n', '<br>')
            if name:
                message = name + '!<br><br>' + message
            message = message + '<br>' + subscriber.name + '<br><br>Danes je nov dar! <3'
            response, response_status = mautic_api.sendEmail(
                settings.MAIL_TEMPLATES['CUSTOM_GIFT'], mautic_id, {
                    'tokens': {
                        'message': message,
                        'sender_name': subscriber.name,
                        'upload_image': donation.image.get_upload_url()
                    }
                })
            if response_status == 200:
                donation.is_assigned = True
                donation.save()
            else:
                return Response(
                    {'msg': 'cannot send message, please try again'},
                    status=status.HTTP_409_CONFLICT)

            if subscriber.gifts.last().gifts.filter(
                    is_assigned=False).count() == 0:
                response, response_status = mautic_api.sendEmail(
                    settings.MAIL_TEMPLATES['GIFT_SENT'], subscriber.mautic_id,
                    {})
                pass

            return Response({
                'msg': 'Gift was sent',
            })
        return Response({
            'msg': 'donation was not found',
        },
                        status=status.HTTP_409_CONFLICT)
Exemple #5
0
    def post(self, request):
        data = request.data
        nonce = data.get('nonce', None)
        gifts_amounts = data.get('gifts_amounts', [])
        email = data.get('email', None)
        amount = data.get('amount', None)
        name = data.get('name', '')
        add_to_mailing = data.get('mailing', False)
        address = data.get('address', '')

        # if nonce not present deny
        if not nonce:
            return Response({'msg': 'Missing nonce.'},
                            status=status.HTTP_400_BAD_REQUEST)

        # if email not present, try to pay
        if not email:
            # if no amount deny
            if not amount:
                return Response({'msg': 'Missing amount.'},
                                status=status.HTTP_400_BAD_REQUEST)
            # if no gifts_amounts deny
            if not gifts_amounts:
                return Response({'msg': 'Missing gifts_amounts.'},
                                status=status.HTTP_400_BAD_REQUEST)

            result = payment.pay_bt_3d(nonce, float(amount), taxExempt=True)
            new_subscribers = []
            if result.is_success:
                # create donation and image object without subscriber
                new_gift = models.Gift(amount=amount, nonce=nonce)
                new_gift.save()
                for gift_amount in gifts_amounts:
                    new_subscriber = models.Subscriber.objects.create()
                    new_subscriber.save()
                    donation = models.Donation(amount=gift_amount,
                                               subscriber=new_subscriber,
                                               is_assigned=False)
                    donation.save()
                    image = models.Image(donation=donation)
                    image.save()
                    new_gift.gifts.add(donation)
                    new_subscribers.append({
                        'subscriber_token': new_subscriber.token,
                        'amount': gift_amount
                    })

                return Response({
                    'msg': 'Thanks <3',
                    'nonce': nonce,
                    'gifts': new_subscribers
                })
            else:
                return Response({'msg': result.message},
                                status=status.HTTP_400_BAD_REQUEST)

        # email and nonce are both present
        response, response_status = mautic_api.getContactByEmail(email)
        if response_status == 200:
            contacts = response['contacts']
        else:
            # something went wrong with mautic, return
            return Response({'msg': response}, status=response_status)
        print(contacts)
        mautic_id = None
        if contacts:
            # subscriber exists on mautic
            mautic_id = list(contacts.keys())[0]
            subscriber = models.Subscriber.objects.get(mautic_id=mautic_id)
            subscriber.name = name
            subscriber.address = address
            subscriber.save()
        else:
            # subscriber does not exist on mautic
            subscriber = models.Subscriber.objects.create(name=name,
                                                          address=address)
            subscriber.save()
            response, response_status = subscriber.save_to_mautic(
                email, send_email=False)
            if response_status != 200:
                # something went wrong with saving to mautic, abort
                return Response({'msg': response}, status=response_status)
            mautic_id = subscriber.mautic_id

        # add to mailing if they agreed
        if add_to_mailing:
            segment_id = settings.SEGMENTS.get('donations', None)
            response, response_status = mautic_api.addContactToASegment(
                segment_id, mautic_id)

        # finally connect gift to person
        gift = models.Gift.objects.get(nonce=nonce)
        gift.subscriber = subscriber
        gift.save()
        if gift.amount < 11:
            response, response_status = mautic_api.sendEmail(
                settings.MAIL_TEMPLATES['GIFT_WITHOUT_GIFT'], mautic_id, {})
        else:
            response, response_status = mautic_api.sendEmail(
                settings.MAIL_TEMPLATES['GIFT_WITH_GIFT'], mautic_id, {})

        try:
            msg = (name if name else
                   'Dinozaver') + ' nam je podarila donacijo v višini: ' + str(
                       gift.amount)
            sc.api_call("chat.postMessage",
                        json={
                            'channel': "#danesjenovdan_si",
                            'text': msg
                        })
        except:
            pass

        return Response({'msg': 'Thanks <3', 'owner_token': subscriber.token})
Exemple #6
0
    def post(self, request):
        data = request.data
        nonce = data.get('nonce', None)
        amount = data.get('amount', None)
        email = data.get('email', None)
        name = data.get('name', '')
        add_to_mailing = data.get('mailing', False)
        address = data.get('address', '')

        # if nonce not present deny
        if not nonce:
            return Response({'msg': 'Missing nonce.'},
                            status=status.HTTP_400_BAD_REQUEST)

        # if email not present, try to pay
        if not email:
            # if no amount deny
            if not amount:
                return Response({'msg': 'Missing amount.'},
                                status=status.HTTP_400_BAD_REQUEST)

            result = payment.create_subscription(nonce, float(amount))
            if result.is_success:
                # create donation without subscriber
                subscriber = models.Subscriber.objects.get(nonce=nonce)
                donation = models.Donation(amount=amount,
                                           nonce=nonce,
                                           subscriber=subscriber)
                donation.save()

                return Response({
                    'msg': 'Thanks <3',
                    'nonce': nonce,
                })
            else:
                return Response({'msg': result.message},
                                status=status.HTTP_400_BAD_REQUEST)

        # email and nonce are both present
        response, response_status = mautic_api.getContactByEmail(email)
        if response_status == 200:
            contacts = response['contacts']
        else:
            # something went wrong with mautic, return
            return Response({'msg': response}, status=response_status)
        print(contacts)
        mautic_id = None
        if contacts:
            # subscriber exists on mautic
            mautic_id = list(contacts.keys())[0]
            subscriber = models.Subscriber.objects.get(mautic_id=mautic_id)
            subscriber.name = name
            subscriber.address = address
            subscriber.nonce = nonce
            subscriber.save()
        else:
            # subscriber does not exist on mautic
            subscriber = models.Subscriber.objects.create(name=name,
                                                          address=address,
                                                          nonce=nonce)
            subscriber.save()
            response, response_status = subscriber.save_to_mautic(
                email, send_email=False)
            if response_status != 200:
                # something went wrong with saving to mautic, abort
                return Response({'msg': response}, status=response_status)
            mautic_id = subscriber.mautic_id

        # add to mailing if they agreed
        if add_to_mailing:
            segment_id = settings.SEGMENTS.get('donations', None)
            response, response_status = mautic_api.addContactToASegment(
                segment_id, mautic_id)

        # Send email thanks for donation
        response, response_status = mautic_api.sendEmail(
            settings.MAIL_TEMPLATES['DONATION_WITHOUT_GIFT'],
            subscriber.mautic_id, {})

        try:
            msg = (name if name else 'Dinozaverka'
                   ) + ' nam je podarila mesečno donacijo v višini: ' + str(
                       donation.amount)
            sc.api_call("chat.postMessage",
                        json={
                            'channel': "#danesjenovdan_si",
                            'text': msg
                        })
        except:
            pass

        return Response({'msg': 'saved'})