lingo: remove non tracing check Regie.can_pay_only_one_basket_item (#46504)
This commit is contained in:
parent
d38d1a4347
commit
6c53fdd37f
|
@ -49,6 +49,8 @@ from .models import (Regie, BasketItem, Transaction, TransactionOperation,
|
|||
LingoBasketCell, SelfDeclaredInvoicePayment, PaymentBackend, EXPIRED)
|
||||
from .utils import signing_dumps, signing_loads
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ErrorJsonResponse(JsonResponse):
|
||||
def __init__(self, err_desc, *args, **kwargs):
|
||||
|
@ -280,7 +282,6 @@ class ValidateTransactionApiView(View):
|
|||
if not lingo_check_request_signature(request):
|
||||
return HttpResponseForbidden()
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
try:
|
||||
transaction = Transaction.objects.get(id=request.GET['transaction_id'])
|
||||
except Transaction.DoesNotExist:
|
||||
|
@ -320,7 +321,6 @@ class CancelTransactionApiView(View):
|
|||
if not lingo_check_request_signature(request):
|
||||
return HttpResponseForbidden()
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
try:
|
||||
transaction = Transaction.objects.get(id=request.GET['transaction_id'])
|
||||
except Transaction.DoesNotExist:
|
||||
|
@ -351,14 +351,19 @@ class PayMixin(object):
|
|||
def handle_payment(
|
||||
self, request, regie, items, remote_items, next_url='/', email='', firstname='',
|
||||
lastname=''):
|
||||
# preconditions
|
||||
assert bool(len(items)) != bool(len(remote_items)), (
|
||||
'there should be at least one item or remote item to pay and not both'
|
||||
)
|
||||
if regie.can_pay_only_one_basket_item:
|
||||
assert (len(items) == 1) or (len(remote_items) == 1), (
|
||||
'regie can only pay one basket item, but handle_payment() received more'
|
||||
)
|
||||
# we cannot pay items and remote_items at the same time
|
||||
if bool(len(items)) == bool(len(remote_items)):
|
||||
logger.error('lingo: there should be at least one item or remote item to pay and not both items',
|
||||
extra={'regie': str(regie), 'items': items, 'remote_items': remote_items})
|
||||
messages.error(request, _('Grouping basket items is not allowed.'))
|
||||
return HttpResponseRedirect(next_url)
|
||||
|
||||
# we cannot pay more than one item on regie with flag 'can_pay_only_one_basket_item'
|
||||
if regie.can_pay_only_one_basket_item and len(items) != 1 and len(remote_items) != 1:
|
||||
logger.error('lingo: regie can only pay one basket item, but handle_payment() received',
|
||||
extra={'regie': str(regie), 'items': items, 'remote_items': remote_items})
|
||||
messages.error(request, _('Grouping basket items is not allowed.'))
|
||||
return HttpResponseRedirect(next_url)
|
||||
|
||||
total_amount = sum([x.amount for x in remote_items or items])
|
||||
|
||||
|
@ -413,7 +418,6 @@ class PayMixin(object):
|
|||
kwargs['subject'] = remote_items[0].subject
|
||||
if regie.transaction_options:
|
||||
kwargs.update(regie.transaction_options)
|
||||
logger = logging.getLogger(__name__)
|
||||
try:
|
||||
(order_id, kind, data) = payment.request(total_amount, **kwargs)
|
||||
except eopayment.PaymentException as e:
|
||||
|
@ -470,10 +474,6 @@ class PayView(PayMixin, View):
|
|||
regie.compute_extra_fees(user=user)
|
||||
items = BasketItem.get_items_to_be_paid(user=user).filter(regie=regie)
|
||||
|
||||
if regie.can_pay_only_one_basket_item and len(items) > 1:
|
||||
messages.error(request, _('Grouping basket items is not allowed.'))
|
||||
return HttpResponseRedirect(next_url)
|
||||
|
||||
if items:
|
||||
capture_date = items[0].capture_date
|
||||
for item in items:
|
||||
|
@ -560,7 +560,6 @@ class PaymentView(View):
|
|||
return HttpResponseBadRequest("A payment backend or regie primary key must be specified")
|
||||
|
||||
payment = get_eopayment_object(request, payment_backend)
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info(u'received payment response: %r', backend_response)
|
||||
extra_info = kwargs.pop('payment_extra_info', {})
|
||||
try:
|
||||
|
|
|
@ -1555,3 +1555,25 @@ def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, regie,
|
|||
resp = app.get('/test_basket_cell/')
|
||||
assert 'foo item' not in resp.text
|
||||
assert 'bar item' in resp.text
|
||||
|
||||
|
||||
@mock.patch('combo.apps.lingo.models.BasketItem.get_items_to_be_paid')
|
||||
def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, regie, user, user_name_id, caplog):
|
||||
regie.can_pay_only_one_basket_item = True
|
||||
regie.save()
|
||||
|
||||
item = mock.Mock(spec=['capture_date'], capture_date=None)
|
||||
get_items_to_be_paid.return_value.filter.return_value = [item, item]
|
||||
|
||||
app.set_user(user)
|
||||
response = app.get('/')
|
||||
token = response.context['csrf_token']
|
||||
assert '_messages' not in app.session
|
||||
assert len(caplog.records) == 0
|
||||
response = app.post('/lingo/pay', params={
|
||||
'regie': regie.id,
|
||||
'csrfmiddlewaretoken': token,
|
||||
})
|
||||
assert 'Grouping basket items is not allowed.' in app.session['_messages']
|
||||
assert len(caplog.records) == 1
|
||||
assert 'regie can only pay one basket item' in caplog.records[0].message
|
||||
|
|
Loading…
Reference in New Issue