Attached a patch for importing processes in a second step after fingerprints are imported.
From 3c99d71d91a54efcc229c86db87ac81fc0ccd366 Mon Sep 17 00:00:00 2001 From: Judit Foglszinger <ur...@debian.org> Date: Thu, 26 Dec 2019 06:20:48 +0600 Subject: [PATCH] Importing processes separately in a second step
When importing processes, access to fingerprints of all persons is needed. --- backend/export.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/backend/export.py b/backend/export.py index 49ec8ff..71a07b0 100644 --- a/backend/export.py +++ b/backend/export.py @@ -140,6 +140,32 @@ class ImporterV1: for lp in legacy_processes: person._rels["legacy_processes"].append(self.import_legacy_process(person, lp)) + return person + + def import_person_processes(self, data): + s = bserializers.PersonExportSerializer(data=data, context=self.context) + if not s.is_valid(): + raise RuntimeError("Invalid Person record {}: {}".format(data, s.errors)) + + am = s.validated_data.pop("am") + fprs = s.validated_data.pop("fprs") + audit_log = s.validated_data.pop("audit_log") + legacy_processes = s.validated_data.pop("legacy_processes") + processes = s.validated_data.pop("processes") + + lookup_key = data["lookup_key"] + person = self.people.get(lookup_key) + + if person is None: + person = bmodels.Person(**s.validated_data) + person._rels = { + "am": None, + "fprs": [], + "audit_log": [], + "legacy_processes": [], + "processes": [], + } + for pr in processes: person._rels["processes"].append(self.import_process(person, pr)) @@ -365,6 +391,10 @@ class ImporterV1: self.import_person(person, shallow=True) for person in data["people"]: self.import_person(person, shallow=False) + # Importing processes separately, since this requires fingerprints of + # all people to be imported + for person in data["people"]: + self.import_person_processes(person) for apikey in data["apikeys"]: pass # TODO -- 2.24.0
signature.asc
Description: This is a digitally signed message part.