Added kfet history date limit when not accessing own account

This commit is contained in:
Dorian Lesbre 2021-02-10 21:32:44 +01:00
parent 46ef12309a
commit fbafdb7134
2 changed files with 17 additions and 1 deletions

View file

@ -5,6 +5,7 @@ Surcharge les settings définis dans common.py
"""
import os
from datetime import timedelta
from .common import * # NOQA
from .common import (
@ -202,3 +203,6 @@ MAIL_DATA = {
"REPLYTO": "BdA-Revente <bda-revente@ens.fr>",
},
}
# Max lookback date into kfet history
KFET_HISTORY_DATE_LIMIT = timedelta(weeks=1)

View file

@ -1,11 +1,12 @@
import heapq
import statistics
from collections import defaultdict
from datetime import timedelta
from datetime import datetime, timedelta
from decimal import Decimal
from typing import List
from urllib.parse import urlencode
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required, permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin
@ -1468,6 +1469,9 @@ def history_json(request):
.order_by("at")
)
# limite l'accès à l'historique plus vieux que settings.KFET_HISTORY_DATE_LIMIT
limit_date = True
# Application des filtres
if start:
opegroups = opegroups.filter(at__gte=start)
@ -1484,9 +1488,17 @@ def history_json(request):
transfergroups = TransferGroup.objects.none()
if account:
opegroups = opegroups.filter(on_acc=account)
if account.cofprofile.user.id == request.user.id:
limit_date = False # pas de limite de date sur son propre historique
# Un non-membre de l'équipe n'a que accès à son historique
if not request.user.has_perm("kfet.is_team"):
opegroups = opegroups.filter(on_acc=request.user.profile.account_kfet)
limit_date = False # pas de limite de date sur son propre historique
if limit_date:
# limiter l'accès à l'historique ancien pour confidentialité
earliest_date = datetime.today() - settings.KFET_HISTORY_DATE_LIMIT
opegroups = opegroups.filter(at__gte=earliest_date)
transfergroups = transfergroups.filter(at__gte=earliest_date)
# Construction de la réponse
history_groups = []