better partial config update
This commit is contained in:
parent
f36490f491
commit
46c974c078
|
|
@ -64,7 +64,7 @@ class AppConfigAppSerializer(
|
|||
enable_snapshot = serializers.BooleanField()
|
||||
|
||||
|
||||
class AppConfigSerializer(serializers.Serializer):
|
||||
class AppConfigSerializer(ValidateUnknownFieldsMixin, serializers.Serializer):
|
||||
"""serialize appconfig"""
|
||||
|
||||
subscriptions = AppConfigSubSerializer(required=False)
|
||||
|
|
|
|||
|
|
@ -177,8 +177,8 @@ class AppConfigApiView(ApiBaseView):
|
|||
},
|
||||
)
|
||||
def post(request):
|
||||
"""update config values, partial"""
|
||||
serializer = AppConfigSerializer(data=request.data)
|
||||
"""update config values, allows partial update"""
|
||||
serializer = AppConfigSerializer(data=request.data, partial=True)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
validated_data = serializer.validated_data
|
||||
updated_config = AppConfig().update_config(validated_data)
|
||||
|
|
|
|||
|
|
@ -48,13 +48,6 @@ class UserMeConfigSerializer(serializers.Serializer):
|
|||
show_subed_only = 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):
|
||||
"""serialize login"""
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ class UserConfigView(ApiBaseView):
|
|||
"""update config, allows partial update"""
|
||||
|
||||
data_serializer = UserMeConfigSerializer(
|
||||
data=request.data, required=False
|
||||
data=request.data, partial=True
|
||||
)
|
||||
data_serializer.is_valid(raise_exception=True)
|
||||
validated_data = data_serializer.validated_data
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
import APIClient from '../../functions/APIClient';
|
||||
import { AppSettingsConfigType } from '../loader/loadAppsettingsConfig';
|
||||
|
||||
const updateAppsettingsConfig = async (
|
||||
configKey: string,
|
||||
configValue: string | boolean | number | null,
|
||||
) => {
|
||||
const updateAppsettingsConfig = async (updatedConfig: Partial<AppSettingsConfigType>) => {
|
||||
return APIClient('/api/appsettings/config/', {
|
||||
method: 'POST',
|
||||
body: { [configKey]: configValue },
|
||||
body: updatedConfig,
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -151,7 +151,9 @@ const SettingsApplication = () => {
|
|||
configKey: string,
|
||||
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);
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue