diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 18 |
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) |