src/pyams_content/component/paragraph/container.py
changeset 930 814f7c5e04d1
parent 928 de7b111fee8a
child 959 0d42d6bc3fb9
--- a/src/pyams_content/component/paragraph/container.py	Thu Sep 06 14:01:08 2018 +0200
+++ b/src/pyams_content/component/paragraph/container.py	Thu Sep 06 17:43:49 2018 +0200
@@ -42,23 +42,29 @@
         self[key] = value
         self.last_id += 1
 
-    def get_visible_paragraphs(self, anchors_only=False, factories=None):
-        for paragraph in self.values():
-            if not paragraph.visible:
-                continue
-            if anchors_only and not paragraph.anchor:
-                continue
-            if factories:
-                registry = get_global_registry()
-                has_factory = False
-                for factory_name in factories:
-                    factory = registry.queryUtility(IParagraphFactory, name=factory_name)
-                    has_factory = (factory is not None) and isinstance(paragraph, factory.content_type)
-                    if has_factory:
-                        break
-                if not has_factory:
+    def get_visible_paragraphs(self, names=None, anchors_only=False, factories=None):
+        if names:
+            for name in names:
+                paragraph = self.get(name)
+                if (paragraph is not None) and paragraph.visible:
+                    yield paragraph
+        else:
+            for paragraph in self.values():
+                if not paragraph.visible:
+                    continue
+                if anchors_only and not paragraph.anchor:
                     continue
-            yield paragraph
+                if factories:
+                    registry = get_global_registry()
+                    has_factory = False
+                    for factory_name in factories:
+                        factory = registry.queryUtility(IParagraphFactory, name=factory_name)
+                        has_factory = (factory is not None) and isinstance(paragraph, factory.content_type)
+                        if has_factory:
+                            break
+                    if not has_factory:
+                        continue
+                yield paragraph
 
 
 @adapter_config(context=IParagraphContainerTarget, provides=IParagraphContainer)