Skip to content

Commit 8bb6660

Browse files
authored
feat: add organization management functionality with create and update operations (#344)
1 parent d5064a4 commit 8bb6660

5 files changed

Lines changed: 307 additions & 33 deletions

File tree

openhexa/graphql/graphql_client/__init__.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
CreateDatasetCreateDataset,
2323
CreateDatasetCreateDatasetDataset,
2424
)
25+
from .create_organization import (
26+
CreateOrganization,
27+
CreateOrganizationCreateOrganization,
28+
CreateOrganizationCreateOrganizationOrganization,
29+
CreateOrganizationCreateOrganizationUser,
30+
)
2531
from .create_pipeline import (
2632
CreatePipeline,
2733
CreatePipelineCreatePipeline,
@@ -374,6 +380,20 @@
374380
InviteWorkspaceMemberInviteWorkspaceMember,
375381
InviteWorkspaceMemberInviteWorkspaceMemberWorkspaceMembership,
376382
)
383+
from .organization import (
384+
Organization,
385+
OrganizationOrganization,
386+
OrganizationOrganizationPermissions,
387+
OrganizationOrganizationWorkspaces,
388+
OrganizationOrganizationWorkspacesItems,
389+
OrganizationOrganizationWorkspacesItemsCountries,
390+
)
391+
from .organizations import (
392+
Organizations,
393+
OrganizationsOrganizations,
394+
OrganizationsOrganizationsWorkspaces,
395+
OrganizationsOrganizationsWorkspacesItems,
396+
)
377397
from .pipeline import (
378398
Pipeline,
379399
PipelinePipelineByCode,
@@ -412,6 +432,11 @@
412432
UpdateDatasetUpdateDataset,
413433
UpdateDatasetUpdateDatasetDataset,
414434
)
435+
from .update_organization import (
436+
UpdateOrganization,
437+
UpdateOrganizationUpdateOrganization,
438+
UpdateOrganizationUpdateOrganizationOrganization,
439+
)
415440
from .update_pipeline_heartbeat import (
416441
UpdatePipelineHeartbeat,
417442
UpdatePipelineHeartbeatUpdatePipelineHeartbeat,
@@ -505,6 +530,10 @@
505530
"CreateDatasetVersionInput",
506531
"CreateMembershipError",
507532
"CreateMembershipInput",
533+
"CreateOrganization",
534+
"CreateOrganizationCreateOrganization",
535+
"CreateOrganizationCreateOrganizationOrganization",
536+
"CreateOrganizationCreateOrganizationUser",
508537
"CreateOrganizationError",
509538
"CreateOrganizationInput",
510539
"CreatePipeline",
@@ -676,9 +705,19 @@
676705
"MembershipRole",
677706
"MessagePriority",
678707
"OrderByDirection",
708+
"Organization",
679709
"OrganizationInput",
680710
"OrganizationInvitationStatus",
681711
"OrganizationMembershipRole",
712+
"OrganizationOrganization",
713+
"OrganizationOrganizationPermissions",
714+
"OrganizationOrganizationWorkspaces",
715+
"OrganizationOrganizationWorkspacesItems",
716+
"OrganizationOrganizationWorkspacesItemsCountries",
717+
"Organizations",
718+
"OrganizationsOrganizations",
719+
"OrganizationsOrganizationsWorkspaces",
720+
"OrganizationsOrganizationsWorkspacesItems",
682721
"ParameterInput",
683722
"ParameterType",
684723
"ParameterWidget",
@@ -779,12 +818,15 @@
779818
"UpdateDatasetVersionInput",
780819
"UpdateMembershipError",
781820
"UpdateMembershipInput",
821+
"UpdateOrganization",
782822
"UpdateOrganizationError",
783823
"UpdateOrganizationInput",
784824
"UpdateOrganizationMemberError",
785825
"UpdateOrganizationMemberInput",
786826
"UpdateOrganizationSubscriptionError",
787827
"UpdateOrganizationSubscriptionInput",
828+
"UpdateOrganizationUpdateOrganization",
829+
"UpdateOrganizationUpdateOrganizationOrganization",
788830
"UpdatePipelineError",
789831
"UpdatePipelineHeartbeat",
790832
"UpdatePipelineHeartbeatUpdatePipelineHeartbeat",

openhexa/graphql/graphql_client/client.py

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
from .base_model import UNSET, UnsetType
1717
from .create_connection import CreateConnection, CreateConnectionCreateConnection
1818
from .create_dataset import CreateDataset, CreateDatasetCreateDataset
19+
from .create_organization import (
20+
CreateOrganization,
21+
CreateOrganizationCreateOrganization,
22+
)
1923
from .create_pipeline import CreatePipeline, CreatePipelineCreatePipeline
2024
from .create_pipeline_from_template_version import (
2125
CreatePipelineFromTemplateVersion,
@@ -50,6 +54,7 @@
5054
ArchiveWorkspaceInput,
5155
CreateConnectionInput,
5256
CreateDatasetInput,
57+
CreateOrganizationInput,
5358
CreatePipelineFromTemplateVersionInput,
5459
CreatePipelineInput,
5560
CreatePipelineRecipientInput,
@@ -67,6 +72,7 @@
6772
StopPipelineInput,
6873
UpdateConnectionInput,
6974
UpdateDatasetInput,
75+
UpdateOrganizationInput,
7076
UpdateWebappInput,
7177
UpdateWorkspaceInput,
7278
UpgradePipelineVersionFromTemplateInput,
@@ -76,6 +82,8 @@
7682
InviteWorkspaceMember,
7783
InviteWorkspaceMemberInviteWorkspaceMember,
7884
)
85+
from .organization import Organization, OrganizationOrganization
86+
from .organizations import Organizations, OrganizationsOrganizations
7987
from .pipeline import Pipeline, PipelinePipelineByCode
8088
from .pipelines import Pipelines, PipelinesPipelines
8189
from .remove_webapp_from_favorites import (
@@ -85,6 +93,10 @@
8593
from .stop_pipeline import StopPipeline, StopPipelineStopPipeline
8694
from .update_connection import UpdateConnection, UpdateConnectionUpdateConnection
8795
from .update_dataset import UpdateDataset, UpdateDatasetUpdateDataset
96+
from .update_organization import (
97+
UpdateOrganization,
98+
UpdateOrganizationUpdateOrganization,
99+
)
88100
from .update_pipeline_heartbeat import (
89101
UpdatePipelineHeartbeat,
90102
UpdatePipelineHeartbeatUpdatePipelineHeartbeat,
@@ -860,6 +872,126 @@ def delete_connection(
860872
data = self.get_data(response)
861873
return DeleteConnection.model_validate(data).delete_connection
862874

875+
def organization(
876+
self, id: Any, **kwargs: Any
877+
) -> Optional[OrganizationOrganization]:
878+
query = gql(
879+
"""
880+
query Organization($id: UUID!) {
881+
organization(id: $id) {
882+
id
883+
name
884+
shortName
885+
workspaces {
886+
items {
887+
slug
888+
name
889+
countries {
890+
code
891+
}
892+
}
893+
}
894+
permissions {
895+
createWorkspace
896+
archiveWorkspace
897+
}
898+
}
899+
}
900+
"""
901+
)
902+
variables: Dict[str, object] = {"id": id}
903+
response = self.execute(
904+
query=query, operation_name="Organization", variables=variables, **kwargs
905+
)
906+
data = self.get_data(response)
907+
return Organization.model_validate(data).organization
908+
909+
def organizations(self, **kwargs: Any) -> List[OrganizationsOrganizations]:
910+
query = gql(
911+
"""
912+
query Organizations {
913+
organizations {
914+
id
915+
name
916+
workspaces {
917+
items {
918+
slug
919+
name
920+
}
921+
}
922+
}
923+
}
924+
"""
925+
)
926+
variables: Dict[str, object] = {}
927+
response = self.execute(
928+
query=query, operation_name="Organizations", variables=variables, **kwargs
929+
)
930+
data = self.get_data(response)
931+
return Organizations.model_validate(data).organizations
932+
933+
def create_organization(
934+
self, input: CreateOrganizationInput, **kwargs: Any
935+
) -> CreateOrganizationCreateOrganization:
936+
query = gql(
937+
"""
938+
mutation CreateOrganization($input: CreateOrganizationInput!) {
939+
createOrganization(input: $input) {
940+
success
941+
errors
942+
organization {
943+
id
944+
name
945+
shortName
946+
}
947+
user {
948+
id
949+
email
950+
displayName
951+
}
952+
}
953+
}
954+
"""
955+
)
956+
variables: Dict[str, object] = {"input": input}
957+
response = self.execute(
958+
query=query,
959+
operation_name="CreateOrganization",
960+
variables=variables,
961+
**kwargs
962+
)
963+
data = self.get_data(response)
964+
return CreateOrganization.model_validate(data).create_organization
965+
966+
def update_organization(
967+
self, input: UpdateOrganizationInput, **kwargs: Any
968+
) -> UpdateOrganizationUpdateOrganization:
969+
query = gql(
970+
"""
971+
mutation UpdateOrganization($input: UpdateOrganizationInput!) {
972+
updateOrganization(input: $input) {
973+
success
974+
errors
975+
organization {
976+
id
977+
name
978+
shortName
979+
logo
980+
}
981+
}
982+
}
983+
"""
984+
)
985+
variables: Dict[str, object] = {"input": input}
986+
response = self.execute(
987+
query=query,
988+
operation_name="UpdateOrganization",
989+
variables=variables,
990+
**kwargs
991+
)
992+
data = self.get_data(response)
993+
return UpdateOrganization.model_validate(data).update_organization
994+
863995
def get_users(
864996
self, query: str, workspace_slug: str, **kwargs: Any
865997
) -> List[GetUsersUsers]:
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Generated by ariadne-codegen
2+
# Source: openhexa/graphql/queries.graphql
3+
4+
from typing import Any, List, Optional
5+
6+
from pydantic import Field
7+
8+
from .base_model import BaseModel
9+
from .enums import CreateOrganizationError
10+
11+
12+
class CreateOrganization(BaseModel):
13+
create_organization: "CreateOrganizationCreateOrganization" = Field(
14+
alias="createOrganization"
15+
)
16+
17+
18+
class CreateOrganizationCreateOrganization(BaseModel):
19+
success: bool
20+
errors: List[CreateOrganizationError]
21+
organization: Optional["CreateOrganizationCreateOrganizationOrganization"]
22+
user: Optional["CreateOrganizationCreateOrganizationUser"]
23+
24+
25+
class CreateOrganizationCreateOrganizationOrganization(BaseModel):
26+
id: Any
27+
name: str
28+
short_name: Optional[str] = Field(alias="shortName")
29+
30+
31+
class CreateOrganizationCreateOrganizationUser(BaseModel):
32+
id: Any
33+
email: str
34+
display_name: str = Field(alias="displayName")
35+
36+
37+
CreateOrganization.model_rebuild()
38+
CreateOrganizationCreateOrganization.model_rebuild()
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Generated by ariadne-codegen
2+
# Source: openhexa/graphql/queries.graphql
3+
4+
from typing import Any, List, Optional
5+
6+
from pydantic import Field
7+
8+
from .base_model import BaseModel
9+
from .enums import UpdateOrganizationError
10+
11+
12+
class UpdateOrganization(BaseModel):
13+
update_organization: "UpdateOrganizationUpdateOrganization" = Field(
14+
alias="updateOrganization"
15+
)
16+
17+
18+
class UpdateOrganizationUpdateOrganization(BaseModel):
19+
success: bool
20+
errors: List[UpdateOrganizationError]
21+
organization: Optional["UpdateOrganizationUpdateOrganizationOrganization"]
22+
23+
24+
class UpdateOrganizationUpdateOrganizationOrganization(BaseModel):
25+
id: Any
26+
name: str
27+
short_name: Optional[str] = Field(alias="shortName")
28+
logo: Optional[str]
29+
30+
31+
UpdateOrganization.model_rebuild()
32+
UpdateOrganizationUpdateOrganization.model_rebuild()

0 commit comments

Comments
 (0)