Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const useGetCustomTranslations = (
return useSnackQuery({
queryKey: ['customTranslations', accountId],
queryFn: () =>
getRequest(`/api/custom_translations/?account_id=${accountId}`),
getRequest(`/api/accounts/${accountId}/custom-translations/`),
options: {
retry: false,
keepPreviousData: true,
Expand Down
6 changes: 2 additions & 4 deletions hat/assets/js/apps/Iaso/domains/dataSources/requests.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
/* eslint-disable no-else-return */
import React from 'react';
import { useMutation, useQueryClient } from 'react-query';
import {
Expand Down Expand Up @@ -177,7 +176,7 @@ export const csvPreview = async data => {
};

export const updateDefaultDataSource = ([accountId, defaultVersionId]) =>
putRequest(`/api/accounts/${accountId}/`, {
putRequest(`/api/accounts/${accountId}/set-default-version/`, {
default_version: defaultVersionId,
});

Expand Down Expand Up @@ -212,7 +211,7 @@ export const useSaveDataSource = setFieldErrors => {

const saveDataSource = async form => {
setIsSaving(true);
// eslint-disable-next-line camelcase

const { is_default_source, ...campaignData } = getValues(form);

try {
Expand All @@ -234,7 +233,6 @@ export const useSaveDataSource = setFieldErrors => {
setIsSaving(false);
}

// eslint-disable-next-line camelcase
if (is_default_source && form.default_version_id.value) {
await saveDefaultDataSourceMutation.mutateAsync([
currentUser.account.id,
Expand Down
4 changes: 2 additions & 2 deletions hat/assets/js/apps/Iaso/hooks/useSwitchAccount.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { UseMutationResult } from 'react-query';
import { patchRequest } from '../libs/Api';
import { postRequest } from '../libs/Api';
import { useSnackMutation } from '../libs/apiHooks';

export const useSwitchAccount = (
onSuccess?: () => void,
): UseMutationResult<any> =>
useSnackMutation({
mutationFn: accountId =>
patchRequest('/api/accounts/switch/', { account_id: accountId }),
postRequest('/api/accounts/switch/', { account_id: accountId }),
options: { onSuccess: onSuccess || (() => null) },
showSuccessSnackBar: false,
});
97 changes: 0 additions & 97 deletions iaso/api/accounts.py

This file was deleted.

Empty file added iaso/api/accounts/__init__.py
Empty file.
5 changes: 5 additions & 0 deletions iaso/api/accounts/pagination.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from iaso.api.common import Paginator


class AccountPagination(Paginator):
page_size = 20
Empty file.
11 changes: 11 additions & 0 deletions iaso/api/accounts/serializers/custom_translations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from iaso.api.common import ModelSerializer
from iaso.models import Account


class AccountCustomTranslationsSerializer(ModelSerializer):
class Meta:
model = Account
fields = [
"custom_translations",
]
extra_kwargs = {"custom_translations": {"allow_null": True, "required": False, "read_only": True}}
8 changes: 8 additions & 0 deletions iaso/api/accounts/serializers/list.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from iaso.api.common import ModelSerializer
from iaso.models import Account


class AccountListSerializer(ModelSerializer):
class Meta:
model = Account
fields = ["id", "name", "created_at", "updated_at"]
18 changes: 18 additions & 0 deletions iaso/api/accounts/serializers/retrieve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from iaso.api.common import ModelSerializer
from iaso.models import Account


class AccountRetrieveSerializer(ModelSerializer):
class Meta:
model = Account
fields = [
"id",
"name",
"created_at",
"user_manual_path",
"forum_path",
"modules",
"enforce_password_validation",
"anthropic_api_key",
]
read_only_fields = fields
64 changes: 64 additions & 0 deletions iaso/api/accounts/serializers/retrieve_current.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers

from iaso.api.common import ModelSerializer
from iaso.models import Account, AccountFeatureFlag, DataSource, SourceVersion


class NestedDataSourceSerializer(ModelSerializer):
url = serializers.CharField(source="credentials.url", read_only=True, allow_null=True)

class Meta:
model = DataSource
fields = ["id", "url"]
read_only_fields = fields


class NestedDefaultVersionSerializer(ModelSerializer):
data_source = NestedDataSourceSerializer(read_only=True)

class Meta:
model = SourceVersion
fields = ["id", "data_source"]
read_only_fields = fields


class OtherAccountSerializer(ModelSerializer):
class Meta:
model = Account
fields = ["id", "name"]
read_only_fields = fields


class FeatureFlagNestedSerializer(ModelSerializer):
class Meta:
model = AccountFeatureFlag
fields = ["name", "code"]


class AccountRetrieveCurrentSerializer(ModelSerializer):
other_accounts = serializers.SerializerMethodField()
default_version = NestedDefaultVersionSerializer(allow_null=True, required=False)
feature_flags = FeatureFlagNestedSerializer(allow_null=True, many=True, required=False)

class Meta:
model = Account
fields = ["id", "name", "default_version", "other_accounts", "modules", "feature_flags"]
read_only_fields = fields

def __init__(self, *args, **kwargs):
self.other_account_qs = kwargs.pop("other_account_qs", None)

super(AccountRetrieveCurrentSerializer, self).__init__(*args, **kwargs)

if self.other_account_qs is None:
if getattr(self.context.get("request", None), "user", None):
self.other_account_qs = (
Account.objects.filter_for_user(self.context["request"].user)
.exclude(id=self.instance.id)
.distinct("id")
)

@extend_schema_field(OtherAccountSerializer(many=True, allow_null=True, allow_empty=True))
def get_other_accounts(self, obj):
return OtherAccountSerializer(self.other_account_qs, many=True).data
28 changes: 28 additions & 0 deletions iaso/api/accounts/serializers/set_default_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from rest_framework import serializers

from iaso.api.common import ModelSerializer
from iaso.models import Account, SourceVersion


class AccountSetDefaultVersionSerializer(ModelSerializer):
default_version = serializers.PrimaryKeyRelatedField(
queryset=SourceVersion.objects.none(),
error_messages={
"does_not_exist": "Account not allowed to access this default_source.",
},
write_only=True,
required=True,
)

class Meta:
model = Account
fields = ["default_version"]

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

self.fields["default_version"].queryset = (
SourceVersion.objects.filter(data_source__projects__account=self.instance)
.select_related("data_source")
.distinct()
)
15 changes: 15 additions & 0 deletions iaso/api/accounts/serializers/switch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from rest_framework import serializers

from iaso.models import Account


class AccountSwitchSerializer(serializers.Serializer):
account_id = serializers.PrimaryKeyRelatedField(queryset=Account.objects.none(), write_only=True, required=True)

def __init__(self, *args, **kwargs):
account_id_qs = kwargs.pop("account_id_qs", None)
super(AccountSwitchSerializer, self).__init__(*args, **kwargs)
if getattr(self.context.get("request", None), "user", None):
self.fields["account_id"].queryset = (
account_id_qs if account_id_qs else Account.objects.filter_for_user(self.context["request"].user)
)
25 changes: 25 additions & 0 deletions iaso/api/accounts/serializers/update.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from iaso.api.common import ModelSerializer
from iaso.models import Account


class AccountUpdateSerializer(ModelSerializer):
class Meta:
model = Account
fields = [
"name",
"user_manual_path",
"forum_path",
"modules",
"enforce_password_validation",
"anthropic_api_key",
"custom_translations",
]
extra_kwargs = {
"name": {"write_only": True},
"user_manual_path": {"write_only": True},
"forum_path": {"write_only": True},
"modules": {"write_only": True},
"enforce_password_validation": {"write_only": True},
"anthropic_api_key": {"write_only": True},
"custom_translations": {"write_only": True},
}
Loading
Loading