Skip to content

Commit dfe1378

Browse files
authored
chore: sync staging and main - (#1001) - #1006
Descrição das Alterações Este Pull Request tem como objetivo atualizar a branch atual com as últimas alterações da branch main, garantindo que a base de código esteja alinhada com as mudanças mais recentes.
2 parents cc9bc16 + 52e368f commit dfe1378

3 files changed

Lines changed: 71 additions & 2 deletions

File tree

backend/apps/api/v1/graphql.py

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# -*- coding: utf-8 -*-
22

3-
from graphene import UUID, Boolean, Float, List, ObjectType, String
3+
from graphene import UUID, Boolean, Float, List, Mutation, ObjectType, String
44
from graphene_django import DjangoObjectType
55

6-
from backend.apps.api.v1.models import Table, TableNeighbor
6+
from backend.apps.api.v1.models import Column, ObservationLevel, Table, TableNeighbor
77
from backend.apps.api.v1.sql_generator import OneBigTableQueryGenerator
88
from backend.custom.graphql_base import PlainTextNode
99

@@ -39,6 +39,42 @@ def resolve_score(root, info):
3939
return root.score
4040

4141

42+
class ReorderTables(Mutation):
43+
"""Set display order for tables within a dataset.
44+
ids: ordered list of table UUIDs (index 0 = first)."""
45+
46+
class Arguments:
47+
ids = List(UUID, required=True)
48+
49+
ok = Boolean()
50+
errors = List(String)
51+
52+
def mutate(root, info, ids):
53+
if not info.context.user.is_staff:
54+
return ReorderTables(ok=False, errors=["Permission denied"])
55+
for i, table_id in enumerate(ids):
56+
Table.objects.filter(pk=table_id).update(order=i)
57+
return ReorderTables(ok=True, errors=[])
58+
59+
60+
class ReorderObservationLevels(Mutation):
61+
"""Set display order for observation levels within a table.
62+
ids: ordered list of ObservationLevel UUIDs (index 0 = first)."""
63+
64+
class Arguments:
65+
ids = List(UUID, required=True)
66+
67+
ok = Boolean()
68+
errors = List(String)
69+
70+
def mutate(root, info, ids):
71+
if not info.context.user.is_staff:
72+
return ReorderObservationLevels(ok=False, errors=["Permission denied"])
73+
for i, ol_id in enumerate(ids):
74+
ObservationLevel.objects.filter(pk=ol_id).update(order=i)
75+
return ReorderObservationLevels(ok=True, errors=[])
76+
77+
4278
class Query(ObjectType):
4379
get_table_neighbor = List(
4480
TableNeighborNode,
@@ -63,3 +99,27 @@ def resolve_get_table_one_big_table_query(
6399
table, columns, include_table_translation
64100
)
65101
return sql_query
102+
103+
104+
class ReorderColumns(Mutation):
105+
"""Set display order for columns within a table.
106+
ids: ordered list of Column UUIDs (index 0 = first)."""
107+
108+
class Arguments:
109+
ids = List(UUID, required=True)
110+
111+
ok = Boolean()
112+
errors = List(String)
113+
114+
def mutate(root, info, ids):
115+
if not info.context.user.is_staff:
116+
return ReorderColumns(ok=False, errors=["Permission denied"])
117+
for i, col_id in enumerate(ids):
118+
Column.objects.filter(pk=col_id).update(order=i)
119+
return ReorderColumns(ok=True, errors=[])
120+
121+
122+
class APIMutation:
123+
reorder_tables = ReorderTables.Field()
124+
reorder_observation_levels = ReorderObservationLevels.Field()
125+
reorder_columns = ReorderColumns.Field()

backend/apps/schema.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from backend.apps.account.graphql import AccountMutation
33
from backend.apps.account_payment.graphql import Mutation as PaymentMutation
44
from backend.apps.account_payment.graphql import Query as PaymentQuery
5+
from backend.apps.api.v1.graphql import APIMutation
56
from backend.apps.api.v1.graphql import Query as APIQuery
67
from backend.apps.user_notifications.graphql import (
78
DeactivateAllTableUpdateNotification,
@@ -16,6 +17,7 @@
1617
extra_queries=[APIQuery, PaymentQuery, UserNotificationQuery],
1718
extra_mutations=[
1819
AccountMutation,
20+
APIMutation,
1921
PaymentMutation,
2022
TableUpdateNotification,
2123
DeactivateTableUpdateNotification,

backend/custom/graphql_auto.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,13 @@ def __init_subclass_with_meta__(
429429
_meta=_meta, input_fields=input_fields, **options
430430
)
431431

432+
@classmethod
433+
def perform_mutate(cls, form, info):
434+
obj = form.save(commit=False)
435+
obj.save()
436+
form.save_m2m()
437+
return cls(errors=[], **{cls._meta.return_field_name: obj})
438+
432439
@classmethod
433440
def get_form_kwargs(cls, root, info, **input):
434441
# Get file data

0 commit comments

Comments
 (0)