mirror of
https://git.vectorsigma.ru/public/tubearchivist.git
synced 2026-08-05 00:29:40 +00:00
better partial config update
This commit is contained in:
@@ -64,7 +64,7 @@ class AppConfigAppSerializer(
|
|||||||
enable_snapshot = serializers.BooleanField()
|
enable_snapshot = serializers.BooleanField()
|
||||||
|
|
||||||
|
|
||||||
class AppConfigSerializer(serializers.Serializer):
|
class AppConfigSerializer(ValidateUnknownFieldsMixin, serializers.Serializer):
|
||||||
"""serialize appconfig"""
|
"""serialize appconfig"""
|
||||||
|
|
||||||
subscriptions = AppConfigSubSerializer(required=False)
|
subscriptions = AppConfigSubSerializer(required=False)
|
||||||
|
|||||||
@@ -177,8 +177,8 @@ class AppConfigApiView(ApiBaseView):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
def post(request):
|
def post(request):
|
||||||
"""update config values, partial"""
|
"""update config values, allows partial update"""
|
||||||
serializer = AppConfigSerializer(data=request.data)
|
serializer = AppConfigSerializer(data=request.data, partial=True)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
validated_data = serializer.validated_data
|
validated_data = serializer.validated_data
|
||||||
updated_config = AppConfig().update_config(validated_data)
|
updated_config = AppConfig().update_config(validated_data)
|
||||||
|
|||||||
@@ -48,13 +48,6 @@ class UserMeConfigSerializer(serializers.Serializer):
|
|||||||
show_subed_only = serializers.BooleanField()
|
show_subed_only = serializers.BooleanField()
|
||||||
show_help_text = serializers.BooleanField()
|
show_help_text = serializers.BooleanField()
|
||||||
|
|
||||||
def __init__(self, *args, required=True, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
# Override 'required' for all fields if provided
|
|
||||||
for field in self.fields.values():
|
|
||||||
field.required = required
|
|
||||||
|
|
||||||
|
|
||||||
class LoginSerializer(serializers.Serializer):
|
class LoginSerializer(serializers.Serializer):
|
||||||
"""serialize login"""
|
"""serialize login"""
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ class UserConfigView(ApiBaseView):
|
|||||||
"""update config, allows partial update"""
|
"""update config, allows partial update"""
|
||||||
|
|
||||||
data_serializer = UserMeConfigSerializer(
|
data_serializer = UserMeConfigSerializer(
|
||||||
data=request.data, required=False
|
data=request.data, partial=True
|
||||||
)
|
)
|
||||||
data_serializer.is_valid(raise_exception=True)
|
data_serializer.is_valid(raise_exception=True)
|
||||||
validated_data = data_serializer.validated_data
|
validated_data = data_serializer.validated_data
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
import APIClient from '../../functions/APIClient';
|
import APIClient from '../../functions/APIClient';
|
||||||
|
import { AppSettingsConfigType } from '../loader/loadAppsettingsConfig';
|
||||||
|
|
||||||
const updateAppsettingsConfig = async (
|
const updateAppsettingsConfig = async (updatedConfig: Partial<AppSettingsConfigType>) => {
|
||||||
configKey: string,
|
|
||||||
configValue: string | boolean | number | null,
|
|
||||||
) => {
|
|
||||||
return APIClient('/api/appsettings/config/', {
|
return APIClient('/api/appsettings/config/', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: { [configKey]: configValue },
|
body: updatedConfig,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -151,7 +151,9 @@ const SettingsApplication = () => {
|
|||||||
configKey: string,
|
configKey: string,
|
||||||
configValue: string | boolean | number | null,
|
configValue: string | boolean | number | null,
|
||||||
) => {
|
) => {
|
||||||
await updateAppsettingsConfig(configKey, configValue);
|
const [group, key] = configKey.split('.');
|
||||||
|
const updatedConfig = { [group]: { [key]: configValue } } as Partial<AppSettingsConfigType>;
|
||||||
|
await updateAppsettingsConfig(updatedConfig);
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user