yuyu_dashboard/yuyu/cases/pricing_use_case.py
2022-05-13 14:01:58 +07:00

41 lines
No EOL
1.6 KiB
Python

from django.conf import settings
from djmoney.money import Money
from openstack_dashboard.dashboards.yuyu.core import yuyu_client
class PricingUseCase:
pricing_name = ""
def clean_price_response(self, response_data):
response_data["hourly_price"] = Money(amount=response_data['hourly_price'],
currency=response_data['hourly_price_currency'])
if response_data['monthly_price'] and response_data['monthly_price_currency']:
response_data["monthly_price"] = Money(amount=response_data['monthly_price'],
currency=response_data['monthly_price_currency'])
else:
response_data["monthly_price"] = Money(currency=settings.DEFAULT_CURRENCY)
return response_data
def create(self, request, payload):
return yuyu_client.post(request, f"price/{self.pricing_name}/", payload).json()
def update(self, request, id, payload):
return yuyu_client.patch(request, f"price/{self.pricing_name}/{id}/", payload).json()
def delete(self, request, id):
return yuyu_client.delete(request, f"price/{self.pricing_name}/{id}/")
def list(self, request):
response = yuyu_client.get(request, f"price/{self.pricing_name}/")
data = list(map(lambda f: self.clean_price_response(f), response.json()))
return data
def get(self, request, id):
data = yuyu_client.get(request, f"price/{self.pricing_name}/{id}/").json()
data = self.clean_price_response(data)
return data
def has_missing_price(self, request):
return len(self.list(request)) == 0