price comparison improved

This commit is contained in:
Tobias Brunner 2025-05-30 13:36:09 +02:00
parent e06105942b
commit d987f62471
No known key found for this signature in database
3 changed files with 68 additions and 46 deletions

View file

@ -16,9 +16,9 @@ def natural_sort_key(name):
def get_external_price_comparisons(plan, appcat_price, currency, service_level):
"""Get external price comparisons for a specific compute plan and service"""
try:
# Filter by service level if external price has one set
# Filter by service level if external price has one set, ignore currency for comparison
external_prices = ExternalPricePlans.objects.filter(
compare_to=plan, service=appcat_price.service, currency=currency
compare_to=plan, service=appcat_price.service
).select_related("cloud_provider")
# Filter by service level if the external price has it configured
@ -208,29 +208,28 @@ def pricelist(request):
external_prices = get_external_price_comparisons(
plan, appcat_price, currency, service_level
)
for ext_price in external_prices:
price_difference = float(ext_price.amount) - float(
final_price
)
price_ratio = (
float(ext_price.amount) / float(final_price)
if final_price > 0
else None
# Calculate price difference using external price currency
difference = ext_price.amount - final_price
ratio = (
ext_price.amount / final_price if final_price > 0 else 0
)
external_comparisons.append(
{
"provider": ext_price.cloud_provider.name,
"plan_name": ext_price.plan_name,
"amount": ext_price.amount,
"difference": price_difference,
"ratio": price_ratio,
"provider": ext_price.cloud_provider.name,
"description": ext_price.description,
"amount": ext_price.amount,
"currency": ext_price.currency, # Use external price currency
"vcpus": ext_price.vcpus,
"ram": ext_price.ram,
"storage": ext_price.storage,
"replicas": ext_price.replicas,
"difference": difference,
"ratio": ratio,
"source": ext_price.source,
"date_retrieved": ext_price.date_retrieved,
}
)