Projet

Général

Profil

0003-Fix-authentic-tests-under-django-3.2.patch

A. Berriot, 28 juillet 2022 14:49

Télécharger (2,64 ko)

Voir les différences:

Subject: [PATCH 3/5] Fix authentic tests under django 3.2

 hobo/agent/authentic2/provisionning.py | 30 +++++++++++++++-----------
 1 file changed, 17 insertions(+), 13 deletions(-)
hobo/agent/authentic2/provisionning.py
16 16
from django.urls import reverse
17 17
from django.utils.encoding import force_text
18 18
from django_rbac.utils import get_ou_model, get_role_model, get_role_parenting_model
19
from tenant_schemas.utils import tenant_context
19 20

  
20 21
from hobo.agent.common import notify_agents
21 22
from hobo.signature import sign_url
......
368 369
        if not (saved or deleted):
369 370
            return
370 371

  
371
        t = threading.Thread(target=self.do_provision, kwargs={'saved': saved, 'deleted': deleted})
372
        t = threading.Thread(
373
            target=self.do_provision, kwargs={'saved': saved, 'deleted': deleted, "tenant": connection.tenant}
374
        )
372 375
        t.start()
373 376
        self.threads.add(t)
374 377

  
375
    def do_provision(self, saved, deleted):
376
        try:
377
            ous = {ou.id: ou for ou in OU.objects.all()}
378
            self.notify_roles(ous, saved.get(Role, []))
379
            self.notify_roles(ous, deleted.get(Role, []), mode='deprovision')
380
            self.notify_users(ous, saved.get(User, []))
381
            self.notify_users(ous, deleted.get(User, []), mode='deprovision')
382
        except Exception:
383
            # last step, clear everything
384
            logger.exception(u'error in provisionning thread')
385
        finally:
386
            self.threads.discard(threading.current_thread())
378
    def do_provision(self, saved, deleted, tenant):
379
        with tenant_context(tenant):
380
            try:
381
                ous = {ou.id: ou for ou in OU.objects.all()}
382
                self.notify_roles(ous, saved.get(Role, []))
383
                self.notify_roles(ous, deleted.get(Role, []), mode='deprovision')
384
                self.notify_users(ous, saved.get(User, []))
385
                self.notify_users(ous, deleted.get(User, []), mode='deprovision')
386
            except Exception:
387
                # last step, clear everything
388
                logger.exception(u'error in provisionning thread')
389
            finally:
390
                self.threads.discard(threading.current_thread())
387 391

  
388 392
    def wait(self):
389 393
        for thread in list(self.threads):
390
-