8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-12-23 07:23:46 +00:00

Merge branch 'fix_send_mail' into 'dev'

Fix l'envoie de mail, en postsave maintenant (plus propre)

See merge request federez/re2o!281
This commit is contained in:
klafyvel 2018-09-01 11:58:50 +02:00
commit c917f0b7ab
6 changed files with 37 additions and 17 deletions

View file

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2018-08-31 13:32
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('cotisations', '0033_auto_20180818_1319'),
]
operations = [
migrations.AlterField(
model_name='facture',
name='valid',
field=models.BooleanField(default=False, verbose_name='validated'),
),
]

View file

@ -50,7 +50,7 @@ from machines.models import regen
from re2o.field_permissions import FieldPermissionModelMixin
from re2o.mixins import AclMixin, RevMixin
from cotisations.utils import find_payment_method
from cotisations.utils import find_payment_method, send_mail_invoice
from cotisations.validators import check_no_balance
@ -137,7 +137,7 @@ class Facture(BaseInvoice):
)
# TODO : change name to validity for clarity
valid = models.BooleanField(
default=True,
default=False,
verbose_name=_("validated")
)
# TODO : changed name to controlled for clarity
@ -231,20 +231,26 @@ class Facture(BaseInvoice):
self.field_permissions = {
'control': self.can_change_control,
}
self.__original_valid = self.valid
def save(self, *args, **kwargs):
super(Facture, self).save(*args, **kwargs)
if not self.__original_valid and self.valid:
send_mail_invoice(self)
def __str__(self):
return str(self.user) + ' ' + str(self.date)
@receiver(post_save, sender=Facture)
def facture_post_save(**kwargs):
"""
Synchronise the LDAP user after an invoice has been saved.
"""
facture = kwargs['instance']
user = facture.user
user.set_active()
user.ldap_sync(base=True, access_refresh=True, mac_refresh=False)
if facture.valid:
user = facture.user
user.set_active()
user.ldap_sync(base=False, access_refresh=True, mac_refresh=False)
@receiver(post_delete, sender=Facture)
@ -702,6 +708,10 @@ class Paiement(RevMixin, AclMixin, models.Model):
if payment_method is not None and use_payment_method:
return payment_method.end_payment(invoice, request)
## So make this invoice valid, trigger send mail
invoice.valid = True
invoice.save()
# In case a cotisation was bought, inform the user, the
# cotisation time has been extended too
if any(sell.type_cotisation for sell in invoice.vente_set.all()):

View file

@ -74,8 +74,6 @@ class BalancePayment(PaymentMethodMixin, models.Model):
user = invoice.user
total_price = invoice.prix_total()
if float(user.solde) - float(total_price) < self.minimum_balance:
invoice.valid = False
invoice.save()
messages.error(
request,
_("Your balance is too low for this operation.")

View file

@ -46,8 +46,6 @@ class ChequePayment(PaymentMethodMixin, models.Model):
"""Invalidates the invoice then redirect the user towards a view asking
for informations to add to the invoice before validating it.
"""
invoice.valid = False
invoice.save()
return redirect(reverse(
'cotisations:cheque:validate',
kwargs={'invoice_pk': invoice.pk}

View file

@ -81,8 +81,6 @@ class ComnpayPayment(PaymentMethodMixin, models.Model):
a facture id, the price and the secret transaction data stored in
the preferences.
"""
invoice.valid = False
invoice.save()
host = request.get_host()
p = Transaction(
str(self.payment_credential),

View file

@ -81,7 +81,7 @@ from .forms import (
)
from .tex import render_invoice
from .payment_methods.forms import payment_method_factory
from .utils import find_payment_method, send_mail_invoice
from .utils import find_payment_method
@login_required
@ -148,8 +148,6 @@ def new_facture(request, user, userid):
p.facture = new_invoice_instance
p.save()
send_mail_invoice(new_invoice_instance)
return new_invoice_instance.paiement.end_payment(
new_invoice_instance,
request
@ -848,8 +846,6 @@ def credit_solde(request, user, **_kwargs):
number=1
)
send_mail_invoice(invoice)
return invoice.paiement.end_payment(invoice, request)
p = get_object_or_404(Paiement, is_balance=True)
return form({