primitive 0.1.58__py3-none-any.whl → 0.1.60__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.
- primitive/__about__.py +1 -1
- primitive/agent/__init__.py +0 -0
- primitive/agent/actions.py +8 -4
- primitive/agent/process.py +2 -2
- primitive/agent/provision.py +2 -8
- primitive/agent/runner.py +22 -12
- primitive/agent/uploader.py +78 -49
- primitive/auth/actions.py +5 -12
- primitive/auth/graphql/__init__.py +0 -0
- primitive/auth/graphql/queries.py +13 -0
- primitive/cli.py +11 -5
- primitive/client.py +4 -0
- primitive/daemons/__init__.py +0 -0
- primitive/exec/__init__.py +0 -0
- primitive/exec/actions.py +50 -0
- primitive/exec/commands.py +22 -0
- primitive/files/__init__.py +0 -0
- primitive/files/actions.py +9 -16
- primitive/files/graphql/__init__.py +0 -0
- primitive/files/graphql/mutations.py +11 -0
- primitive/git/actions.py +11 -11
- primitive/git/commands.py +7 -6
- primitive/git/graphql/__init__.py +0 -0
- primitive/git/graphql/queries.py +7 -0
- primitive/graphql/relay.py +32 -0
- primitive/graphql/utility_fragments.py +19 -0
- primitive/hardware/__init__.py +0 -0
- primitive/hardware/actions.py +74 -121
- primitive/hardware/commands.py +15 -5
- primitive/hardware/graphql/__init__.py +0 -0
- primitive/hardware/graphql/fragments.py +22 -0
- primitive/hardware/graphql/mutations.py +45 -0
- primitive/hardware/graphql/queries.py +31 -0
- primitive/jobs/__init__.py +0 -0
- primitive/jobs/actions.py +32 -201
- primitive/jobs/graphql/__init__.py +0 -0
- primitive/jobs/graphql/fragments.py +47 -0
- primitive/jobs/graphql/mutations.py +11 -0
- primitive/jobs/graphql/queries.py +100 -0
- primitive/lint/__init__.py +0 -0
- primitive/organizations/__init__.py +0 -0
- primitive/organizations/actions.py +4 -49
- primitive/organizations/graphql/__init__.py +0 -0
- primitive/organizations/graphql/fragments.py +10 -0
- primitive/organizations/graphql/mutations.py +0 -0
- primitive/organizations/graphql/queries.py +38 -0
- primitive/projects/actions.py +5 -47
- primitive/projects/graphql/__init__.py +0 -0
- primitive/projects/graphql/fragments.py +10 -0
- primitive/projects/graphql/mutations.py +0 -0
- primitive/projects/graphql/queries.py +36 -0
- primitive/reservations/__init__.py +0 -0
- primitive/reservations/actions.py +134 -0
- primitive/reservations/commands.py +67 -0
- primitive/reservations/graphql/__init__.py +0 -0
- primitive/reservations/graphql/fragments.py +40 -0
- primitive/reservations/graphql/mutations.py +29 -0
- primitive/reservations/graphql/queries.py +47 -0
- primitive/sim/actions.py +12 -9
- primitive/utils/__init__.py +0 -0
- primitive/utils/cache.py +14 -0
- primitive/utils/shell.py +25 -0
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/METADATA +1 -1
- primitive-0.1.60.dist-info/RECORD +95 -0
- primitive-0.1.58.dist-info/RECORD +0 -53
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/WHEEL +0 -0
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/entry_points.txt +0 -0
- {primitive-0.1.58.dist-info → primitive-0.1.60.dist-info}/licenses/LICENSE.txt +0 -0
primitive/jobs/actions.py
CHANGED
@@ -1,9 +1,18 @@
|
|
1
1
|
from typing import List, Optional
|
2
|
-
from gql import gql
|
3
2
|
|
3
|
+
from gql import gql
|
4
4
|
|
5
5
|
from primitive.utils.actions import BaseAction
|
6
|
+
|
6
7
|
from ..utils.auth import guard
|
8
|
+
from .graphql.mutations import job_run_update_mutation
|
9
|
+
from .graphql.queries import (
|
10
|
+
github_app_token_for_job_run_query,
|
11
|
+
job_run_query,
|
12
|
+
job_run_status_query,
|
13
|
+
job_runs_query,
|
14
|
+
jobs_query,
|
15
|
+
)
|
7
16
|
|
8
17
|
|
9
18
|
class Jobs(BaseAction):
|
@@ -17,52 +26,7 @@ class Jobs(BaseAction):
|
|
17
26
|
first: Optional[int] = 1,
|
18
27
|
last: Optional[int] = None,
|
19
28
|
):
|
20
|
-
query = gql(
|
21
|
-
"""
|
22
|
-
fragment PageInfoFragment on PageInfo {
|
23
|
-
hasNextPage
|
24
|
-
hasPreviousPage
|
25
|
-
startCursor
|
26
|
-
endCursor
|
27
|
-
}
|
28
|
-
|
29
|
-
fragment JobFragment on Job {
|
30
|
-
id
|
31
|
-
pk
|
32
|
-
slug
|
33
|
-
name
|
34
|
-
createdAt
|
35
|
-
updatedAt
|
36
|
-
}
|
37
|
-
|
38
|
-
query jobs(
|
39
|
-
$before: String
|
40
|
-
$after: String
|
41
|
-
$first: Int
|
42
|
-
$last: Int
|
43
|
-
$filters: JobFilters
|
44
|
-
) {
|
45
|
-
jobs(
|
46
|
-
before: $before
|
47
|
-
after: $after
|
48
|
-
first: $first
|
49
|
-
last: $last
|
50
|
-
filters: $filters
|
51
|
-
) {
|
52
|
-
totalCount
|
53
|
-
pageInfo {
|
54
|
-
...PageInfoFragment
|
55
|
-
}
|
56
|
-
edges {
|
57
|
-
cursor
|
58
|
-
node {
|
59
|
-
...JobFragment
|
60
|
-
}
|
61
|
-
}
|
62
|
-
}
|
63
|
-
}
|
64
|
-
"""
|
65
|
-
)
|
29
|
+
query = gql(jobs_query)
|
66
30
|
|
67
31
|
filters = {}
|
68
32
|
if organization_id:
|
@@ -101,73 +65,7 @@ class Jobs(BaseAction):
|
|
101
65
|
first: Optional[int] = 1,
|
102
66
|
last: Optional[int] = None,
|
103
67
|
):
|
104
|
-
query = gql(
|
105
|
-
"""
|
106
|
-
fragment PageInfoFragment on PageInfo {
|
107
|
-
hasNextPage
|
108
|
-
hasPreviousPage
|
109
|
-
startCursor
|
110
|
-
endCursor
|
111
|
-
}
|
112
|
-
|
113
|
-
fragment JobRunFragment on JobRun {
|
114
|
-
id
|
115
|
-
pk
|
116
|
-
createdAt
|
117
|
-
updatedAt
|
118
|
-
completedAt
|
119
|
-
startedAt
|
120
|
-
status
|
121
|
-
conclusion
|
122
|
-
job {
|
123
|
-
id
|
124
|
-
pk
|
125
|
-
slug
|
126
|
-
name
|
127
|
-
createdAt
|
128
|
-
updatedAt
|
129
|
-
}
|
130
|
-
jobSettings {
|
131
|
-
containerArgs
|
132
|
-
rootDirectory
|
133
|
-
}
|
134
|
-
gitCommit {
|
135
|
-
sha
|
136
|
-
branch
|
137
|
-
repoFullName
|
138
|
-
}
|
139
|
-
}
|
140
|
-
|
141
|
-
query jobRuns(
|
142
|
-
$before: String
|
143
|
-
$after: String
|
144
|
-
$first: Int
|
145
|
-
$last: Int
|
146
|
-
$filters: JobRunFilters
|
147
|
-
$order: JobRunOrder
|
148
|
-
) {
|
149
|
-
jobRuns(
|
150
|
-
before: $before
|
151
|
-
after: $after
|
152
|
-
first: $first
|
153
|
-
last: $last
|
154
|
-
filters: $filters
|
155
|
-
order: $order
|
156
|
-
) {
|
157
|
-
totalCount
|
158
|
-
pageInfo {
|
159
|
-
...PageInfoFragment
|
160
|
-
}
|
161
|
-
edges {
|
162
|
-
cursor
|
163
|
-
node {
|
164
|
-
...JobRunFragment
|
165
|
-
}
|
166
|
-
}
|
167
|
-
}
|
168
|
-
}
|
169
|
-
"""
|
170
|
-
)
|
68
|
+
query = gql(job_runs_query)
|
171
69
|
|
172
70
|
filters = {}
|
173
71
|
if organization_id:
|
@@ -194,50 +92,18 @@ query jobRuns(
|
|
194
92
|
},
|
195
93
|
}
|
196
94
|
|
197
|
-
result = self.primitive.session.execute(
|
95
|
+
result = self.primitive.session.execute(
|
96
|
+
query, variable_values=variables, get_execution_result=True
|
97
|
+
)
|
198
98
|
return result
|
199
99
|
|
200
100
|
@guard
|
201
101
|
def get_job_run(self, id: str):
|
202
|
-
query = gql(
|
203
|
-
"""
|
204
|
-
fragment JobRunFragment on JobRun {
|
205
|
-
id
|
206
|
-
pk
|
207
|
-
createdAt
|
208
|
-
updatedAt
|
209
|
-
completedAt
|
210
|
-
startedAt
|
211
|
-
status
|
212
|
-
conclusion
|
213
|
-
job {
|
214
|
-
id
|
215
|
-
pk
|
216
|
-
slug
|
217
|
-
name
|
218
|
-
createdAt
|
219
|
-
updatedAt
|
220
|
-
}
|
221
|
-
gitCommit {
|
222
|
-
sha
|
223
|
-
branch
|
224
|
-
repoFullName
|
225
|
-
}
|
226
|
-
jobSettings {
|
227
|
-
containerArgs
|
228
|
-
rootDirectory
|
229
|
-
}
|
230
|
-
}
|
231
|
-
|
232
|
-
query jobRun($id: GlobalID!) {
|
233
|
-
jobRun(id: $id) {
|
234
|
-
...JobRunFragment
|
235
|
-
}
|
236
|
-
}
|
237
|
-
"""
|
238
|
-
)
|
102
|
+
query = gql(job_run_query)
|
239
103
|
variables = {"id": id}
|
240
|
-
result = self.primitive.session.execute(
|
104
|
+
result = self.primitive.session.execute(
|
105
|
+
query, variable_values=variables, get_execution_result=True
|
106
|
+
)
|
241
107
|
return result
|
242
108
|
|
243
109
|
@guard
|
@@ -248,19 +114,7 @@ query jobRuns(
|
|
248
114
|
conclusion: str = None,
|
249
115
|
file_ids: Optional[List[str]] = [],
|
250
116
|
):
|
251
|
-
mutation = gql(
|
252
|
-
"""
|
253
|
-
mutation jobRunUpdate($input: JobRunUpdateInput!) {
|
254
|
-
jobRunUpdate(input: $input) {
|
255
|
-
... on JobRun {
|
256
|
-
id
|
257
|
-
status
|
258
|
-
conclusion
|
259
|
-
}
|
260
|
-
}
|
261
|
-
}
|
262
|
-
"""
|
263
|
-
)
|
117
|
+
mutation = gql(job_run_update_mutation)
|
264
118
|
input = {"id": id}
|
265
119
|
if status:
|
266
120
|
input["status"] = status
|
@@ -269,21 +123,19 @@ query jobRuns(
|
|
269
123
|
if file_ids and len(file_ids) > 0:
|
270
124
|
input["files"] = file_ids
|
271
125
|
variables = {"input": input}
|
272
|
-
result = self.primitive.session.execute(
|
126
|
+
result = self.primitive.session.execute(
|
127
|
+
mutation, variable_values=variables, get_execution_result=True
|
128
|
+
)
|
273
129
|
return result
|
274
130
|
|
275
131
|
@guard
|
276
132
|
def github_access_token_for_job_run(self, job_run_id: str):
|
277
|
-
query = gql(
|
278
|
-
"""
|
279
|
-
query ghAppTokenForJobRun($jobRunId: GlobalID!) {
|
280
|
-
ghAppTokenForJobRun(jobRunId: $jobRunId)
|
281
|
-
}
|
282
|
-
"""
|
283
|
-
)
|
133
|
+
query = gql(github_app_token_for_job_run_query)
|
284
134
|
variables = {"jobRunId": job_run_id}
|
285
|
-
result = self.primitive.session.execute(
|
286
|
-
|
135
|
+
result = self.primitive.session.execute(
|
136
|
+
query, variable_values=variables, get_execution_result=True
|
137
|
+
)
|
138
|
+
return result.data["ghAppTokenForJobRun"]
|
287
139
|
|
288
140
|
def get_latest_job_run_for_job(
|
289
141
|
self, job_slug: Optional[str] = None, job_id: Optional[str] = None
|
@@ -300,32 +152,11 @@ query ghAppTokenForJobRun($jobRunId: GlobalID!) {
|
|
300
152
|
]
|
301
153
|
return job_run
|
302
154
|
|
303
|
-
def job_run_start(
|
304
|
-
self,
|
305
|
-
job_slug: str,
|
306
|
-
job_id: str,
|
307
|
-
):
|
308
|
-
if not job_slug and not job_id:
|
309
|
-
raise ValueError("job_slug or job_id is required")
|
310
|
-
|
311
|
-
self.get_jobs(slug=job_slug)
|
312
|
-
|
313
155
|
@guard
|
314
156
|
def get_job_status(self, id: str):
|
315
|
-
query = gql(
|
316
|
-
"""
|
317
|
-
fragment JobRunFragment on JobRun {
|
318
|
-
id
|
319
|
-
status
|
320
|
-
}
|
321
|
-
|
322
|
-
query jobRun($id: GlobalID!) {
|
323
|
-
jobRun(id: $id) {
|
324
|
-
...JobRunFragment
|
325
|
-
}
|
326
|
-
}
|
327
|
-
"""
|
328
|
-
)
|
157
|
+
query = gql(job_run_status_query)
|
329
158
|
variables = {"id": id}
|
330
|
-
result = self.primitive.session.execute(
|
159
|
+
result = self.primitive.session.execute(
|
160
|
+
query, variable_values=variables, get_execution_result=True
|
161
|
+
)
|
331
162
|
return result
|
File without changes
|
@@ -0,0 +1,47 @@
|
|
1
|
+
job_fragment = """
|
2
|
+
fragment JobFragment on Job {
|
3
|
+
id
|
4
|
+
pk
|
5
|
+
slug
|
6
|
+
name
|
7
|
+
createdAt
|
8
|
+
updatedAt
|
9
|
+
}
|
10
|
+
"""
|
11
|
+
|
12
|
+
job_run_fragment = """
|
13
|
+
fragment JobRunFragment on JobRun {
|
14
|
+
id
|
15
|
+
pk
|
16
|
+
createdAt
|
17
|
+
updatedAt
|
18
|
+
completedAt
|
19
|
+
startedAt
|
20
|
+
status
|
21
|
+
conclusion
|
22
|
+
job {
|
23
|
+
id
|
24
|
+
pk
|
25
|
+
slug
|
26
|
+
name
|
27
|
+
createdAt
|
28
|
+
updatedAt
|
29
|
+
}
|
30
|
+
jobSettings {
|
31
|
+
containerArgs
|
32
|
+
rootDirectory
|
33
|
+
}
|
34
|
+
gitCommit {
|
35
|
+
sha
|
36
|
+
branch
|
37
|
+
repoFullName
|
38
|
+
}
|
39
|
+
}
|
40
|
+
"""
|
41
|
+
|
42
|
+
job_run_status_fragment = """
|
43
|
+
fragment JobRunStatusFragment on JobRun {
|
44
|
+
id
|
45
|
+
status
|
46
|
+
}
|
47
|
+
"""
|
@@ -0,0 +1,100 @@
|
|
1
|
+
from primitive.graphql.utility_fragments import page_info_fragment
|
2
|
+
|
3
|
+
from .fragments import job_fragment, job_run_fragment, job_run_status_fragment
|
4
|
+
|
5
|
+
jobs_query = (
|
6
|
+
page_info_fragment
|
7
|
+
+ job_fragment
|
8
|
+
+ """
|
9
|
+
query jobs(
|
10
|
+
$before: String
|
11
|
+
$after: String
|
12
|
+
$first: Int
|
13
|
+
$last: Int
|
14
|
+
$filters: JobFilters
|
15
|
+
) {
|
16
|
+
jobs(
|
17
|
+
before: $before
|
18
|
+
after: $after
|
19
|
+
first: $first
|
20
|
+
last: $last
|
21
|
+
filters: $filters
|
22
|
+
) {
|
23
|
+
totalCount
|
24
|
+
pageInfo {
|
25
|
+
...PageInfoFragment
|
26
|
+
}
|
27
|
+
edges {
|
28
|
+
cursor
|
29
|
+
node {
|
30
|
+
...JobFragment
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
"""
|
36
|
+
)
|
37
|
+
|
38
|
+
|
39
|
+
job_runs_query = (
|
40
|
+
page_info_fragment
|
41
|
+
+ job_run_fragment
|
42
|
+
+ """
|
43
|
+
query jobRuns(
|
44
|
+
$before: String
|
45
|
+
$after: String
|
46
|
+
$first: Int
|
47
|
+
$last: Int
|
48
|
+
$filters: JobRunFilters
|
49
|
+
$order: JobRunOrder
|
50
|
+
) {
|
51
|
+
jobRuns(
|
52
|
+
before: $before
|
53
|
+
after: $after
|
54
|
+
first: $first
|
55
|
+
last: $last
|
56
|
+
filters: $filters
|
57
|
+
order: $order
|
58
|
+
) {
|
59
|
+
totalCount
|
60
|
+
pageInfo {
|
61
|
+
...PageInfoFragment
|
62
|
+
}
|
63
|
+
edges {
|
64
|
+
cursor
|
65
|
+
node {
|
66
|
+
...JobRunFragment
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
71
|
+
"""
|
72
|
+
)
|
73
|
+
|
74
|
+
job_run_query = (
|
75
|
+
job_run_fragment
|
76
|
+
+ """
|
77
|
+
query jobRun($id: GlobalID!) {
|
78
|
+
jobRun(id: $id) {
|
79
|
+
...JobRunFragment
|
80
|
+
}
|
81
|
+
}
|
82
|
+
"""
|
83
|
+
)
|
84
|
+
|
85
|
+
github_app_token_for_job_run_query = """
|
86
|
+
query ghAppTokenForJobRun($jobRunId: GlobalID!) {
|
87
|
+
ghAppTokenForJobRun(jobRunId: $jobRunId)
|
88
|
+
}
|
89
|
+
"""
|
90
|
+
|
91
|
+
job_run_status_query = (
|
92
|
+
job_run_status_fragment
|
93
|
+
+ """
|
94
|
+
query jobRun($id: GlobalID!) {
|
95
|
+
jobRun(id: $id) {
|
96
|
+
...JobRunStatusFragment
|
97
|
+
}
|
98
|
+
}
|
99
|
+
"""
|
100
|
+
)
|
File without changes
|
File without changes
|
@@ -1,9 +1,11 @@
|
|
1
1
|
from typing import Optional
|
2
|
-
from gql import gql
|
3
2
|
|
3
|
+
from gql import gql
|
4
4
|
|
5
5
|
from primitive.utils.actions import BaseAction
|
6
|
+
|
6
7
|
from ..utils.auth import guard
|
8
|
+
from .graphql.queries import organizations_query
|
7
9
|
|
8
10
|
|
9
11
|
class Organizations(BaseAction):
|
@@ -15,54 +17,7 @@ class Organizations(BaseAction):
|
|
15
17
|
first: Optional[int] = 1,
|
16
18
|
last: Optional[int] = None,
|
17
19
|
):
|
18
|
-
query = gql(
|
19
|
-
"""
|
20
|
-
fragment PageInfoFragment on PageInfo {
|
21
|
-
hasNextPage
|
22
|
-
hasPreviousPage
|
23
|
-
startCursor
|
24
|
-
endCursor
|
25
|
-
}
|
26
|
-
|
27
|
-
fragment OrganizationFragment on Organization {
|
28
|
-
id
|
29
|
-
pk
|
30
|
-
slug
|
31
|
-
name
|
32
|
-
createdAt
|
33
|
-
updatedAt
|
34
|
-
}
|
35
|
-
|
36
|
-
query organizations(
|
37
|
-
$before: String
|
38
|
-
$after: String
|
39
|
-
$first: Int
|
40
|
-
$last: Int
|
41
|
-
$filters: OrganizationFilters
|
42
|
-
$order: OrganizationOrder
|
43
|
-
) {
|
44
|
-
organizations(
|
45
|
-
before: $before
|
46
|
-
after: $after
|
47
|
-
first: $first
|
48
|
-
last: $last
|
49
|
-
filters: $filters
|
50
|
-
order: $order
|
51
|
-
) {
|
52
|
-
totalCount
|
53
|
-
pageInfo {
|
54
|
-
...PageInfoFragment
|
55
|
-
}
|
56
|
-
edges {
|
57
|
-
cursor
|
58
|
-
node {
|
59
|
-
...OrganizationFragment
|
60
|
-
}
|
61
|
-
}
|
62
|
-
}
|
63
|
-
}
|
64
|
-
"""
|
65
|
-
)
|
20
|
+
query = gql(organizations_query)
|
66
21
|
|
67
22
|
filters = {}
|
68
23
|
if organization_id:
|
File without changes
|
File without changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
from primitive.graphql.utility_fragments import page_info_fragment
|
2
|
+
|
3
|
+
from .fragments import organization_fragment
|
4
|
+
|
5
|
+
organizations_query = (
|
6
|
+
page_info_fragment
|
7
|
+
+ organization_fragment
|
8
|
+
+ """
|
9
|
+
query organizations(
|
10
|
+
$before: String
|
11
|
+
$after: String
|
12
|
+
$first: Int
|
13
|
+
$last: Int
|
14
|
+
$filters: OrganizationFilters
|
15
|
+
$order: OrganizationOrder
|
16
|
+
) {
|
17
|
+
organizations(
|
18
|
+
before: $before
|
19
|
+
after: $after
|
20
|
+
first: $first
|
21
|
+
last: $last
|
22
|
+
filters: $filters
|
23
|
+
order: $order
|
24
|
+
) {
|
25
|
+
totalCount
|
26
|
+
pageInfo {
|
27
|
+
...PageInfoFragment
|
28
|
+
}
|
29
|
+
edges {
|
30
|
+
cursor
|
31
|
+
node {
|
32
|
+
...OrganizationFragment
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
"""
|
38
|
+
)
|
primitive/projects/actions.py
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
1
3
|
from gql import gql
|
2
4
|
|
3
|
-
from typing import Optional
|
4
5
|
from primitive.utils.actions import BaseAction
|
6
|
+
|
5
7
|
from ..utils.auth import guard
|
8
|
+
from .graphql.queries import projects_query
|
6
9
|
|
7
10
|
|
8
11
|
class Projects(BaseAction):
|
@@ -14,52 +17,7 @@ class Projects(BaseAction):
|
|
14
17
|
first: Optional[int] = 1,
|
15
18
|
last: Optional[int] = None,
|
16
19
|
):
|
17
|
-
query = gql(
|
18
|
-
"""
|
19
|
-
fragment PageInfoFragment on PageInfo {
|
20
|
-
hasNextPage
|
21
|
-
hasPreviousPage
|
22
|
-
startCursor
|
23
|
-
endCursor
|
24
|
-
}
|
25
|
-
|
26
|
-
fragment ProjectFragment on Project {
|
27
|
-
id
|
28
|
-
pk
|
29
|
-
slug
|
30
|
-
name
|
31
|
-
createdAt
|
32
|
-
updatedAt
|
33
|
-
}
|
34
|
-
|
35
|
-
query projects(
|
36
|
-
$before: String
|
37
|
-
$after: String
|
38
|
-
$first: Int
|
39
|
-
$last: Int
|
40
|
-
$filters: ProjectFilters
|
41
|
-
) {
|
42
|
-
projects(
|
43
|
-
before: $before
|
44
|
-
after: $after
|
45
|
-
first: $first
|
46
|
-
last: $last
|
47
|
-
filters: $filters
|
48
|
-
) {
|
49
|
-
totalCount
|
50
|
-
pageInfo {
|
51
|
-
...PageInfoFragment
|
52
|
-
}
|
53
|
-
edges {
|
54
|
-
cursor
|
55
|
-
node {
|
56
|
-
...ProjectFragment
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
61
|
-
"""
|
62
|
-
)
|
20
|
+
query = gql(projects_query)
|
63
21
|
|
64
22
|
filters = {}
|
65
23
|
if organization_id:
|
File without changes
|
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
from primitive.graphql.utility_fragments import page_info_fragment
|
2
|
+
|
3
|
+
from .fragments import project_fragment
|
4
|
+
|
5
|
+
projects_query = (
|
6
|
+
page_info_fragment
|
7
|
+
+ project_fragment
|
8
|
+
+ """
|
9
|
+
query projects(
|
10
|
+
$before: String
|
11
|
+
$after: String
|
12
|
+
$first: Int
|
13
|
+
$last: Int
|
14
|
+
$filters: ProjectFilters
|
15
|
+
) {
|
16
|
+
projects(
|
17
|
+
before: $before
|
18
|
+
after: $after
|
19
|
+
first: $first
|
20
|
+
last: $last
|
21
|
+
filters: $filters
|
22
|
+
) {
|
23
|
+
totalCount
|
24
|
+
pageInfo {
|
25
|
+
...PageInfoFragment
|
26
|
+
}
|
27
|
+
edges {
|
28
|
+
cursor
|
29
|
+
node {
|
30
|
+
...ProjectFragment
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
"""
|
36
|
+
)
|
File without changes
|