Move KFetConfigForm to kfet.config
Import in `ready` method of kfet app config of `kfet.forms` may be annoying because it starts executing `__init__` methods of fields. Causing failures if these methods does DB calls, as `ready` may be called before applying migrations.
This commit is contained in:
parent
e6fab703ee
commit
df7594a105
7 changed files with 51 additions and 63 deletions
|
@ -1,11 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
from builtins import *
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class KFetConfig(AppConfig):
|
||||
name = 'kfet'
|
||||
verbose_name = "Application K-Fêt"
|
||||
|
@ -15,5 +11,5 @@ class KFetConfig(AppConfig):
|
|||
|
||||
def register_config(self):
|
||||
import djconfig
|
||||
from kfet.forms import KFetConfigForm
|
||||
from .config import KFetConfigForm
|
||||
djconfig.register(KFetConfigForm)
|
||||
|
|
|
@ -1,9 +1,15 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db import models
|
||||
|
||||
from djconfig import config
|
||||
from djconfig.forms import ConfigForm
|
||||
|
||||
from .models import Account
|
||||
|
||||
|
||||
class KFetConfig(object):
|
||||
|
@ -19,8 +25,8 @@ class KFetConfig(object):
|
|||
if key == 'subvention_cof':
|
||||
# Allows accessing to the reduction as a subvention
|
||||
# Other reason: backward compatibility
|
||||
reduction_mult = 1 - self.reduction_cof/100
|
||||
return (1/reduction_mult - 1) * 100
|
||||
reduction_mult = 1 - self.reduction_cof / 100
|
||||
return (1 / reduction_mult - 1) * 100
|
||||
return getattr(config, self._get_dj_key(key))
|
||||
|
||||
def list(self):
|
||||
|
@ -30,8 +36,6 @@ class KFetConfig(object):
|
|||
(key, value) for each configuration entry as list.
|
||||
|
||||
"""
|
||||
# prevent circular imports
|
||||
from kfet.forms import KFetConfigForm
|
||||
return [(field.label, getattr(config, name), )
|
||||
for name, field in KFetConfigForm.base_fields.items()]
|
||||
|
||||
|
@ -46,9 +50,6 @@ class KFetConfig(object):
|
|||
Config entries are updated to given values.
|
||||
|
||||
"""
|
||||
# prevent circular imports
|
||||
from kfet.forms import KFetConfigForm
|
||||
|
||||
# get old config
|
||||
new_cfg = KFetConfigForm().initial
|
||||
# update to new config
|
||||
|
@ -69,3 +70,38 @@ class KFetConfig(object):
|
|||
|
||||
|
||||
kfet_config = KFetConfig()
|
||||
|
||||
|
||||
class KFetConfigForm(ConfigForm):
|
||||
|
||||
kfet_reduction_cof = forms.DecimalField(
|
||||
label='Réduction COF', initial=Decimal('20'),
|
||||
max_digits=6, decimal_places=2,
|
||||
help_text="Réduction, à donner en pourcentage, appliquée lors d'un "
|
||||
"achat par un-e membre du COF sur le montant en euros.",
|
||||
)
|
||||
kfet_addcost_amount = forms.DecimalField(
|
||||
label='Montant de la majoration (en €)', initial=Decimal('0'),
|
||||
required=False,
|
||||
max_digits=6, decimal_places=2,
|
||||
)
|
||||
kfet_addcost_for = forms.ModelChoiceField(
|
||||
label='Destinataire de la majoration', initial=None, required=False,
|
||||
help_text='Laissez vide pour désactiver la majoration.',
|
||||
queryset=(Account.objects
|
||||
.select_related('cofprofile', 'cofprofile__user')
|
||||
.all()),
|
||||
)
|
||||
kfet_overdraft_duration = forms.DurationField(
|
||||
label='Durée du découvert autorisé par défaut',
|
||||
initial=timedelta(days=1),
|
||||
)
|
||||
kfet_overdraft_amount = forms.DecimalField(
|
||||
label='Montant du découvert autorisé par défaut (en €)',
|
||||
initial=Decimal('20'),
|
||||
max_digits=6, decimal_places=2,
|
||||
)
|
||||
kfet_cancel_duration = forms.DurationField(
|
||||
label='Durée pour annuler une commande sans mot de passe',
|
||||
initial=timedelta(minutes=5),
|
||||
)
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
|
||||
from django import forms
|
||||
|
@ -9,8 +7,6 @@ from django.contrib.auth.models import User
|
|||
from django.forms import modelformset_factory
|
||||
from django.utils import timezone
|
||||
|
||||
from djconfig.forms import ConfigForm
|
||||
|
||||
from kfet.models import (
|
||||
Account, Checkout, Article, OperationGroup, Operation,
|
||||
CheckoutStatement, ArticleCategory, AccountNegative, Transfer,
|
||||
|
@ -370,46 +366,6 @@ class AddcostForm(forms.Form):
|
|||
super(AddcostForm, self).clean()
|
||||
|
||||
|
||||
# -----
|
||||
# Settings forms
|
||||
# -----
|
||||
|
||||
|
||||
class KFetConfigForm(ConfigForm):
|
||||
|
||||
kfet_reduction_cof = forms.DecimalField(
|
||||
label='Réduction COF', initial=Decimal('20'),
|
||||
max_digits=6, decimal_places=2,
|
||||
help_text="Réduction, à donner en pourcentage, appliquée lors d'un "
|
||||
"achat par un-e membre du COF sur le montant en euros.",
|
||||
)
|
||||
kfet_addcost_amount = forms.DecimalField(
|
||||
label='Montant de la majoration (en €)', initial=Decimal('0'),
|
||||
required=False,
|
||||
max_digits=6, decimal_places=2,
|
||||
)
|
||||
kfet_addcost_for = forms.ModelChoiceField(
|
||||
label='Destinataire de la majoration', initial=None, required=False,
|
||||
help_text='Laissez vide pour désactiver la majoration.',
|
||||
queryset=(Account.objects
|
||||
.select_related('cofprofile', 'cofprofile__user')
|
||||
.all()),
|
||||
)
|
||||
kfet_overdraft_duration = forms.DurationField(
|
||||
label='Durée du découvert autorisé par défaut',
|
||||
initial=timedelta(days=1),
|
||||
)
|
||||
kfet_overdraft_amount = forms.DecimalField(
|
||||
label='Montant du découvert autorisé par défaut (en €)',
|
||||
initial=Decimal('20'),
|
||||
max_digits=6, decimal_places=2,
|
||||
)
|
||||
kfet_cancel_duration = forms.DurationField(
|
||||
label='Durée pour annuler une commande sans mot de passe',
|
||||
initial=timedelta(minutes=5),
|
||||
)
|
||||
|
||||
|
||||
class FilterHistoryForm(forms.Form):
|
||||
checkouts = forms.ModelMultipleChoiceField(queryset=Checkout.objects.all())
|
||||
accounts = forms.ModelMultipleChoiceField(queryset=Account.objects.all())
|
||||
|
|
|
@ -4,7 +4,7 @@ from __future__ import unicode_literals
|
|||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
from kfet.forms import KFetConfigForm
|
||||
from kfet.config import KFetConfigForm
|
||||
|
||||
|
||||
def adapt_settings(apps, schema_editor):
|
||||
|
|
|
@ -16,7 +16,6 @@ import re
|
|||
from .auth import KFET_GENERIC_TRIGRAMME
|
||||
from .auth.models import GenericTeamToken, Group, Permission # noqa
|
||||
|
||||
from .config import kfet_config
|
||||
from .utils import to_ukf
|
||||
|
||||
def choices_length(choices):
|
||||
|
@ -165,6 +164,7 @@ class Account(models.Model):
|
|||
return data
|
||||
|
||||
def perms_to_perform_operation(self, amount):
|
||||
from .config import kfet_config
|
||||
overdraft_duration_max = kfet_config.overdraft_duration
|
||||
overdraft_amount_max = kfet_config.overdraft_amount
|
||||
perms = set()
|
||||
|
@ -335,6 +335,7 @@ class AccountNegative(models.Model):
|
|||
|
||||
@property
|
||||
def until_default(self):
|
||||
from .config import kfet_config
|
||||
return self.start + kfet_config.overdraft_duration
|
||||
|
||||
|
||||
|
|
|
@ -7,11 +7,10 @@ from django.core.serializers.json import DjangoJSONEncoder
|
|||
from channels.channel import Group
|
||||
from channels.generic.websockets import JsonWebsocketConsumer
|
||||
|
||||
from .config import kfet_config
|
||||
|
||||
|
||||
def to_ukf(balance, is_cof=False):
|
||||
"""Convert euro to UKF."""
|
||||
from .config import kfet_config
|
||||
subvention = kfet_config.subvention_cof
|
||||
grant = (1 + subvention / 100) if is_cof else 1
|
||||
return math.floor(balance * 10 * grant)
|
||||
|
|
|
@ -24,7 +24,7 @@ from django.utils.decorators import method_decorator
|
|||
|
||||
from gestioncof.models import CofProfile
|
||||
|
||||
from kfet.config import kfet_config
|
||||
from kfet.config import KFetConfigForm, kfet_config
|
||||
from kfet.decorators import teamkfet_required
|
||||
from kfet.models import (
|
||||
Account, Checkout, Article, AccountNegative,
|
||||
|
@ -40,7 +40,7 @@ from kfet.forms import (
|
|||
KPsulOperationGroupForm, KPsulAccountForm, KPsulCheckoutForm,
|
||||
KPsulOperationFormSet, AddcostForm, FilterHistoryForm,
|
||||
TransferFormSet, InventoryArticleForm, OrderArticleForm,
|
||||
OrderArticleToInventoryForm, CategoryForm, KFetConfigForm
|
||||
OrderArticleToInventoryForm, CategoryForm,
|
||||
)
|
||||
from collections import defaultdict
|
||||
from kfet import consumers
|
||||
|
|
Loading…
Reference in a new issue