# -*- coding: utf-8 -*- import operator from django.conf import settings from moneyed import CURRENCIES, DEFAULT_CURRENCY, DEFAULT_CURRENCY_CODE # The default currency, you can define this in your project's settings module # This has to be a currency object imported from moneyed DEFAULT_CURRENCY = getattr(settings, 'DEFAULT_CURRENCY', DEFAULT_CURRENCY) # The default currency choices, you can define this in your project's # settings module PROJECT_CURRENCIES = getattr(settings, 'CURRENCIES', None) CURRENCY_CHOICES = getattr(settings, 'CURRENCY_CHOICES', None) if CURRENCY_CHOICES is None: if PROJECT_CURRENCIES: CURRENCY_CHOICES = [(code, CURRENCIES[code].name) for code in PROJECT_CURRENCIES] else: CURRENCY_CHOICES = [(c.code, c.name) for i, c in CURRENCIES.items() if c.code != DEFAULT_CURRENCY_CODE] CURRENCY_CHOICES.sort(key=operator.itemgetter(1, 0)) DECIMAL_PLACES = getattr(settings, 'CURRENCY_DECIMAL_PLACES', 2)
from django import forms from django.conf import settings from moneyed import Money, CURRENCIES, DEFAULT_CURRENCY_CODE from decimal import Decimal import operator __all__ = ('InputMoneyWidget', 'CurrencySelectWidget',) PROJECT_CURRENCIES = getattr(settings, 'CURRENCIES', None) if PROJECT_CURRENCIES: CURRENCY_CHOICES = [(code, CURRENCIES[code].name) for code in PROJECT_CURRENCIES] else: CURRENCY_CHOICES = [(c.code, c.name) for i, c in CURRENCIES.items() if c.code != DEFAULT_CURRENCY_CODE] CURRENCY_CHOICES.sort(key=operator.itemgetter(1)) class CurrencySelectWidget(forms.Select): def __init__(self, attrs=None, choices=CURRENCY_CHOICES): super(CurrencySelectWidget, self).__init__(attrs, choices) class InputMoneyWidget(forms.TextInput): def __init__(self, attrs=None, currency_widget=None): self.currency_widget = currency_widget or CurrencySelectWidget() super(InputMoneyWidget, self).__init__(attrs) def render(self, name, value, attrs=None): amount = '' currency = ''