0009-pricing-new-method-get_pricing_data-for-flat_fee_sch.patch
lingo/pricing/models.py | ||
---|---|---|
399 | 399 | |
400 | 400 |
return created, agenda_pricing |
401 | 401 | |
402 |
def get_pricing_data(self, request, user_external_id, adult_external_id, subscription=None): |
|
403 |
# compute pricing for flat_fee_schedule mode |
|
404 |
# subscription is None if subscription_required is False |
|
405 |
data = { |
|
406 |
'subscription': subscription, |
|
407 |
} |
|
408 |
context = self.get_pricing_context( |
|
409 |
request=request, |
|
410 |
data=data, |
|
411 |
user_external_id=user_external_id, |
|
412 |
adult_external_id=adult_external_id, |
|
413 |
) |
|
414 |
pricing, criterias = self.compute_pricing(context=context) |
|
415 |
return { |
|
416 |
'pricing': pricing, |
|
417 |
'calculation_details': { |
|
418 |
'pricing': pricing, |
|
419 |
'criterias': criterias, |
|
420 |
'context': context, |
|
421 |
}, |
|
422 |
} |
|
423 | ||
402 | 424 |
def get_pricing_data_for_event( |
403 | 425 |
self, request, agenda, event, subscription, check_status, booking, user_external_id, adult_external_id |
404 | 426 |
): |
tests/pricing/test_models.py | ||
---|---|---|
927 | 927 |
} |
928 | 928 | |
929 | 929 | |
930 |
def test_get_pricing_data(context): |
|
931 |
agenda = Agenda.objects.create(label='Foo bar') |
|
932 |
category = CriteriaCategory.objects.create(label='Foo', slug='foo') |
|
933 |
criteria = Criteria.objects.create(label='Bar', slug='bar', condition='True', category=category) |
|
934 |
pricing = Pricing.objects.create( |
|
935 |
label='Foo bar', |
|
936 |
extra_variables={ |
|
937 |
'domicile': 'commune', |
|
938 |
'qf': '2', |
|
939 |
}, |
|
940 |
) |
|
941 |
pricing.criterias.add(criteria) |
|
942 |
pricing.categories.add(category, through_defaults={'order': 1}) |
|
943 |
agenda_pricing = AgendaPricing.objects.create( |
|
944 |
pricing=pricing, |
|
945 |
date_start=datetime.date(year=2021, month=9, day=1), |
|
946 |
date_end=datetime.date(year=2021, month=10, day=1), |
|
947 |
pricing_data={ |
|
948 |
'foo:bar': 42, |
|
949 |
}, |
|
950 |
) |
|
951 |
agenda_pricing.agendas.add(agenda) |
|
952 |
for subscription in [None, {'foo': 'bar'}]: |
|
953 |
assert agenda_pricing.get_pricing_data( |
|
954 |
request=context['request'], |
|
955 |
subscription=subscription, |
|
956 |
user_external_id='child:42', |
|
957 |
adult_external_id='parent:35', |
|
958 |
) == { |
|
959 |
'pricing': 42, |
|
960 |
'calculation_details': { |
|
961 |
'pricing': 42, |
|
962 |
'criterias': {'foo': 'bar'}, |
|
963 |
'context': {'domicile': 'commune', 'qf': '2'}, |
|
964 |
}, |
|
965 |
} |
|
966 | ||
967 | ||
930 | 968 |
def test_get_pricing_data_for_event(context): |
931 | 969 |
agenda = Agenda.objects.create(label='Foo bar') |
932 | 970 |
category = CriteriaCategory.objects.create(label='Foo', slug='foo') |
933 |
- |