![dependabot[bot]](/assets/img/avatar_default.png)
* core: bump black from 24.10.0 to 25.1.0 Bumps [black](https://github.com/psf/black) from 24.10.0 to 25.1.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.10.0...25.1.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * format Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from typing import Any, Self
|
|
|
|
import pglock
|
|
from django.db import connection
|
|
from django.db.models import Model, QuerySet, TextChoices
|
|
|
|
from authentik.core.models import Group, User
|
|
from authentik.lib.sync.outgoing.base import BaseOutgoingSyncClient
|
|
|
|
|
|
class OutgoingSyncDeleteAction(TextChoices):
|
|
"""Action taken when a user/group is deleted in authentik. Suspend is not available for groups,
|
|
and will be treated as `do_nothing`"""
|
|
|
|
DO_NOTHING = "do_nothing"
|
|
DELETE = "delete"
|
|
SUSPEND = "suspend"
|
|
|
|
|
|
class OutgoingSyncProvider(Model):
|
|
|
|
class Meta:
|
|
abstract = True
|
|
|
|
def client_for_model[T: User | Group](
|
|
self, model: type[T]
|
|
) -> BaseOutgoingSyncClient[T, Any, Any, Self]:
|
|
raise NotImplementedError
|
|
|
|
def get_object_qs[T: User | Group](self, type: type[T]) -> QuerySet[T]:
|
|
raise NotImplementedError
|
|
|
|
@property
|
|
def sync_lock(self) -> pglock.advisory:
|
|
"""Postgres lock for syncing SCIM to prevent multiple parallel syncs happening"""
|
|
return pglock.advisory(
|
|
lock_id=f"goauthentik.io/{connection.schema_name}/providers/outgoing-sync/{str(self.pk)}",
|
|
timeout=0,
|
|
side_effect=pglock.Return,
|
|
)
|