summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index a7f715516..b9944e4bb 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -3212,6 +3212,10 @@ GDPR_ACTIVITY = (
("PC", _("Person creation")),
("PM", _("Person modification")),
("PD", _("Person deletion")),
+ ("AC", _("Admin - Directory consultation")),
+ ("AE", _("Admin - Directory export")),
+ ("AV", _("Admin - Person view")),
+ ("AM", _("Admin - Person modification")),
)
GDPR_ACTIVITY_DICT = dict(GDPR_ACTIVITY)
@@ -3263,24 +3267,28 @@ class GDPRLog(models.Model):
return f"{self.user.username} - {self.date} - {self.activity_lbl}"
@classmethod
- def create_log(cls, request, activity, person_query):
+ def create_log(cls, request, activity, person_query, slice_query=None):
if not request.user:
# log creation is for logged user should be a script, a bug or a hacker...
user_id = None
else:
user_id = request.user.id
client_ip, routable_ip = get_client_ip(request)
- cls._create_log(user_id, client_ip, routable_ip, activity, person_query)
+ cls._create_log(user_id, client_ip, routable_ip, activity, person_query, slice_query)
@classmethod
- def _create_log(cls, user_id, ip, routable_ip, activity, person_query):
+ def _create_log(cls, user_id, ip, routable_ip, activity, person_query, slice_query=None):
log = cls.objects.create(user_id=user_id, ip=ip, routable_ip=routable_ip, activity=activity)
person_query = person_query.exclude(raw_name__isnull=True).exclude(raw_name="")
-
+ start, end = None, None
+ if slice_query:
+ start, end = slice_query
# create all missing GDPRPerson
missing_gdpr_person_q = person_query.filter(gdpr_person=None)
gdpr_persons_creation = []
values = missing_gdpr_person_q.values_list("id", "raw_name")
+ if start is not None:
+ values = values[start:end]
for person_id, raw_name in values:
gdpr_persons_creation.append(GDPRPerson(person_id=person_id, raw_name=raw_name))
GDPRPerson.objects.bulk_create(gdpr_persons_creation)
@@ -3288,6 +3296,8 @@ class GDPRLog(models.Model):
# attach gdpr persons
gdpr_persons = []
values = person_query.values_list("gdpr_person__pk", flat=True)
+ if start is not None:
+ values = values[start:end]
for pk in values:
gdpr_persons.append(cls.persons.through(gdprperson_id=pk, gdprlog_id=log.pk))
cls.persons.through.objects.bulk_create(gdpr_persons)