clear-skies-gitlab 2.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. clear_skies_gitlab-2.0.1.dist-info/METADATA +75 -0
  2. clear_skies_gitlab-2.0.1.dist-info/RECORD +42 -0
  3. clear_skies_gitlab-2.0.1.dist-info/WHEEL +4 -0
  4. clear_skies_gitlab-2.0.1.dist-info/licenses/LICENSE +21 -0
  5. clearskies_gitlab/__init__.py +3 -0
  6. clearskies_gitlab/backends/__init__.py +9 -0
  7. clearskies_gitlab/backends/gitlab_rest_backend.py +150 -0
  8. clearskies_gitlab/defaults/__init__.py +7 -0
  9. clearskies_gitlab/defaults/gitlab_default_auth.py +7 -0
  10. clearskies_gitlab/defaults/gitlab_default_url.py +7 -0
  11. clearskies_gitlab/exceptions/__init__.py +13 -0
  12. clearskies_gitlab/exceptions/gitlab_error.py +50 -0
  13. clearskies_gitlab/models/__init__.py +19 -0
  14. clearskies_gitlab/models/gitlab_cicd_variable.py +23 -0
  15. clearskies_gitlab/models/gitlab_gql_model.py +9 -0
  16. clearskies_gitlab/models/gitlab_group.py +69 -0
  17. clearskies_gitlab/models/gitlab_member.py +24 -0
  18. clearskies_gitlab/models/gitlab_namespace.py +32 -0
  19. clearskies_gitlab/models/gitlab_project.py +110 -0
  20. clearskies_gitlab/models/gitlab_rest_model.py +11 -0
  21. clearskies_gitlab/models/rest/__init__.py +35 -0
  22. clearskies_gitlab/models/rest/gitlab_rest_advanced_search.py +38 -0
  23. clearskies_gitlab/models/rest/gitlab_rest_advanced_search_blob.py +26 -0
  24. clearskies_gitlab/models/rest/gitlab_rest_current_user.py +43 -0
  25. clearskies_gitlab/models/rest/gitlab_rest_group.py +75 -0
  26. clearskies_gitlab/models/rest/gitlab_rest_group_access_token.py +32 -0
  27. clearskies_gitlab/models/rest/gitlab_rest_group_member.py +28 -0
  28. clearskies_gitlab/models/rest/gitlab_rest_group_member_reference.py +6 -0
  29. clearskies_gitlab/models/rest/gitlab_rest_group_project.py +37 -0
  30. clearskies_gitlab/models/rest/gitlab_rest_group_reference.py +6 -0
  31. clearskies_gitlab/models/rest/gitlab_rest_group_search.py +21 -0
  32. clearskies_gitlab/models/rest/gitlab_rest_group_search_blob.py +13 -0
  33. clearskies_gitlab/models/rest/gitlab_rest_group_subgroup.py +65 -0
  34. clearskies_gitlab/models/rest/gitlab_rest_group_subgroup_reference.py +6 -0
  35. clearskies_gitlab/models/rest/gitlab_rest_group_variable.py +22 -0
  36. clearskies_gitlab/models/rest/gitlab_rest_namespace.py +69 -0
  37. clearskies_gitlab/models/rest/gitlab_rest_project.py +81 -0
  38. clearskies_gitlab/models/rest/gitlab_rest_project_reference.py +6 -0
  39. clearskies_gitlab/models/rest/gitlab_rest_project_repository_commit.py +44 -0
  40. clearskies_gitlab/models/rest/gitlab_rest_project_repository_commit_diff.py +34 -0
  41. clearskies_gitlab/models/rest/gitlab_rest_project_variable.py +24 -0
  42. clearskies_gitlab/models/rest/gitlab_rest_project_variable_refence.py +6 -0
@@ -0,0 +1,110 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any
5
+
6
+ from clearskies import Model
7
+ from clearskies.columns import BelongsToId, BelongsToModel, Boolean, Datetime, Integer, Json, Select, String
8
+
9
+ from clearskies_gitlab.models import gitlab_group, gitlab_namespace
10
+
11
+
12
+ class GitlabProject(Model):
13
+ """Base model for projects."""
14
+
15
+ id_column_name = "id"
16
+
17
+ id = String()
18
+ group_id = BelongsToId(gitlab_group.GitlabGroup)
19
+ group = BelongsToModel("group_id")
20
+ user_id = String()
21
+ namespace_id = BelongsToId(gitlab_namespace.GitlabNamespace)
22
+ namespace = BelongsToModel("namespace_id")
23
+ description = String()
24
+ description_html = String()
25
+ default_branch = String()
26
+ visibility = String()
27
+ ssh_url_to_repo = String()
28
+ http_url_to_repo = String()
29
+ web_url = String()
30
+ readme_url = String()
31
+ topics = Json()
32
+ owner = Json()
33
+ name = String()
34
+ name_with_namespace = String()
35
+ path = String()
36
+ path_with_namespace = String()
37
+ issues_enabled = Boolean()
38
+ open_issues_count = Integer()
39
+ merge_requests_enabled = Boolean()
40
+ jobs_enabled = Boolean()
41
+ wiki_enabled = Boolean()
42
+ snippets_enabled = Boolean()
43
+ can_create_merge_request_in = Boolean()
44
+ resolve_outdated_diff_discussions = Boolean()
45
+ container_registry_access_level = Select(allowed_values=["disabled", "private", "enabled"])
46
+ container_security_and_compliance_access_level = Select(allowed_values=["disabled", "private", "enabled"])
47
+ container_expiration_policy = Json()
48
+ created_at = Datetime()
49
+ updated_at = Datetime()
50
+ last_activity_at = Datetime()
51
+ creator_id = Integer()
52
+ import_url = String()
53
+ import_type = String()
54
+ import_status = String()
55
+ import_error = String()
56
+ permissions = Json()
57
+ archived = Boolean()
58
+ avatar_url = String()
59
+ license_url = String()
60
+ license = Json()
61
+ shared_runners_enabled = Boolean()
62
+ group_runners_enabled = Boolean()
63
+ forks_count = Integer()
64
+ star_count = Integer()
65
+ runners_token = String()
66
+ ci_default_git_depth = Integer()
67
+ ci_forward_deployment_enabled = Boolean()
68
+ ci_forward_deployment_rollback_allowed = Boolean()
69
+ ci_allow_fork_pipelines_to_run_in_parent_project = Boolean()
70
+ ci_separated_caches = Boolean()
71
+ ci_restrict_pipeline_cancellation_role = Select(allowed_values=["maintainer", "developer", "no_one"])
72
+ ci_pipeline_variables_minimum_override_role = Select(
73
+ allowed_values=["owner", "developer", "maintainer", "no_one_allowed"]
74
+ )
75
+ ci_push_repository_for_job_token_allowed = Boolean()
76
+ public_jobs = Boolean()
77
+ shared_with_groups = Json()
78
+ repository_storage = String()
79
+ only_allow_merge_if_pipeline_succeeds = Boolean()
80
+ allow_merge_on_skipped_pipeline = Boolean()
81
+ allow_pipeline_trigger_approve_deployment = Boolean()
82
+ restrict_user_defined_variables = Boolean()
83
+ only_allow_merge_if_all_discussions_are_resolved = Boolean()
84
+ remove_source_branch_after_merge = Boolean()
85
+ printing_merge_requests_link_enabled = Boolean()
86
+ request_access_enabled = Boolean()
87
+ only_allow_merge_if_pipeline_succeeds = Boolean()
88
+ merge_method = Select(allowed_values=["merge", "rebase_merge", "ff"])
89
+ squash_option = Select(allowed_values=["never", "always", "default_on", "default_off"])
90
+ auto_devops_enabled = Boolean()
91
+ auto_devops_deploy_strategy = Select(allowed_values=["continuous", "manual", "timed_incremental"])
92
+ mirror = Boolean()
93
+ mirror_user_id = Integer()
94
+ mirror_trigger_builds = Boolean()
95
+ only_mirror_protected_branches = Boolean()
96
+ mirror_overwrites_diverged_branches = Boolean()
97
+ external_authorization_classification_label = String()
98
+ packages_enabled = Boolean()
99
+ service_desk_enabled = Boolean()
100
+ service_desk_address = String()
101
+ autoclose_referenced_issues = Boolean()
102
+ suggestion_commit_message = String()
103
+ enforce_auth_checks_on_uploads = Boolean()
104
+ merge_commit_template = String()
105
+ squash_commit_template = String()
106
+ issue_branch_template = String()
107
+ marked_for_deletion_on = Datetime()
108
+ compliance_frameworks = Json()
109
+ statistics = Json()
110
+ container_registry_image_prefix = String()
@@ -0,0 +1,11 @@
1
+ from __future__ import annotations
2
+
3
+ from clearskies import Model
4
+
5
+ from clearskies_gitlab.backends import GitlabRestBackend
6
+
7
+
8
+ class GitlabRestModel(Model):
9
+ """Base model for rest api."""
10
+
11
+ backend = GitlabRestBackend()
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ from clearskies_gitlab.models.rest.gitlab_rest_advanced_search import GitlabRestAdvancedSearch
4
+ from clearskies_gitlab.models.rest.gitlab_rest_advanced_search_blob import GitlabRestAdvancedSearchBlob
5
+ from clearskies_gitlab.models.rest.gitlab_rest_current_user import GitlabRestCurrentUser
6
+ from clearskies_gitlab.models.rest.gitlab_rest_group import GitlabRestGroup
7
+ from clearskies_gitlab.models.rest.gitlab_rest_group_access_token import GitlabRestGroupAccessToken
8
+ from clearskies_gitlab.models.rest.gitlab_rest_group_project import GitlabRestGroupProject
9
+ from clearskies_gitlab.models.rest.gitlab_rest_group_search import GitlabRestGroupSearch
10
+ from clearskies_gitlab.models.rest.gitlab_rest_group_search_blob import GitlabRestGroupSearchBlob
11
+ from clearskies_gitlab.models.rest.gitlab_rest_group_subgroup import GitlabRestGroupSubgroup
12
+ from clearskies_gitlab.models.rest.gitlab_rest_group_variable import GitlabRestGroupVariable
13
+ from clearskies_gitlab.models.rest.gitlab_rest_project import GitlabRestProject
14
+ from clearskies_gitlab.models.rest.gitlab_rest_project_repository_commit import GitlabRestProjectRepositoryCommit
15
+ from clearskies_gitlab.models.rest.gitlab_rest_project_repository_commit_diff import (
16
+ GitlabRestProjectRepositoryCommitDiff,
17
+ )
18
+ from clearskies_gitlab.models.rest.gitlab_rest_project_variable import GitlabRestProjectVariable
19
+
20
+ __all__ = [
21
+ "GitlabRestAdvancedSearch",
22
+ "GitlabRestAdvancedSearchBlob",
23
+ "GitlabRestCurrentUser",
24
+ "GitlabRestGroup",
25
+ "GitlabRestGroupAccessToken",
26
+ "GitlabRestGroupProject",
27
+ "GitlabRestGroupSearch",
28
+ "GitlabRestGroupSearchBlob",
29
+ "GitlabRestGroupSubgroup",
30
+ "GitlabRestGroupVariable",
31
+ "GitlabRestProject",
32
+ "GitlabRestProjectRepositoryCommit",
33
+ "GitlabRestProjectRepositoryCommitDiff",
34
+ "GitlabRestProjectVariable",
35
+ ]
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import Boolean, Json, Select, String
7
+
8
+ from clearskies_gitlab.models import gitlab_rest_model
9
+
10
+
11
+ class GitlabRestAdvancedSearch(
12
+ gitlab_rest_model.GitlabRestModel,
13
+ ):
14
+ """Model for groups access tokens."""
15
+
16
+ @classmethod
17
+ def destination_name(cls: type[Self]) -> str:
18
+ """Return the slug of the api endpoint for this model."""
19
+ return "search"
20
+
21
+ scope = Select(
22
+ allowed_values=[
23
+ "projects",
24
+ "issues",
25
+ "merge_requests",
26
+ "milestones",
27
+ "snippet_titles",
28
+ "users",
29
+ "wiki_blobs",
30
+ "commits",
31
+ "blobs",
32
+ "notes",
33
+ ]
34
+ )
35
+ search = String()
36
+ confidential = Boolean()
37
+ state = String()
38
+ fields = Json()
@@ -0,0 +1,26 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any
5
+
6
+ from clearskies.columns import BelongsToId, BelongsToModel, Integer, String
7
+
8
+ from clearskies_gitlab.models.rest import gitlab_rest_advanced_search, gitlab_rest_project
9
+
10
+
11
+ class GitlabRestAdvancedSearchBlob(
12
+ gitlab_rest_advanced_search.GitlabRestAdvancedSearch,
13
+ ):
14
+ """Model for advanced searching blobs."""
15
+
16
+ basename = String()
17
+ data = String()
18
+ path = String()
19
+ filename = String()
20
+ id = Integer()
21
+ ref = String()
22
+ startline = Integer()
23
+ project_id = BelongsToId(
24
+ gitlab_rest_project.GitlabRestProject,
25
+ )
26
+ project = BelongsToModel("project_id")
@@ -0,0 +1,43 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import Boolean, Datetime, Email, Integer, Json, String
7
+
8
+ from clearskies_gitlab.models import gitlab_rest_model
9
+
10
+
11
+ class GitlabRestCurrentUser(
12
+ gitlab_rest_model.GitlabRestModel,
13
+ ):
14
+ """Model for current user."""
15
+
16
+ @classmethod
17
+ def destination_name(cls: type[Self]) -> str:
18
+ """Return the slug of the api endpoint for this model."""
19
+ return "user"
20
+
21
+ id = Integer()
22
+ username = String()
23
+ email = Email()
24
+ name = String()
25
+ state = String()
26
+ locked = Boolean()
27
+ avatar_url = String()
28
+ web_url = String()
29
+ created_at = Datetime()
30
+ bio = String()
31
+ public_email = Email()
32
+ organization = String()
33
+ bot = Boolean()
34
+ last_sign_in_at = Datetime()
35
+ confirmed_at = Datetime()
36
+ last_activity_on = Datetime()
37
+ identities = Json()
38
+ can_create_group = Boolean()
39
+ can_create_project = Boolean()
40
+ two_factor_enabled = Boolean()
41
+ external = Boolean()
42
+ private_profile = Boolean()
43
+ commit_email = Email()
@@ -0,0 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import (
7
+ BelongsToId,
8
+ BelongsToModel,
9
+ BelongsToSelf,
10
+ Boolean,
11
+ Datetime,
12
+ HasMany,
13
+ Integer,
14
+ Json,
15
+ Select,
16
+ String,
17
+ )
18
+
19
+ from clearskies_gitlab.models import gitlab_group, gitlab_rest_model
20
+ from clearskies_gitlab.models.rest import (
21
+ gitlab_rest_group_access_token,
22
+ gitlab_rest_group_member_reference,
23
+ gitlab_rest_group_project,
24
+ gitlab_rest_group_subgroup_reference,
25
+ gitlab_rest_group_variable,
26
+ gitlab_rest_project_reference,
27
+ )
28
+
29
+
30
+ class GitlabRestGroup(
31
+ gitlab_rest_model.GitlabRestModel,
32
+ gitlab_group.GitlabGroup,
33
+ ):
34
+ """Model for groups."""
35
+
36
+ @classmethod
37
+ def destination_name(cls: type[Self]) -> str:
38
+ """Return the slug of the api endpoint for this model."""
39
+ return "groups"
40
+
41
+ projects = HasMany(
42
+ gitlab_rest_group_project.GitlabRestGroupProject,
43
+ foreign_column_name="group_id",
44
+ )
45
+ access_tokens = HasMany(
46
+ gitlab_rest_group_access_token.GitlabRestGroupAccessToken,
47
+ foreign_column_name="group_id",
48
+ )
49
+ variables = HasMany(
50
+ gitlab_rest_group_variable.GitlabRestGroupVariable,
51
+ foreign_column_name="group_id",
52
+ )
53
+ subgroups = HasMany(
54
+ gitlab_rest_group_subgroup_reference.GitlabRestGroupSubgroupReference,
55
+ foreign_column_name="group_id",
56
+ )
57
+ members = HasMany(
58
+ gitlab_rest_group_member_reference.GitlabRestGroupMemberReference,
59
+ foreign_column_name="group_id",
60
+ )
61
+ parent_id = BelongsToSelf()
62
+ parent = BelongsToModel("parent_id")
63
+ ### Search params
64
+ skip_groups = Json()
65
+ all_available = Boolean()
66
+ search = String()
67
+ order_by = String()
68
+ sort = String()
69
+ visibility = Select(allowed_values=["public", "internal", "private"])
70
+ with_custom_attributes = Boolean()
71
+ owned = Boolean()
72
+ min_access_level = Integer()
73
+ top_level_only = Boolean()
74
+ repository_storage = String()
75
+ marked_for_deletion_on = Datetime(date_format="%Y-%m-%d")
@@ -0,0 +1,32 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import BelongsToId, BelongsToModel, Boolean, Datetime, Integer, Json, String
7
+
8
+ from clearskies_gitlab.models import gitlab_rest_model
9
+ from clearskies_gitlab.models.rest import gitlab_rest_group
10
+
11
+
12
+ class GitlabRestGroupAccessToken(
13
+ gitlab_rest_model.GitlabRestModel,
14
+ ):
15
+ """Model for groups access tokens."""
16
+
17
+ @classmethod
18
+ def destination_name(cls: type[Self]) -> str:
19
+ """Return the slug of the api endpoint for this model."""
20
+ return "groups/:group_id/access_tokens"
21
+
22
+ group_id = String()
23
+ id = Integer()
24
+ user_id = Integer()
25
+ name = String()
26
+ created_at = Datetime()
27
+ expires_at = Datetime(date_format="%Y-%m-%d")
28
+ active = Boolean()
29
+ revoked = Boolean()
30
+ access_level = Integer()
31
+ token = String()
32
+ scopes = Json()
@@ -0,0 +1,28 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import BelongsToId, BelongsToModel, Boolean, Json, String
7
+
8
+ from clearskies_gitlab.models import gitlab_member, gitlab_rest_model
9
+ from clearskies_gitlab.models.rest import gitlab_rest_group
10
+
11
+
12
+ class GitlabRestGroupMember(
13
+ gitlab_rest_model.GitlabRestModel,
14
+ gitlab_member.GitlabMember,
15
+ ):
16
+ """Model for group members."""
17
+
18
+ @classmethod
19
+ def destination_name(cls: type[Self]) -> str:
20
+ """Return the slug of the api endpoint for this model."""
21
+ return "groups/:group_id/members"
22
+
23
+ group_id = String()
24
+ query = String()
25
+ user_ids = Json()
26
+ skip_users = Json()
27
+ show_seat_info = Boolean()
28
+ all = Boolean()
@@ -0,0 +1,6 @@
1
+ from clearskies_gitlab.models.rest import gitlab_rest_group_member
2
+
3
+
4
+ class GitlabRestGroupMemberReference:
5
+ def get_model_class(self):
6
+ return gitlab_rest_group_member.GitlabRestGroupMember
@@ -0,0 +1,37 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import (
7
+ BelongsToId,
8
+ BelongsToModel,
9
+ BelongsToSelf,
10
+ Boolean,
11
+ Datetime,
12
+ HasMany,
13
+ Integer,
14
+ Json,
15
+ Select,
16
+ String,
17
+ )
18
+
19
+ from clearskies_gitlab.models import gitlab_project, gitlab_rest_model
20
+ from clearskies_gitlab.models.rest import (
21
+ gitlab_rest_group_access_token,
22
+ gitlab_rest_group_subgroup_reference,
23
+ gitlab_rest_group_variable,
24
+ gitlab_rest_project_reference,
25
+ )
26
+
27
+
28
+ class GitlabRestGroupProject(
29
+ gitlab_rest_model.GitlabRestModel,
30
+ gitlab_project.GitlabProject,
31
+ ):
32
+ """Model for groups projects."""
33
+
34
+ @classmethod
35
+ def destination_name(cls: type[Self]) -> str:
36
+ """Return the slug of the api endpoint for this model."""
37
+ return "groups/:group_id/projects"
@@ -0,0 +1,6 @@
1
+ from clearskies_gitlab.models.rest import gitlab_rest_group
2
+
3
+
4
+ class GitlabRestGroupReference:
5
+ def get_model_class(self):
6
+ return gitlab_rest_group.GitlabRestGroup
@@ -0,0 +1,21 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import Integer
7
+
8
+ from clearskies_gitlab.models.rest import gitlab_rest_advanced_search
9
+
10
+
11
+ class GitlabRestGroupSearch(
12
+ gitlab_rest_advanced_search.GitlabRestAdvancedSearch,
13
+ ):
14
+ """Model for groups access tokens."""
15
+
16
+ @classmethod
17
+ def destination_name(cls: type[Self]) -> str:
18
+ """Return the slug of the api endpoint for this model."""
19
+ return "groups/:group_id/search"
20
+
21
+ group_id = Integer()
@@ -0,0 +1,13 @@
1
+ from __future__ import annotations
2
+
3
+ from clearskies_gitlab.models.rest import (
4
+ gitlab_rest_advanced_search_blob,
5
+ gitlab_rest_group_search,
6
+ )
7
+
8
+
9
+ class GitlabRestGroupSearchBlob(
10
+ gitlab_rest_group_search.GitlabRestGroupSearch,
11
+ gitlab_rest_advanced_search_blob.GitlabRestAdvancedSearchBlob,
12
+ ):
13
+ """Model for advanced searching blobs."""
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import (
7
+ BelongsToId,
8
+ BelongsToModel,
9
+ BelongsToSelf,
10
+ Boolean,
11
+ Datetime,
12
+ HasMany,
13
+ Integer,
14
+ Json,
15
+ Select,
16
+ String,
17
+ )
18
+
19
+ from clearskies_gitlab.models import gitlab_group, gitlab_rest_model
20
+ from clearskies_gitlab.models.rest import (
21
+ gitlab_rest_group_access_token,
22
+ gitlab_rest_group_variable,
23
+ gitlab_rest_project_reference,
24
+ )
25
+
26
+
27
+ class GitlabRestGroupSubgroup(gitlab_rest_model.GitlabRestModel, gitlab_group.GitlabGroup):
28
+ """Model for Subgroups."""
29
+
30
+ id_column_name = "group_id"
31
+
32
+ @classmethod
33
+ def destination_name(cls: type[Self]) -> str:
34
+ """Return the slug of the api endpoint for this model."""
35
+ return "groups/:group_id/subgroups"
36
+
37
+ group_id = String()
38
+
39
+ projects = HasMany(
40
+ gitlab_rest_project_reference.GitlabRestProjectReference,
41
+ foreign_column_name="group_id",
42
+ )
43
+ access_tokens = HasMany(
44
+ gitlab_rest_group_access_token.GitlabRestGroupAccessToken,
45
+ foreign_column_name="group_id",
46
+ )
47
+ variables = HasMany(
48
+ gitlab_rest_group_variable.GitlabRestGroupVariable,
49
+ foreign_column_name="group_id",
50
+ )
51
+ parent_id = BelongsToSelf()
52
+ parent = BelongsToModel("parent_id")
53
+ ### Search params
54
+ skip_groups = Json()
55
+ all_available = Boolean()
56
+ search = String()
57
+ order_by = String()
58
+ sort = String()
59
+ visibility = Select(allowed_values=["public", "internal", "private"])
60
+ with_custom_attributes = Boolean()
61
+ owned = Boolean()
62
+ min_access_level = Integer()
63
+ top_level_only = Boolean()
64
+ repository_storage = String()
65
+ marked_for_deletion_on = Datetime(date_format="%Y-%m-%d")
@@ -0,0 +1,6 @@
1
+ from clearskies_gitlab.models.rest import gitlab_rest_group_subgroup
2
+
3
+
4
+ class GitlabRestGroupSubgroupReference:
5
+ def get_model_class(self):
6
+ return gitlab_rest_group_subgroup.GitlabRestGroupSubgroup
@@ -0,0 +1,22 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import TYPE_CHECKING, Any, Self
5
+
6
+ from clearskies.columns import BelongsToId, BelongsToModel, String
7
+
8
+ from clearskies_gitlab.models import gitlab_cicd_variable, gitlab_rest_model
9
+
10
+
11
+ class GitlabRestGroupVariable(
12
+ gitlab_rest_model.GitlabRestModel,
13
+ gitlab_cicd_variable.GitlabCICDVariable,
14
+ ):
15
+ """Model for gitlab group variables."""
16
+
17
+ @classmethod
18
+ def destination_name(cls: type[Self]) -> str:
19
+ """Return the slug of the api endpoint for this model."""
20
+ return "groups/:group_id/variables"
21
+
22
+ group_id = String()
@@ -0,0 +1,69 @@
1
+ from __future__ import annotations
2
+
3
+ from collections import OrderedDict
4
+ from typing import Any, Self
5
+
6
+ from clearskies.columns import (
7
+ BelongsToId,
8
+ BelongsToModel,
9
+ BelongsToSelf,
10
+ Boolean,
11
+ Datetime,
12
+ HasMany,
13
+ Integer,
14
+ Json,
15
+ Select,
16
+ String,
17
+ )
18
+
19
+ from clearskies_gitlab.models import gitlab_namespace, gitlab_rest_model
20
+ from clearskies_gitlab.models.rest import (
21
+ gitlab_rest_group_access_token,
22
+ gitlab_rest_group_subgroup_reference,
23
+ gitlab_rest_group_variable,
24
+ gitlab_rest_project_reference,
25
+ )
26
+
27
+
28
+ class GitlabRestNamespace(
29
+ gitlab_rest_model.GitlabRestModel,
30
+ gitlab_namespace.GitlabNamespace,
31
+ ):
32
+ """Model for namespaces."""
33
+
34
+ @classmethod
35
+ def destination_name(cls: type[Self]) -> str:
36
+ """Return the slug of the api endpoint for this model."""
37
+ return "namespaces"
38
+
39
+ projects = HasMany(
40
+ gitlab_rest_project_reference.GitlabRestProjectReference,
41
+ foreign_column_name="group_id",
42
+ )
43
+ access_tokens = HasMany(
44
+ gitlab_rest_group_access_token.GitlabRestGroupAccessToken,
45
+ foreign_column_name="group_id",
46
+ )
47
+ variables = HasMany(
48
+ gitlab_rest_group_variable.GitlabRestGroupVariable,
49
+ foreign_column_name="group_id",
50
+ )
51
+ subgroups = HasMany(
52
+ gitlab_rest_group_subgroup_reference.GitlabRestGroupSubgroupReference,
53
+ foreign_column_name="group_id",
54
+ )
55
+ parent_id = BelongsToSelf()
56
+ parent = BelongsToModel("parent_id")
57
+ ### Search params
58
+ skip_groups = Json()
59
+ all_available = Boolean()
60
+ search = String()
61
+ order_by = String()
62
+ sort = String()
63
+ visibility = Select(allowed_values=["public", "internal", "private"])
64
+ with_custom_attributes = Boolean()
65
+ owned = Boolean()
66
+ min_access_level = Integer()
67
+ top_level_only = Boolean()
68
+ repository_storage = String()
69
+ marked_for_deletion_on = Datetime(date_format="%Y-%m-%d")