Index: quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/portlets.txt
===================================================================
--- quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/portlets.txt	(revision 1588)
+++ quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/portlets.txt	(revision 1589)
@@ -103,4 +103,7 @@
 </portlets>
 <BLANKLINE>
+
+
+New portlet must be added to existent ones.
 
 >>> 'habra-rss' in mapping
@@ -124,2 +127,100 @@
 >>> mapping['rss'].timeout
 60
+
+
+Export sections has also ``purge`` option which specifies if portlets must
+be purged before exporting. The ``purge`` option set to ``False`` by default
+and not purge existent portlets. To force purging - it must be set to ``True``.
+
+>>> portlets2 = """
+... [transmogrifier]
+... pipeline =
+...     portletssource
+...     portletsexporter
+...     printer
+...     dataprinter
+...     portletsimporter
+...     
+... [portletssource]
+... blueprint = quintagroup.transmogrifier.tests.portletssource2
+... 
+... [portletsexporter]
+... blueprint = quintagroup.transmogrifier.portletsexporter
+... 
+... [printer]
+... blueprint = collective.transmogrifier.sections.tests.pprinter
+... 
+... [dataprinter]
+... blueprint = quintagroup.transmogrifier.tests.dataprinter
+... print = 
+...     _files
+...     portlets
+...     data
+... 
+... [portletsimporter]
+... blueprint = quintagroup.transmogrifier.portletsimporter
+... files-key = files
+... purge = True
+... """
+>>> registerConfig(u'quintagroup.transmogrifier.tests.portlets2', portlets2)
+>>> transmogrifier(u'quintagroup.transmogrifier.tests.portlets2') # doctest: +ELLIPSIS, +REPORT_NDIFF
+{}
+{'_files': {'portlets': {'data': ...
+			 'name': '.portlets.xml'}},
+ '_path': 'other-assignable',
+ 'files': {'portlets': {'data': ...
+			'name': '.portlets.xml'}}}
+<?xml version="1.0" encoding="utf-8"?>
+<portlets>
+  <assignment category="context" key="/other-assignable" manager="plone.leftcolumn" name="rss" type="portlets.rss">
+    <property name="count">
+      10
+    </property>
+    <property name="url">
+      http://sumno.com/feeds/main-page/
+    </property>
+    <property name="portlet_title">
+      RSS feed
+    </property>
+    <property name="timeout">
+      60
+    </property>
+  </assignment>
+  <assignment category="context" key="/other-assignable" manager="plone.leftcolumn" name="habra-rss" type="portlets.rss">
+    <property name="count">
+      20
+    </property>
+    <property name="url">
+      http://habrahabr.ru/rss/
+    </property>
+    <property name="portlet_title">
+      Habrahabr RSS feed
+    </property>
+    <property name="timeout">
+      120
+    </property>
+  </assignment>
+  <blacklist category="user" manager="plone.leftcolumn" status="block"/>
+  <blacklist category="group" manager="plone.leftcolumn" status="acquire"/>
+  <blacklist category="content_type" manager="plone.leftcolumn" status="acquire"/>
+  <blacklist category="context" manager="plone.leftcolumn" status="acquire"/>
+</portlets>
+<BLANKLINE>
+
+Now only 'sumno-rss-2' portlet must be present in mapping after portlets purging.
+
+>>> 'habra-rss' in mapping
+False
+>>> 'rss' in mapping
+False
+>>> 'sumno-rss-2' in mapping
+True
+>>> mapping['sumno-rss-2'].count
+30
+>>> mapping['sumno-rss-2'].url
+u'http://sumno.com/rss'
+>>> mapping['sumno-rss-2'].portlet_title
+u'Sumno RSS feed'
+>>> mapping['sumno-rss-2'].timeout
+360
+
Index: quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/tests.py
===================================================================
--- quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/tests.py	(revision 1588)
+++ quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/tests.py	(revision 1589)
@@ -1102,4 +1102,43 @@
         name=u'quintagroup.transmogrifier.tests.portletssource')
 
+    class PortletsSource2(SampleSource):
+        classProvides(ISectionBlueprint)
+        implements(ISection)
+
+        def __init__(self, *args, **kw):
+            super(PortletsSource2, self).__init__(*args, **kw)
+            self.sample = (
+                dict(),
+                dict(_path='other-assignable',
+                    files=dict(portlets=dict(
+                        name='.portlets.xml',
+                        data="""<?xml version="1.0" encoding="utf-8"?>
+<portlets>
+  <assignment category="context" key="/other-assignable" manager="plone.leftcolumn" name="sumno-rss-2" type="portlets.rss">
+    <property name="count">
+      30
+    </property>
+    <property name="url">
+      http://sumno.com/rss
+    </property>
+    <property name="portlet_title">
+      Sumno RSS feed
+    </property>
+    <property name="timeout">
+      360
+    </property>
+  </assignment>
+  <blacklist category="user" manager="plone.leftcolumn" status="block"/>
+  <blacklist category="group" manager="plone.leftcolumn" status="acquire"/>
+  <blacklist category="content_type" manager="plone.leftcolumn" status="acquire"/>
+  <blacklist category="context" manager="plone.leftcolumn" status="acquire"/>
+</portlets>
+""")
+                    )
+                )
+            )
+    provideUtility(PortletsSource2,
+       name=u'quintagroup.transmogrifier.tests.portletssource2')
+
     # prepare the one portlet for testing
     from zope.interface import alsoProvides
