This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
2019-10-11 11:43:35 +00:00
|
|
|
"""LDAP Sync tasks"""
|
2020-09-19 13:25:17 +00:00
|
|
|
from time import time
|
|
|
|
|
|
|
|
from django.core.cache import cache
|
|
|
|
|
2019-10-11 10:53:48 +00:00
|
|
|
from passbook.root.celery import CELERY_APP
|
|
|
|
from passbook.sources.ldap.models import LDAPSource
|
2020-09-21 19:35:50 +00:00
|
|
|
from passbook.sources.ldap.sync import LDAPSynchronizer
|
2019-10-11 10:53:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
@CELERY_APP.task()
|
|
|
|
def sync():
|
|
|
|
"""Sync all sources"""
|
|
|
|
for source in LDAPSource.objects.filter(enabled=True):
|
2020-09-14 21:35:01 +00:00
|
|
|
sync_single.delay(source.pk)
|
|
|
|
|
|
|
|
|
|
|
|
@CELERY_APP.task()
|
|
|
|
def sync_single(source_pk):
|
|
|
|
"""Sync a single source"""
|
2020-09-19 13:25:17 +00:00
|
|
|
source: LDAPSource = LDAPSource.objects.get(pk=source_pk)
|
2020-09-21 19:35:50 +00:00
|
|
|
syncer = LDAPSynchronizer(source)
|
|
|
|
syncer.sync_users()
|
|
|
|
syncer.sync_groups()
|
|
|
|
syncer.sync_membership()
|
2020-09-19 13:25:17 +00:00
|
|
|
cache_key = source.state_cache_prefix("last_sync")
|
|
|
|
cache.set(cache_key, time(), timeout=60 * 60)
|