clean Money migrations!

This commit is contained in:
Matthias 2021-07-01 07:07:02 +02:00
parent ea8b102897
commit 4d86f33e23

View File

@ -11,13 +11,14 @@ from django.forms.fields import URLField as FormURLField
from django.db import models as models from django.db import models as models
from django.core import validators from django.core import validators
from django import forms from django import forms
from django.conf import settings
from decimal import Decimal from decimal import Decimal
from djmoney.models.fields import MoneyField as ModelMoneyField from djmoney.models.fields import MoneyField as ModelMoneyField
from djmoney.forms.fields import MoneyField from djmoney.forms.fields import MoneyField
import InvenTree.helpers import InvenTree.helpers
from common.settings import currency_code_default import common.settings
class InvenTreeURLFormField(FormURLField): class InvenTreeURLFormField(FormURLField):
@ -38,20 +39,27 @@ class InvenTreeURLField(models.URLField):
class InvenTreeModelMoneyField(ModelMoneyField): class InvenTreeModelMoneyField(ModelMoneyField):
""" custom MoneyField for clean migrations while havoing dynamic currency settings """
def __init__(self, **kwargs): def __init__(self, **kwargs):
default_currency = currency_code_default # remove currency information for a clean migration
kwargs['default_currency'] = ''
kwargs['currency_choices'] = []
# remove from kwargs if set super().__init__(**kwargs)
if 'default_currency' in kwargs:
default_currency = kwargs['default_currency']
kwargs.pop('default_currency')
super().__init__(default_currency=default_currency, **kwargs) def formfield(self, **kwargs):
pass """ override form class to use own function """
kwargs['form_class'] = InvenTreeMoneyField
return super().formfield(**kwargs)
class InvenTreeMoneyField(MoneyField): class InvenTreeMoneyField(MoneyField):
pass """ custom MoneyField for clean migrations while havoing dynamic currency settings """
def __init__(self, *args, **kwargs):
# override initial values with the real info from database
kwargs['currency_choices'] = [(a, a) for a in settings.CURRENCIES]
kwargs['default_currency'] = common.settings.currency_code_default
super().__init__(*args, **kwargs)
class DatePickerFormField(forms.DateField): class DatePickerFormField(forms.DateField):