@@ -200,12 +200,11 @@ def create_system_landscape_view(
200200 **kwargs: Provide keyword arguments for instantiating a 
201201 `SystemLandscapeView` (recommended). 
202202 """ 
203-  # TODO: 
204-  # assertThatTheViewKeyIsSpecifiedAndUnique(key); 
205203 if  system_landscape_view  is  None :
206204 system_landscape_view  =  SystemLandscapeView (
207205 model = self .get_model (), ** kwargs 
208206 )
207+  self ._ensure_key_is_specific_and_unique (system_landscape_view .key )
209208 system_landscape_view .set_viewset (self )
210209 self .system_landscape_views .add (system_landscape_view )
211210 return  system_landscape_view 
@@ -224,9 +223,9 @@ def create_system_context_view(
224223 """ 
225224 # TODO: 
226225 # assertThatTheSoftwareSystemIsNotNull(softwareSystem); 
227-  # assertThatTheViewKeyIsSpecifiedAndUnique(key); 
228226 if  system_context_view  is  None :
229227 system_context_view  =  SystemContextView (** kwargs )
228+  self ._ensure_key_is_specific_and_unique (system_context_view .key )
230229 system_context_view .set_viewset (self )
231230 self .system_context_views .add (system_context_view )
232231 return  system_context_view 
@@ -245,9 +244,9 @@ def create_container_view(
245244 """ 
246245 # TODO: 
247246 # assertThatTheSoftwareSystemIsNotNull(softwareSystem); 
248-  # assertThatTheViewKeyIsSpecifiedAndUnique(key); 
249247 if  container_view  is  None :
250248 container_view  =  ContainerView (** kwargs )
249+  self ._ensure_key_is_specific_and_unique (container_view .key )
251250 container_view .set_viewset (self )
252251 self .container_views .add (container_view )
253252 return  container_view 
@@ -264,10 +263,9 @@ def create_component_view(
264263 **kwargs: Provide keyword arguments for instantiating a `ComponentView` 
265264 (recommended). 
266265 """ 
267-  # TODO: 
268-  # AssertThatTheViewKeyIsUnique(key); 
269266 if  component_view  is  None :
270267 component_view  =  ComponentView (** kwargs )
268+  self ._ensure_key_is_specific_and_unique (component_view .key )
271269 component_view .set_viewset (self )
272270 self .component_views .add (component_view )
273271 return  component_view 
@@ -279,9 +277,8 @@ def create_deployment_view(self, **kwargs) -> DeploymentView:
279277 Args: 
280278 **kwargs: Provide keyword arguments for instantiating a `DeploymentView` 
281279 """ 
282-  # TODO: 
283-  # AssertThatTheViewKeyIsUnique(key); 
284280 deployment_view  =  DeploymentView (** kwargs )
281+  self ._ensure_key_is_specific_and_unique (deployment_view .key )
285282 deployment_view .set_viewset (self )
286283 deployment_view .set_model (self .model )
287284 self .deployment_views .add (deployment_view )
@@ -294,9 +291,8 @@ def create_dynamic_view(self, **kwargs) -> DynamicView:
294291 Args: 
295292 **kwagrs: Provide keyword arguments for instantiating a `DynamicView`. 
296293 """ 
297-  # TODO: 
298-  # AssertThatTheViewKeyIsUnique(key); 
299294 dynamic_view  =  DynamicView (** kwargs )
295+  self ._ensure_key_is_specific_and_unique (dynamic_view .key )
300296 dynamic_view .set_viewset (self )
301297 dynamic_view .set_model (self .model )
302298 self .dynamic_views .add (dynamic_view )
@@ -309,9 +305,8 @@ def create_filtered_view(self, **kwargs) -> FilteredView:
309305 Args: 
310306 **kwargs: Provide keyword arguments for instantiating a `FilteredView`. 
311307 """ 
312-  # TODO: 
313-  # AssertThatTheViewKeyIsUnique(key); 
314308 filtered_view  =  FilteredView (** kwargs )
309+  self ._ensure_key_is_specific_and_unique (filtered_view .key )
315310 filtered_view .set_viewset (self )
316311 self .filtered_views .add (filtered_view )
317312 return  filtered_view 
@@ -338,6 +333,8 @@ def __getitem__(self, key: str) -> AbstractView:
338333
339334 def  copy_layout_information_from (self , source : "ViewSet" ) ->  None :
340335 """Copy all the layout information from a source ViewSet.""" 
336+ 
337+  # Note that filtered views don't have any layout information to copy. 
341338 for  source_view  in  source .system_landscape_views :
342339 destination_view  =  self ._find_system_landscape_view (source_view )
343340 if  destination_view :
@@ -368,6 +365,12 @@ def copy_layout_information_from(self, source: "ViewSet") -> None:
368365 if  destination_view :
369366 destination_view .copy_layout_information_from (source_view )
370367
368+  def  _ensure_key_is_specific_and_unique (self , key : str ) ->  None :
369+  if  key  is  None  or  key  ==  "" :
370+  raise  ValueError ("A key must be specified." )
371+  if  self .get_view (key ) is  not   None :
372+  raise  ValueError (f"View already exists in workspace with key '{ key }  '." )
373+ 
371374 def  _find_system_landscape_view (
372375 self , view : SystemLandscapeView 
373376 ) ->  Optional [SystemLandscapeView ]:
0 commit comments