예제 #1
0
    def submit(self, request, *args, **kwargs):
        try:
            logger.debug('ReturnViewSet.submit() - start')
            instance = self.get_object()

            with transaction.atomic():
                instance.set_submitted(request)
                instance.submitter = request.user
                instance.save()
                serializer = self.get_serializer(instance)
            logger.debug('ReturnViewSet.submit() - end')

            return Response(serializer.data)

        except serializers.ValidationError:
            delete_session_return(request.session)
            print(traceback.print_exc())
            raise
        except ValidationError as e:
            if hasattr(e, 'error_dict'):
                raise serializers.ValidationError(repr(e.error_dict))
            else:
                # raise serializers.ValidationError(repr(e[0].encode('utf-8')))
                raise serializers.ValidationError(repr(e[0]))
        except Exception as e:
            delete_session_return(request.session)
            print(traceback.print_exc())
            raise serializers.ValidationError(str(e))
예제 #2
0
    def get(self, request, *args, **kwargs):
        context = None
        try:
            the_return = get_session_return(request.session)
            # When submission is successful the payment can be invoiced. When
            # unsuccessful invoicing, the Return is submitted but unpaid.
            # ReturnService.submit_session_return_request(request)
            ReturnService.invoice_session_return_request(request)

            invoice_ref = request.GET.get('invoice')
            invoice_url = request.build_absolute_uri(
                reverse('payments:invoice-pdf',
                        kwargs={'reference': invoice_ref})
            )
            context = {
                'return': the_return,
                'invoice_ref': invoice_ref,
                'invoice_url': invoice_url
            }
            delete_session_return(request.session)

        except BaseException:
            delete_session_return(request.session)
            traceback.print_exc
            return redirect(reverse('external'))

        return render(request, self.template_name, context)
예제 #3
0
    def save_and_submit(self, request, *args, **kwargs):
        try:
            logger.debug('ReturnViewSet.save_and_submit() - start')
            instance = self.get_object()

            with transaction.atomic():

                ReturnService.store_request_details_for(instance, request)
                instance.set_submitted(request)
                instance.submitter = request.user
                instance.save()

            logger.debug('ReturnViewSet.save_and_submit() - end')

            return Response({'return_id': instance.id},
                            status=status.HTTP_200_OK)

        except serializers.ValidationError:
            delete_session_return(request.session)
            print(traceback.print_exc())
            raise
        except ValidationError as e:
            if hasattr(e, 'error_dict'):
                raise serializers.ValidationError(repr(e.error_dict))
            else:
                # raise serializers.ValidationError(repr(e[0].encode('utf-8')))
                raise serializers.ValidationError(repr(e[0]))
        except Exception as e:
            delete_session_return(request.session)
            print(traceback.print_exc())
            raise serializers.ValidationError(str(e))