sources/ldap: sync source on save

This commit is contained in:
Jens Langhammer 2020-09-14 23:35:01 +02:00
parent 494950ac65
commit e7472de4bf
3 changed files with 26 additions and 5 deletions

View File

@ -45,7 +45,7 @@ class AdministrationOverviewView(AdminRequiredMixin, TemplateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
kwargs["application_count"] = len(Application.objects.all()) kwargs["application_count"] = len(Application.objects.all())
kwargs["policy_count"] = len(Policy.objects.all()) kwargs["policy_count"] = len(Policy.objects.all())
kwargs["user_count"] = len(User.objects.all()) - 1 # Remove anonymous user kwargs["user_count"] = len(User.objects.all()) - 1 # Remove anonymous user
kwargs["provider_count"] = len(Provider.objects.all()) kwargs["provider_count"] = len(Provider.objects.all())
kwargs["source_count"] = len(Source.objects.all()) kwargs["source_count"] = len(Source.objects.all())
kwargs["stage_count"] = len(Stage.objects.all()) kwargs["stage_count"] = len(Stage.objects.all())

View File

@ -0,0 +1,14 @@
"""passbook ldap source signals"""
from django.db.models.signals import post_save
from django.dispatch import receiver
from passbook.sources.ldap.models import LDAPSource
from passbook.sources.ldap.tasks import sync_single
@receiver(post_save, sender=LDAPSource)
# pylint: disable=unused-argument
def sync_ldap_source_on_save(sender, instance: LDAPSource, **_):
"""Ensure that source is synced on save (if enabled)"""
if instance.enabled:
sync_single.delay(instance.pk)

View File

@ -8,7 +8,14 @@ from passbook.sources.ldap.models import LDAPSource
def sync(): def sync():
"""Sync all sources""" """Sync all sources"""
for source in LDAPSource.objects.filter(enabled=True): for source in LDAPSource.objects.filter(enabled=True):
connector = Connector(source) sync_single.delay(source.pk)
connector.sync_users()
connector.sync_groups()
connector.sync_membership() @CELERY_APP.task()
def sync_single(source_pk):
"""Sync a single source"""
source = LDAPSource.objects.get(pk=source_pk)
connector = Connector(source)
connector.sync_users()
connector.sync_groups()
connector.sync_membership()