From 8dd08ca23064e2efe5a9471cd089cb1b09fb8642 Mon Sep 17 00:00:00 2001
From: Sivert Kronen Hatteberg <skh@uio.no>
Date: Mon, 15 Nov 2021 08:56:24 +0100
Subject: [PATCH] Bugfix and update doc

---
 .../commands/import_sponsors_from_cerebrum.py | 27 +++++++++----------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/greg/management/commands/import_sponsors_from_cerebrum.py b/greg/management/commands/import_sponsors_from_cerebrum.py
index f14455f5..1c6e91da 100644
--- a/greg/management/commands/import_sponsors_from_cerebrum.py
+++ b/greg/management/commands/import_sponsors_from_cerebrum.py
@@ -1,15 +1,13 @@
 """
-Fetch all OUs from OrgReg and add the complete tree to Greg.
+Fetch sponsors for all units in GREG.
 
-Ignores OrganizationalUnits without identifiers with source and name matching global
-variables ORGREG_SOURCE and ORGREG_NAME
+Uses the members of the adm-leder-<legacy_stedkode> groups to
+populate Sponsors and SponsorOrganizationalUnits.
 
-Assumes that the header used for authentication is of the type
-'X-Gravitee-Api-Key': 'token'.
-
-If the path to the endpoint of the OUs is oregreg/v3/ou/ you want to give
-orgreg/v3/ as the url argument (note the trailing slash).
+This script does only remove the SponsorOrganizationalUnit.
+The Sponsor objects are kept, even with no units
 """
+
 from typing import Optional, Tuple
 import cerebrum_client
 
@@ -28,7 +26,6 @@ class Command(BaseCommand):
     help = __doc__
 
     CEREBRUM_SOURCE = "cerebrum"
-    CEREBRUM_VALID_SOURCE_SYSTEM = ["DFO_SAP"]
     CEREBRUM_FEIDE_INST = "uio.no"
     CEREBRUM_NAME_SOURCE_PRIORITY = ["Cached", "Override", "DFO_SAP", "FS", "Manual"]
 
@@ -170,7 +167,7 @@ class Command(BaseCommand):
                     cerebrum_group=group_name,
                 )
                 for sponsor in current_sponsors:
-                    self._remove_sponsor_unit_link(non_cerebrum_sponsor)
+                    self._remove_sponsor_unit_link(sponsor)
                 continue
 
             if group.expire_date:
@@ -181,17 +178,17 @@ class Command(BaseCommand):
                     cerebrum_group=group_name,
                 )
                 for sponsor in current_sponsors:
-                    self._remove_sponsor_unit_link(non_cerebrum_sponsor)
+                    self._remove_sponsor_unit_link(sponsor)
                 continue
 
-            group_members = list(self.client.list_group_members(group.id))
+            group_members = list(self.client.list_group_members(group_name))
             if not group_members:
                 # No members in group, remove sponsors
                 logger.info(
                     "cerebrum_group_empty", unit_id=unit.id, cerebrum_group=group_name
                 )
                 for sponsor in current_sponsors:
-                    self._remove_sponsor_unit_link(non_cerebrum_sponsor)
+                    self._remove_sponsor_unit_link(sponsor)
                 continue
 
             cerebrum_sponsors = set()
@@ -204,7 +201,7 @@ class Command(BaseCommand):
                         )
                         cerebrum_sponsors.add(sponsor_link)
 
-            for non_cerebrum_sponsor in set(current_sponsors) - cerebrum_sponsors:
-                self._remove_sponsor_unit_link(non_cerebrum_sponsor)
+            for sponsor in set(current_sponsors) - cerebrum_sponsors:
+                self._remove_sponsor_unit_link(sponsor)
 
         logger.info("import_end")
-- 
GitLab