22
33from dataclasses import dataclass , field
44from datetime import UTC , datetime
5- from typing import TYPE_CHECKING , Any , Final
5+ from typing import TYPE_CHECKING , Any
66
77from ulid import ULID
88
99from renku_data_services .authz .models import Visibility
1010from renku_data_services .base_models .core import (
11+ GLOBAL_NAMESPACE_PATH ,
1112 DataConnectorInProjectPath ,
1213 DataConnectorPath ,
1314 DataConnectorSlug ,
@@ -65,6 +66,10 @@ def path(self) -> DataConnectorPath | DataConnectorInProjectPath:
6566 """The full path (i.e. sequence of slugs) for the data connector including group or user and/or project."""
6667 return self .namespace .path / DataConnectorSlug (self .slug )
6768
69+ def is_global (self ) -> bool :
70+ """Whether this data connector is global."""
71+ return self .namespace .path == GLOBAL_NAMESPACE_PATH
72+
6873
6974@dataclass (frozen = True , eq = True , kw_only = True )
7075class UnsavedDataConnector (BaseDataConnector ):
@@ -77,26 +82,30 @@ def path(self) -> DataConnectorPath | DataConnectorInProjectPath:
7782 """The full path (i.e. sequence of slugs) for the data connector including group or user and/or project."""
7883 return self .namespace / DataConnectorSlug (self .slug )
7984
85+ def is_global (self ) -> bool :
86+ """Whether this data connector is global."""
87+ return self .namespace == GLOBAL_NAMESPACE_PATH
8088
81- @dataclass (frozen = True , eq = True , kw_only = True )
82- class GlobalDataConnector (BaseDataConnector ):
83- """Global data connector model."""
8489
85- id : ULID
86- namespace : Final [ None ] = field ( default = None , init = False )
87- updated_at : datetime
90+ # @dataclass(frozen=True, eq=True, kw_only=True)
91+ # class GlobalDataConnector(BaseDataConnector):
92+ # """Global data connector model."""
8893
89- @property
90- def etag (self ) -> str :
91- """Entity tag value for this data connector object."""
92- return compute_etag_from_fields (self .updated_at )
94+ # id: ULID
95+ # namespace: Final[None] = field(default=None, init=False)
96+ # updated_at: datetime
9397
98+ # @property
99+ # def etag(self) -> str:
100+ # """Entity tag value for this data connector object."""
101+ # return compute_etag_from_fields(self.updated_at)
94102
95- @dataclass (frozen = True , eq = True , kw_only = True )
96- class UnsavedGlobalDataConnector (BaseDataConnector ):
97- """Global data connector model."""
98103
99- namespace : None = None
104+ # @dataclass(frozen=True, eq=True, kw_only=True)
105+ # class UnsavedGlobalDataConnector(BaseDataConnector):
106+ # """Global data connector model."""
107+
108+ # namespace: None = None
100109
101110
102111@dataclass (frozen = True , eq = True , kw_only = True )
@@ -141,8 +150,8 @@ class CloudStorageCoreWithSensitiveFields(CloudStorageCore):
141150class DataConnectorUpdate :
142151 """Information about the update of a data connector."""
143152
144- old : DataConnector | GlobalDataConnector
145- new : DataConnector | GlobalDataConnector
153+ old : DataConnector # | GlobalDataConnector
154+ new : DataConnector # | GlobalDataConnector
146155
147156
148157@dataclass (frozen = True , eq = True , kw_only = True )
@@ -194,5 +203,5 @@ class DataConnectorPermissions:
194203class DataConnectorWithSecrets :
195204 """A data connector with its secrets."""
196205
197- data_connector : DataConnector | GlobalDataConnector
206+ data_connector : DataConnector # | GlobalDataConnector
198207 secrets : list [DataConnectorSecret ] = field (default_factory = list )
0 commit comments