8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-09-28 15:13:09 +00:00

Merge branch 'fix-validators-positiveinteger' into 'dev'

Fix validators positiveinteger

See merge request re2o/re2o!579
This commit is contained in:
chirac 2020-12-28 16:42:34 +01:00
commit aea9398f34
2 changed files with 96 additions and 28 deletions

View file

@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2020-12-28 15:36
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("cotisations", "0050_auto_20201102_2342"),
]
operations = [
migrations.AlterField(
model_name="article",
name="duration_connection",
field=models.PositiveIntegerField(
verbose_name="duration of the connection (in months)"
),
),
migrations.AlterField(
model_name="article",
name="duration_days_connection",
field=models.PositiveIntegerField(
verbose_name="duration of the connection (in days, will be added to duration in months)"
),
),
migrations.AlterField(
model_name="article",
name="duration_days_membership",
field=models.PositiveIntegerField(
verbose_name="duration of the membership (in days, will be added to duration in months)"
),
),
migrations.AlterField(
model_name="article",
name="duration_membership",
field=models.PositiveIntegerField(
verbose_name="duration of the membership (in months)"
),
),
migrations.AlterField(
model_name="vente",
name="duration_days_connection",
field=models.PositiveIntegerField(
default=0,
verbose_name="duration of the connection (in days, will be added to duration in months)",
),
),
migrations.AlterField(
model_name="vente",
name="duration_days_membership",
field=models.PositiveIntegerField(
default=0,
verbose_name="duration of the membership (in days, will be added to duration in months)",
),
),
]

View file

@ -248,8 +248,8 @@ class Facture(BaseInvoice):
@staticmethod @staticmethod
def can_change_control(user_request, *_args, **_kwargs): def can_change_control(user_request, *_args, **_kwargs):
""" Returns True if the user can change the 'controlled' status of """Returns True if the user can change the 'controlled' status of
this invoice """ this invoice"""
can = user_request.has_perm("cotisations.change_facture_control") can = user_request.has_perm("cotisations.change_facture_control")
return ( return (
can, can,
@ -293,8 +293,7 @@ class Facture(BaseInvoice):
"""Returns every subscription associated with this invoice.""" """Returns every subscription associated with this invoice."""
return Cotisation.objects.filter( return Cotisation.objects.filter(
vente__in=self.vente_set.filter( vente__in=self.vente_set.filter(
~(Q(duration_membership=0)) |\ ~(Q(duration_membership=0)) | ~(Q(duration_days_membership=0))
~(Q(duration_days_membership=0))
) )
) )
@ -467,16 +466,18 @@ class Vente(RevMixin, AclMixin, models.Model):
) )
duration_days_connection = models.PositiveIntegerField( duration_days_connection = models.PositiveIntegerField(
default=0, default=0,
validators=[MinValueValidator(0)], verbose_name=_(
verbose_name=_("duration of the connection (in days, will be added to duration in months)"), "duration of the connection (in days, will be added to duration in months)"
),
) )
duration_membership = models.PositiveIntegerField( duration_membership = models.PositiveIntegerField(
default=0, verbose_name=_("duration of the membership (in months)") default=0, verbose_name=_("duration of the membership (in months)")
) )
duration_days_membership = models.PositiveIntegerField( duration_days_membership = models.PositiveIntegerField(
default=0, default=0,
validators=[MinValueValidator(0)], verbose_name=_(
verbose_name=_("duration of the membership (in days, will be added to duration in months)"), "duration of the membership (in days, will be added to duration in months)"
),
) )
class Meta: class Meta:
@ -631,12 +632,14 @@ class Vente(RevMixin, AclMixin, models.Model):
return str(self.name) + " " + str(self.facture) return str(self.name) + " " + str(self.facture)
def test_membership_or_connection(self): def test_membership_or_connection(self):
""" Test if the purchase include membership or connecton """Test if the purchase include membership or connecton"""
""" return (
return self.duration_membership or \ self.duration_membership
self.duration_days_membership or \ or self.duration_days_membership
self.duration_connection or \ or self.duration_connection
self.duration_days_connection or self.duration_days_connection
)
# TODO : change vente to purchase # TODO : change vente to purchase
@receiver(post_save, sender=Vente) @receiver(post_save, sender=Vente)
@ -704,20 +707,20 @@ class Article(RevMixin, AclMixin, models.Model):
) )
duration_membership = models.PositiveIntegerField( duration_membership = models.PositiveIntegerField(
validators=[MinValueValidator(0)],
verbose_name=_("duration of the membership (in months)") verbose_name=_("duration of the membership (in months)")
) )
duration_days_membership = models.PositiveIntegerField( duration_days_membership = models.PositiveIntegerField(
validators=[MinValueValidator(0)], verbose_name=_(
verbose_name=_("duration of the membership (in days, will be added to duration in months)"), "duration of the membership (in days, will be added to duration in months)"
),
) )
duration_connection = models.PositiveIntegerField( duration_connection = models.PositiveIntegerField(
validators=[MinValueValidator(0)],
verbose_name=_("duration of the connection (in months)") verbose_name=_("duration of the connection (in months)")
) )
duration_days_connection = models.PositiveIntegerField( duration_days_connection = models.PositiveIntegerField(
validators=[MinValueValidator(0)], verbose_name=_(
verbose_name=_("duration of the connection (in days, will be added to duration in months)"), "duration of the connection (in days, will be added to duration in months)"
),
) )
need_membership = models.BooleanField( need_membership = models.BooleanField(
@ -793,8 +796,8 @@ class Article(RevMixin, AclMixin, models.Model):
if target_user is not None and not target_user.is_adherent(): if target_user is not None and not target_user.is_adherent():
objects_pool = objects_pool.filter( objects_pool = objects_pool.filter(
Q(duration_membership__gt=0) Q(duration_membership__gt=0)
|Q(duration_days_membership__gt=0) | Q(duration_days_membership__gt=0)
|Q(need_membership=False) | Q(need_membership=False)
) )
if user.has_perm("cotisations.buy_every_article"): if user.has_perm("cotisations.buy_every_article"):
return objects_pool return objects_pool
@ -884,7 +887,9 @@ class Paiement(RevMixin, AclMixin, models.Model):
# In case a cotisation was bought, inform the user, the # In case a cotisation was bought, inform the user, the
# cotisation time has been extended too # cotisation time has been extended too
if any(sell.test_membership_or_connection() for sell in invoice.vente_set.all()): if any(
sell.test_membership_or_connection() for sell in invoice.vente_set.all()
):
messages.success( messages.success(
request, request,
_( _(
@ -956,9 +961,13 @@ class Cotisation(RevMixin, AclMixin, models.Model):
vente = models.OneToOneField( vente = models.OneToOneField(
"Vente", on_delete=models.CASCADE, null=True, verbose_name=_("purchase") "Vente", on_delete=models.CASCADE, null=True, verbose_name=_("purchase")
) )
date_start_con = models.DateTimeField(verbose_name=_("start date for the connection")) date_start_con = models.DateTimeField(
verbose_name=_("start date for the connection")
)
date_end_con = models.DateTimeField(verbose_name=_("end date for the connection")) date_end_con = models.DateTimeField(verbose_name=_("end date for the connection"))
date_start_memb = models.DateTimeField(verbose_name=_("start date for the membership")) date_start_memb = models.DateTimeField(
verbose_name=_("start date for the membership")
)
date_end_memb = models.DateTimeField(verbose_name=_("end date for the membership")) date_end_memb = models.DateTimeField(verbose_name=_("end date for the membership"))
class Meta: class Meta: