| 1234567891011121314151617181920212223242526272829303132333435 |
- from typing import Annotated, List, TYPE_CHECKING
- import strawberry
- import strawberry_django
- from django.contrib.contenttypes.models import ContentType
- from strawberry.types import Info
- from core.models import ObjectChange
- if TYPE_CHECKING:
- from core.graphql.types import DataFileType, DataSourceType, ObjectChangeType
- __all__ = (
- 'ChangelogMixin',
- 'SyncedDataMixin',
- )
- @strawberry.type
- class ChangelogMixin:
- @strawberry_django.field
- def changelog(self, info: Info) -> List[Annotated['ObjectChangeType', strawberry.lazy('.types')]]: # noqa: F821
- content_type = ContentType.objects.get_for_model(self)
- object_changes = ObjectChange.objects.filter(
- changed_object_type=content_type,
- changed_object_id=self.pk
- )
- return object_changes.restrict(info.context.request.user, 'view')
- @strawberry.type
- class SyncedDataMixin:
- data_source: Annotated['DataSourceType', strawberry.lazy('core.graphql.types')] | None
- data_file: Annotated['DataFileType', strawberry.lazy('core.graphql.types')] | None
|