forked from DGNum/gestioCOF
PEP8 for perform_operation
This commit is contained in:
parent
a107fa0309
commit
de724a2c0d
1 changed files with 54 additions and 39 deletions
|
@ -921,13 +921,14 @@ def kpsul_update_addcost(request):
|
|||
addcost_form = AddcostForm(request.POST)
|
||||
|
||||
if not addcost_form.is_valid():
|
||||
data = { 'errors': { 'addcost': list(addcost_form.errors) } }
|
||||
data = {'errors': {'addcost': list(addcost_form.errors)}}
|
||||
return JsonResponse(data, status=400)
|
||||
required_perms = ['kfet.manage_addcosts']
|
||||
if not request.user.has_perms(required_perms):
|
||||
data = {
|
||||
'errors': {
|
||||
'missing_perms': get_missing_perms(required_perms, request.user)
|
||||
'missing_perms': get_missing_perms(required_perms,
|
||||
request.user)
|
||||
}
|
||||
}
|
||||
return JsonResponse(data, status=403)
|
||||
|
@ -935,7 +936,8 @@ def kpsul_update_addcost(request):
|
|||
trigramme = addcost_form.cleaned_data['trigramme']
|
||||
account = trigramme and Account.objects.get(trigramme=trigramme) or None
|
||||
Settings.objects.filter(name='ADDCOST_FOR').update(value_account=account)
|
||||
Settings.objects.filter(name='ADDCOST_AMOUNT').update(value_decimal=addcost_form.cleaned_data['amount'])
|
||||
(Settings.objects.filter(name='ADDCOST_AMOUNT')
|
||||
.update(value_decimal=addcost_form.cleaned_data['amount']))
|
||||
cache.delete('ADDCOST_FOR')
|
||||
cache.delete('ADDCOST_AMOUNT')
|
||||
data = {
|
||||
|
@ -947,20 +949,23 @@ def kpsul_update_addcost(request):
|
|||
consumers.KPsul.group_send('kfet.kpsul', data)
|
||||
return JsonResponse(data)
|
||||
|
||||
|
||||
def get_missing_perms(required_perms, user):
|
||||
missing_perms_codenames = [ (perm.split('.'))[1]
|
||||
for perm in required_perms if not user.has_perm(perm)]
|
||||
missing_perms_codenames = [(perm.split('.'))[1]
|
||||
for perm in required_perms
|
||||
if not user.has_perm(perm)]
|
||||
missing_perms = list(
|
||||
Permission.objects
|
||||
.filter(codename__in=missing_perms_codenames)
|
||||
.values_list('name', flat=True))
|
||||
Permission.objects
|
||||
.filter(codename__in=missing_perms_codenames)
|
||||
.values_list('name', flat=True))
|
||||
return missing_perms
|
||||
|
||||
|
||||
@teamkfet_required
|
||||
def kpsul_perform_operations(request):
|
||||
# Initializing response data
|
||||
data = { 'operationgroup': 0, 'operations': [],
|
||||
'warnings': {}, 'errors': {} }
|
||||
data = {'operationgroup': 0, 'operations': [],
|
||||
'warnings': {}, 'errors': {}}
|
||||
|
||||
# Checking operationgroup
|
||||
operationgroup_form = KPsulOperationGroupForm(request.POST)
|
||||
|
@ -968,7 +973,7 @@ def kpsul_perform_operations(request):
|
|||
data['errors']['operation_group'] = list(operationgroup_form.errors)
|
||||
|
||||
# Checking operation_formset
|
||||
operation_formset = KPsulOperationFormSet(request.POST)
|
||||
operation_formset = KPsulOperationFormSet(request.POST)
|
||||
if not operation_formset.is_valid():
|
||||
data['errors']['operations'] = list(operation_formset.errors)
|
||||
|
||||
|
@ -977,34 +982,36 @@ def kpsul_perform_operations(request):
|
|||
return JsonResponse(data, status=400)
|
||||
|
||||
# Pre-saving (no commit)
|
||||
operationgroup = operationgroup_form.save(commit = False)
|
||||
operations = operation_formset.save(commit = False)
|
||||
operationgroup = operationgroup_form.save(commit=False)
|
||||
operations = operation_formset.save(commit=False)
|
||||
|
||||
# Retrieving COF grant
|
||||
cof_grant = Settings.SUBVENTION_COF()
|
||||
# Retrieving addcosts data
|
||||
addcost_amount = Settings.ADDCOST_AMOUNT()
|
||||
addcost_for = Settings.ADDCOST_FOR()
|
||||
addcost_for = Settings.ADDCOST_FOR()
|
||||
|
||||
# Initializing vars
|
||||
required_perms = set() # Required perms to perform all operations
|
||||
required_perms = set() # Required perms to perform all operations
|
||||
cof_grant_divisor = 1 + cof_grant / 100
|
||||
to_addcost_for_balance = 0 # For balance of addcost_for
|
||||
to_checkout_balance = 0 # For balance of selected checkout
|
||||
to_articles_stocks = defaultdict(lambda:0) # For stocks articles
|
||||
to_addcost_for_balance = 0 # For balance of addcost_for
|
||||
to_checkout_balance = 0 # For balance of selected checkout
|
||||
to_articles_stocks = defaultdict(lambda: 0) # For stocks articles
|
||||
is_addcost = (addcost_for and addcost_amount
|
||||
and addcost_for != operationgroup.on_acc)
|
||||
and addcost_for != operationgroup.on_acc)
|
||||
need_comment = operationgroup.on_acc.need_comment
|
||||
|
||||
# Filling data of each operations + operationgroup + calculating other stuffs
|
||||
# Filling data of each operations
|
||||
# + operationgroup + calculating other stuffs
|
||||
for operation in operations:
|
||||
if operation.type == Operation.PURCHASE:
|
||||
operation.amount = - operation.article.price * operation.article_nb
|
||||
if is_addcost & operation.article.category.has_addcost:
|
||||
operation.addcost_for = addcost_for
|
||||
operation.addcost_amount = addcost_amount * operation.article_nb
|
||||
operation.amount -= operation.addcost_amount
|
||||
to_addcost_for_balance += operation.addcost_amount
|
||||
operation.addcost_for = addcost_for
|
||||
operation.addcost_amount = addcost_amount \
|
||||
* operation.article_nb
|
||||
operation.amount -= operation.addcost_amount
|
||||
to_addcost_for_balance += operation.addcost_amount
|
||||
if operationgroup.on_acc.is_cash:
|
||||
operation.is_checkout = True
|
||||
to_checkout_balance += -operation.amount
|
||||
|
@ -1012,12 +1019,14 @@ def kpsul_perform_operations(request):
|
|||
operation.is_checkout = False
|
||||
if operationgroup.on_acc.is_cof:
|
||||
if is_addcost & operation.article.category.has_addcost:
|
||||
operation.addcost_amount = operation.addcost_amount / cof_grant_divisor
|
||||
operation.addcost_amount = operation.addcost_amount \
|
||||
/ cof_grant_divisor
|
||||
operation.amount = operation.amount / cof_grant_divisor
|
||||
to_articles_stocks[operation.article] -= operation.article_nb
|
||||
else:
|
||||
if operationgroup.on_acc.is_cash:
|
||||
data['errors']['account'] = 'Charge et retrait impossible sur LIQ'
|
||||
data['errors']['account'] = ("Charge et retrait"
|
||||
" impossible sur LIQ")
|
||||
to_checkout_balance += operation.amount
|
||||
operationgroup.amount += operation.amount
|
||||
if operation.type == Operation.DEPOSIT:
|
||||
|
@ -1029,8 +1038,10 @@ def kpsul_perform_operations(request):
|
|||
if operationgroup.on_acc.is_cof:
|
||||
to_addcost_for_balance = to_addcost_for_balance / cof_grant_divisor
|
||||
|
||||
(perms, stop) = operationgroup.on_acc.perms_to_perform_operation(
|
||||
amount = operationgroup.amount)
|
||||
(perms, stop) = (operationgroup.on_acc
|
||||
.perms_to_perform_operation(
|
||||
amount=operationgroup.amount)
|
||||
)
|
||||
required_perms |= perms
|
||||
|
||||
if need_comment:
|
||||
|
@ -1059,7 +1070,7 @@ def kpsul_perform_operations(request):
|
|||
# saving account's balance and adding to Negative if not in
|
||||
if not operationgroup.on_acc.is_cash:
|
||||
Account.objects.filter(pk=operationgroup.on_acc.pk).update(
|
||||
balance = F('balance') + operationgroup.amount)
|
||||
balance=F('balance') + operationgroup.amount)
|
||||
operationgroup.on_acc.refresh_from_db()
|
||||
if operationgroup.on_acc.balance < 0:
|
||||
if hasattr(operationgroup.on_acc, 'negative'):
|
||||
|
@ -1068,7 +1079,7 @@ def kpsul_perform_operations(request):
|
|||
operationgroup.on_acc.negative.save()
|
||||
else:
|
||||
negative = AccountNegative(
|
||||
account = operationgroup.on_acc, start = timezone.now())
|
||||
account=operationgroup.on_acc, start = timezone.now())
|
||||
negative.save()
|
||||
elif (hasattr(operationgroup.on_acc, 'negative')
|
||||
and not operationgroup.on_acc.negative.balance_offset):
|
||||
|
@ -1077,12 +1088,12 @@ def kpsul_perform_operations(request):
|
|||
# Updating checkout's balance
|
||||
if to_checkout_balance:
|
||||
Checkout.objects.filter(pk=operationgroup.checkout.pk).update(
|
||||
balance = F('balance') + to_checkout_balance)
|
||||
balance=F('balance') + to_checkout_balance)
|
||||
|
||||
# Saving addcost_for with new balance if there is one
|
||||
if is_addcost and to_addcost_for_balance:
|
||||
Account.objects.filter(pk=addcost_for.pk).update(
|
||||
balance = F('balance') + to_addcost_for_balance)
|
||||
balance=F('balance') + to_addcost_for_balance)
|
||||
|
||||
# Saving operation group
|
||||
operationgroup.save()
|
||||
|
@ -1097,7 +1108,7 @@ def kpsul_perform_operations(request):
|
|||
# Updating articles stock
|
||||
for article in to_articles_stocks:
|
||||
Article.objects.filter(pk=article.pk).update(
|
||||
stock = F('stock') + to_articles_stocks[article])
|
||||
stock=F('stock') + to_articles_stocks[article])
|
||||
|
||||
# Websocket data
|
||||
websocket_data = {}
|
||||
|
@ -1109,18 +1120,21 @@ def kpsul_perform_operations(request):
|
|||
'at': operationgroup.at,
|
||||
'is_cof': operationgroup.is_cof,
|
||||
'comment': operationgroup.comment,
|
||||
'valid_by__trigramme': ( operationgroup.valid_by and
|
||||
operationgroup.valid_by.trigramme or None),
|
||||
'valid_by__trigramme': (operationgroup.valid_by and
|
||||
operationgroup.valid_by.trigramme or None),
|
||||
'on_acc__trigramme': operationgroup.on_acc.trigramme,
|
||||
'opes': [],
|
||||
}]
|
||||
for operation in operations:
|
||||
ope_data = {
|
||||
'id': operation.pk, 'type': operation.type, 'amount': operation.amount,
|
||||
'id': operation.pk, 'type': operation.type,
|
||||
'amount': operation.amount,
|
||||
'addcost_amount': operation.addcost_amount,
|
||||
'addcost_for__trigramme': is_addcost and addcost_for.trigramme or None,
|
||||
'addcost_for__trigramme': is_addcost
|
||||
and addcost_for.trigramme or None,
|
||||
'is_checkout': operation.is_checkout,
|
||||
'article__name': operation.article and operation.article.name or None,
|
||||
'article__name': operation.article
|
||||
and operation.article.name or None,
|
||||
'article_nb': operation.article_nb,
|
||||
'group_id': operationgroup.pk,
|
||||
'canceled_by__trigramme': None, 'canceled_at': None,
|
||||
|
@ -1134,7 +1148,7 @@ def kpsul_perform_operations(request):
|
|||
}]
|
||||
websocket_data['articles'] = []
|
||||
# Need refresh from db cause we used update on querysets
|
||||
articles_pk = [ article.pk for article in to_articles_stocks]
|
||||
articles_pk = [article.pk for article in to_articles_stocks]
|
||||
articles = Article.objects.values('id', 'stock').filter(pk__in=articles_pk)
|
||||
for article in articles:
|
||||
websocket_data['articles'].append({
|
||||
|
@ -1144,6 +1158,7 @@ def kpsul_perform_operations(request):
|
|||
consumers.KPsul.group_send('kfet.kpsul', websocket_data)
|
||||
return JsonResponse(data)
|
||||
|
||||
|
||||
@teamkfet_required
|
||||
def kpsul_cancel_operations(request):
|
||||
# Pour la réponse
|
||||
|
|
Loading…
Reference in a new issue