@@ -260,7 +260,7 @@ def get_queryset(self):
260260
261261 def destroy (self , * args , ** kwargs ):
262262 key = self .get_object ().key
263- response = super (TokenViewSet , self ).destroy (self , * args , ** kwargs )
263+ response = super ().destroy (self , * args , ** kwargs )
264264 cache .delete (key )
265265 return response
266266
@@ -294,7 +294,7 @@ def get_object(self, **kwargs):
294294
295295 def create (self , request , ** kwargs ):
296296 request .data ['app' ] = self .get_app ()
297- return super (AppFilterViewSet , self ).create (request , ** kwargs )
297+ return super ().create (request , ** kwargs )
298298
299299
300300class ReleasableViewSet (AppFilterViewSet ):
@@ -327,7 +327,7 @@ def list(self, request, *args, **kwargs):
327327 which are owned by the user as well as any apps they have been given permission to
328328 interact with.
329329 """
330- queryset = super (AppViewSet , self ).get_queryset (** kwargs ) | \
330+ queryset = super ().get_queryset (** kwargs ) | \
331331 get_objects_for_user (
332332 self .request .user , f'api.{ models .app .VIEW_APP_PERMISSION .codename } ' )
333333 instance = self .filter_queryset (queryset )
@@ -394,7 +394,7 @@ def post_save(self, build):
394394 if is_loopback (image ):
395395 raise DryccException ("image must not use the loopback address" )
396396 build .create_release (self .request .user )
397- super (BuildViewSet , self ).post_save (build )
397+ super ().post_save (build )
398398
399399
400400class LimitSpecViewSet (BaseDryccViewSet ):
@@ -438,6 +438,15 @@ class ConfigViewSet(ReleasableViewSet):
438438 model = models .config .Config
439439 serializer_class = serializers .ConfigSerializer
440440
441+ def create (self , request , ** kwargs ):
442+ if self .request .query_params .get ('merge' , 'true' ).lower () == 'true' :
443+ return super ().create (request , ** kwargs )
444+ values = self .get_serializer ().validate_values (request .data .get ('values' ))
445+ config = self .model (app = self .get_app (), owner = self .request .user , values = values )
446+ config .save (ignore_update_fields = ["values" ])
447+ self .post_save (config )
448+ return Response (status = status .HTTP_201_CREATED )
449+
441450 def delete (self , request , ** kwargs ):
442451 values_refs = self .get_serializer ().validate_values_refs (request .data .get ('values_refs' ))
443452 if not values_refs or not values_refs .values ():
@@ -691,7 +700,7 @@ def get_object(self, **kwargs):
691700
692701 def get_queryset (self , ** kwargs ):
693702 ptypes = self .request .query_params .get ('ptypes' , '' ).strip ()
694- queryset = super (ReleaseViewSet , self ).get_queryset (** kwargs )
703+ queryset = super ().get_queryset (** kwargs )
695704 if ptypes :
696705 queryset = queryset .filter (Q (
697706 deployed_ptypes__contains = [
@@ -829,7 +838,7 @@ def create(self, request, *args, **kwargs):
829838 return Response (message , status = status .HTTP_403_FORBIDDEN )
830839 request .data ['app' ] = app
831840 request .data ['owner' ] = self .user
832- super (BuildHookViewSet , self ).create (request , * args , ** kwargs )
841+ super ().create (request , * args , ** kwargs )
833842 # return the application databag
834843 response = {
835844 'release' : {
@@ -1067,7 +1076,7 @@ def get_object(self):
10671076 def retrieve (self , request , * args , ** kwargs ):
10681077 resource = self .get_object ()
10691078 resource .retrieve (request )
1070- response = super (AppSingleResourceViewSet , self ).retrieve (request , * args , ** kwargs ) # noqa
1079+ response = super ().retrieve (request , * args , ** kwargs ) # noqa
10711080 response .data ["message" ] = resource .message
10721081 return response
10731082
0 commit comments