예제 #1
0
    def request_parameters(self):
        payer = get_payer(self.payer)

        beneficiary = get_payer(self.beneficiary)

        return {
            'payer_id': payer.get_pk(),
            'beneficiary_id': beneficiary.get_pk(),
            'tag': self.get_tag(),
            'amount': self.amount,
            'beneficiary_wallet_id': self.beneficiary_wallet_id
        }
예제 #2
0
    def request_parameters(self):
        payer = get_payer(self.payer)

        beneficiary = get_payer(self.beneficiary)

        return {
            'payer_id': payer.get_pk(),
            'beneficiary_id': beneficiary.get_pk(),
            'tag': self.get_tag(),
            'amount': self.amount,
            'beneficiary_wallet_id': self.beneficiary_wallet_id
        }
예제 #3
0
    def request_parameters(self):
        user = get_payer(self.user)

        return {
            'user_id': user.get_pk(),
            'transfer_id': self.transfer.transfer_id,
            'tag': self.get_tag()
        }
예제 #4
0
    def request_parameters(self):
        user = get_payer(self.user)

        return {
            'user_id': user.get_pk(),
            'transfer_id': self.transfer.transfer_id,
            'tag': self.get_tag()
        }
예제 #5
0
    def post(self, request, *args, **kwargs):
        self.object = self.get_object()

        self.get_context_data(object=self.object)

        self.user = self.get_user()

        self.contenttype = ContentType.objects.get_for_model(
            self.get_observed())

        self.statuses = self.get_statuses(self.get_observed())

        response = self.validate()

        if response and isinstance(response, HttpResponse):
            return response

        try:
            payer = get_payer(self.get_user())

            if 'transfer' in self.statuses and not 'transferrefund' in self.statuses:
                transfers = self.statuses.get('transfer')

                transfer_refund_list = []

                for transfer in transfers:
                    transfer_refund = TransferRefund()
                    transfer_refund.content_object = self.get_observed()
                    transfer_refund.transfer = transfer
                    transfer_refund.user = self.user
                    transfer_refund.save()

                    transfer_refund_list.append(transfer_refund)

                return self.success(transfer_refund_list)

            elif 'contribution' in self.statuses and not 'refund' in self.statuses:

                contributions = self.statuses.get('contribution')

                refund_list = []

                for contribution in contributions:
                    refund = Refund()
                    refund.content_object = self.get_observed()
                    refund.contribution = contribution
                    refund.user = self.user
                    refund.save()

                    refund_list.append(refund)

                return self.success(refund_list)

        except (DecodeError, APIError), e:
            logger_leetchi.error(e)

            return redirect(self.get_error_url())
예제 #6
0
    def post(self, request, *args, **kwargs):
        self.object = self.get_object()

        self.get_context_data(object=self.object)

        self.user = self.get_user()

        self.contenttype = ContentType.objects.get_for_model(self.get_observed())

        self.statuses = self.get_statuses(self.get_observed())

        response = self.validate()

        if response and isinstance(response, HttpResponse):
            return response

        try:
            payer = get_payer(self.get_user())

            if 'transfer' in self.statuses and not 'transferrefund' in self.statuses:
                transfers = self.statuses.get('transfer')

                transfer_refund_list = []

                for transfer in transfers:
                    transfer_refund = TransferRefund()
                    transfer_refund.content_object = self.get_observed()
                    transfer_refund.transfer = transfer
                    transfer_refund.user = self.user
                    transfer_refund.save()

                    transfer_refund_list.append(transfer_refund)

                return self.success(transfer_refund_list)

            elif 'contribution' in self.statuses and not 'refund' in self.statuses:

                contributions = self.statuses.get('contribution')

                refund_list = []

                for contribution in contributions:
                    refund = Refund()
                    refund.content_object = self.get_observed()
                    refund.contribution = contribution
                    refund.user = self.user
                    refund.save()

                    refund_list.append(refund)

                return self.success(refund_list)

        except (DecodeError, APIError), e:
            logger_leetchi.error(e)

            return redirect(self.get_error_url())
예제 #7
0
    def clean_amount(self):
        payer = get_payer(self.payer)

        amount = self.cleaned_data.get('amount')

        if not self.is_personal_amount_enough(payer, amount):
            raise forms.ValidationError(_('Your personal amount %(personal_amount)s is not enough to make this transfer %(amount)s' % {
                'personal_amount': payer.personal_wallet_amount_converted,
                'amount': amount
            }))

        return amount
예제 #8
0
    def clean_amount(self):
        payer = get_payer(self.payer)

        amount = self.cleaned_data.get('amount')

        if not self.is_personal_amount_enough(payer, amount):
            raise forms.ValidationError(
                _(
                    'Your personal amount %(personal_amount)s is not enough to make this transfer %(amount)s'
                    % {
                        'personal_amount':
                        payer.personal_wallet_amount_converted,
                        'amount': amount
                    }))

        return amount
예제 #9
0
    def request_parameters(self):
        user = get_payer(self.user)

        data = {
            'user_id': user.get_pk(),
            'amount': self.amount,
            'client_fee_amount': self.client_fee_amount,
            'return_url': self.return_url,
            'wallet_id': self.wallet_id,
            'tag': self.get_tag(),
            'template_url': self.template_url
        }

        if self.type:
            data['type'] = self.get_type_display()

        return data
예제 #10
0
    def request_parameters(self):
        user = get_payer(self.user)

        data = {
            'user_id': user.get_pk(),
            'amount': self.amount,
            'client_fee_amount': self.client_fee_amount,
            'return_url': self.return_url,
            'wallet_id': self.wallet_id,
            'tag': self.get_tag(),
            'template_url': self.template_url
        }

        if self.type:
            data['type'] = self.get_type_display()

        return data
예제 #11
0
    def get(self, request, *args, **kwargs):

        try:
            contribution_id = request.GET.get('ContributionID', None)

            if contribution_id:
                contribution_id = int(contribution_id)

                try:
                    contribution = Contribution.objects.get(
                        contribution=contribution_id)
                except Contribution.DoesNotExist:
                    pass
                else:
                    contribution.sync_status()

                    if contribution.is_error():
                        return redirect(
                            self.get_error_url(leetchi_contribution))

            payer = get_payer(request.user)

            wallet = get_wallet(self.get_object())

            personal_amount = payer.personal_wallet_amount

            amount = int(self.get_amount() * 100)

            if personal_amount < amount:
                return self.redirect_payment_error(request)

            transfer = Transfer()
            transfer.content_object = self.get_observed()
            transfer.amount = amount
            transfer.payer = self.get_payer()
            transfer.beneficiary = self.get_beneficiary()
            transfer.beneficiary_wallet = wallet
            transfer.save()

        except (APIError, DecodeError), e:
            logger_leetchi.error(e)

            return redirect(self.get_payment_error_url())
예제 #12
0
    def get(self, request, *args, **kwargs):
        user = request.user

        try:
            payer = get_payer(user)

            wallet = get_wallet(self.get_object())

            personal_wallet_amount = payer.personal_wallet_amount or 0

            amount = int(self.get_amount() * 100)

            if amount > personal_wallet_amount:
                return_url = self.get_return_url()

                real_amount = amount - personal_wallet_amount

                contribution = Contribution()
                contribution.content_object = self.get_observed()
                contribution.user = self.request.user
                contribution.wallet_id = 0
                contribution.amount = real_amount
                contribution.return_url = return_url
                contribution.type = self.get_type()
                contribution.culture = get_current_lang()

                template_url = self.get_template_url()

                if template_url:
                    contribution.template_url = template_url

                contribution.save()

                return redirect(self.get_success_url(contribution))

            return redirect(self.get_return_url())

        except (APIError, DecodeError), e:
            logger_leetchi.error(e)

            return redirect(self.get_error_url())
예제 #13
0
    def get(self, request, *args, **kwargs):

        try:
            contribution_id = request.GET.get('ContributionID', None)

            if contribution_id:
                contribution_id = int(contribution_id)

                try:
                    contribution = Contribution.objects.get(contribution=contribution_id)
                except Contribution.DoesNotExist:
                    pass
                else:
                    contribution.sync_status()

                    if contribution.is_error():
                        return redirect(self.get_error_url(leetchi_contribution))

            payer = get_payer(request.user)

            wallet = get_wallet(self.get_object())

            personal_amount = payer.personal_wallet_amount

            amount = int(self.get_amount() * 100)

            if personal_amount < amount:
                return self.redirect_payment_error(request)

            transfer = Transfer()
            transfer.content_object = self.get_observed()
            transfer.amount = amount
            transfer.payer = self.get_payer()
            transfer.beneficiary = self.get_beneficiary()
            transfer.beneficiary_wallet = wallet
            transfer.save()

        except (APIError, DecodeError), e:
            logger_leetchi.error(e)

            return redirect(self.get_payment_error_url())
예제 #14
0
    def get(self, request, *args, **kwargs):
        user = request.user

        try:
            payer = get_payer(user)

            wallet = get_wallet(self.get_object())

            personal_wallet_amount = payer.personal_wallet_amount or 0

            amount = int(self.get_amount() * 100)

            if amount > personal_wallet_amount:
                return_url = self.get_return_url()

                real_amount = amount - personal_wallet_amount

                contribution = Contribution()
                contribution.content_object = self.get_observed()
                contribution.user = self.request.user
                contribution.wallet_id = 0
                contribution.amount = real_amount
                contribution.return_url = return_url
                contribution.type = self.get_type()
                contribution.culture = get_current_lang()

                template_url = self.get_template_url()

                if template_url:
                    contribution.template_url = template_url

                contribution.save()

                return redirect(self.get_success_url(contribution))

            return redirect(self.get_return_url())

        except (APIError, DecodeError), e:
            logger_leetchi.error(e)

            return redirect(self.get_error_url())
예제 #15
0
 def request_parameters(self):
     return {
         'user_id': get_payer(self.user).get_pk(),
         'contribution_id': self.contribution.contribution_id,
         'tag': self.get_tag()
     }
예제 #16
0
 def request_parameters(self):
     return {
         'user_id': get_payer(self.user).get_pk(),
         'contribution_id': self.contribution.contribution_id,
         'tag': self.get_tag()
     }