"""LDAP Sync tasks"""
from passbook.root.celery import CELERY_APP
from passbook.sources.ldap.connector import Connector
from passbook.sources.ldap.models import LDAPSource


@CELERY_APP.task()
def sync_groups(source_pk: int):
    """Sync LDAP Groups on background worker"""
    source = LDAPSource.objects.get(pk=source_pk)
    connector = Connector(source)
    connector.sync_groups()


@CELERY_APP.task()
def sync_users(source_pk: int):
    """Sync LDAP Users on background worker"""
    source = LDAPSource.objects.get(pk=source_pk)
    connector = Connector(source)
    connector.sync_users()


@CELERY_APP.task()
def sync():
    """Sync all sources"""
    for source in LDAPSource.objects.filter(enabled=True):
        connector = Connector(source)
        connector.sync_users()
        connector.sync_groups()
        connector.sync_membership()
