mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-22 11:23:10 +00:00
Validateur nazi pour empécher de mettre des dates de fins de ban dans le passé
This commit is contained in:
parent
d6e03b84fb
commit
ff2b4cb0d2
4 changed files with 40 additions and 0 deletions
Binary file not shown.
|
@ -24,6 +24,16 @@ def end_adhesion(user):
|
||||||
date_max = Cotisation.objects.all().filter(facture=Facture.objects.all().filter(user=user)).aggregate(Max('date_end'))['date_end__max']
|
date_max = Cotisation.objects.all().filter(facture=Facture.objects.all().filter(user=user)).aggregate(Max('date_end'))['date_end__max']
|
||||||
return date_max
|
return date_max
|
||||||
|
|
||||||
|
def is_adherent(user):
|
||||||
|
""" Renvoie si un user est à jour de cotisation """
|
||||||
|
end = end_adhesion(user)
|
||||||
|
if not end:
|
||||||
|
return False
|
||||||
|
elif end < timezone.now():
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
def create_cotis(facture, user, article):
|
def create_cotis(facture, user, article):
|
||||||
""" Update et crée l'objet cotisation associé à une facture, prend en argument l'user, la facture pour la quantitéi, et l'article pour la durée"""
|
""" Update et crée l'objet cotisation associé à une facture, prend en argument l'user, la facture pour la quantitéi, et l'article pour la durée"""
|
||||||
cotisation=Cotisation(facture=facture)
|
cotisation=Cotisation(facture=facture)
|
||||||
|
|
|
@ -2,6 +2,8 @@ from django.db import models
|
||||||
from django.forms import ModelForm
|
from django.forms import ModelForm
|
||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
class User(models.Model):
|
class User(models.Model):
|
||||||
STATE_ACTIVE = 0
|
STATE_ACTIVE = 0
|
||||||
STATE_DEACTIVATED = 1
|
STATE_DEACTIVATED = 1
|
||||||
|
@ -119,3 +121,9 @@ class BanForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ban
|
model = Ban
|
||||||
exclude = ['user']
|
exclude = ['user']
|
||||||
|
|
||||||
|
def clean_date_end(self):
|
||||||
|
date_end = self.cleaned_data['date_end']
|
||||||
|
if date_end < timezone.now():
|
||||||
|
raise forms.ValidationError("Triple buse, la date de fin ne peut pas être avant maintenant... Re2o ne voyage pas dans le temps")
|
||||||
|
return date_end
|
||||||
|
|
|
@ -6,9 +6,12 @@ from django.shortcuts import render_to_response, get_object_or_404
|
||||||
from django.core.context_processors import csrf
|
from django.core.context_processors import csrf
|
||||||
from django.template import Context, RequestContext, loader
|
from django.template import Context, RequestContext, loader
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
from django.db.models import Max
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
from users.models import User, Right, Ban, DelRightForm, UserForm, InfoForm, PasswordForm, StateForm, RightForm, BanForm
|
from users.models import User, Right, Ban, DelRightForm, UserForm, InfoForm, PasswordForm, StateForm, RightForm, BanForm
|
||||||
from users.forms import PassForm
|
from users.forms import PassForm
|
||||||
|
from cotisations.views import is_adherent
|
||||||
|
|
||||||
from re2o.login import makeSecret, hashNT
|
from re2o.login import makeSecret, hashNT
|
||||||
|
|
||||||
|
@ -17,6 +20,23 @@ def end_ban(user):
|
||||||
date_max = Ban.objects.all().filter(user=user).aggregate(Max('date_end'))['date_end__max']
|
date_max = Ban.objects.all().filter(user=user).aggregate(Max('date_end'))['date_end__max']
|
||||||
return date_max
|
return date_max
|
||||||
|
|
||||||
|
def is_ban(user):
|
||||||
|
""" Renvoie si un user est banni ou non """
|
||||||
|
end = end_ban(user)
|
||||||
|
if not end:
|
||||||
|
return False
|
||||||
|
elif end < timezone.now():
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
def has_access(user):
|
||||||
|
""" Renvoie si un utilisateur a accès à internet"""
|
||||||
|
if user.state == 0 and not is_ban(user) and is_adherent(user):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
def form(ctx, template, request):
|
def form(ctx, template, request):
|
||||||
c = ctx
|
c = ctx
|
||||||
c.update(csrf(request))
|
c.update(csrf(request))
|
||||||
|
@ -103,6 +123,8 @@ def add_ban(request, userid):
|
||||||
ban.save()
|
ban.save()
|
||||||
messages.success(request, "Bannissement ajouté")
|
messages.success(request, "Bannissement ajouté")
|
||||||
return redirect("/users/")
|
return redirect("/users/")
|
||||||
|
if is_ban(user):
|
||||||
|
messages.error(request, u"Attention, cet utilisateur a deja un bannissement actif" )
|
||||||
return form({'userform': ban}, 'users/user.html', request)
|
return form({'userform': ban}, 'users/user.html', request)
|
||||||
|
|
||||||
def edit_ban(request, banid):
|
def edit_ban(request, banid):
|
||||||
|
|
Loading…
Reference in a new issue