Changeset 811

Show
Ignore:
Timestamp:
05/22/07 16:31:26 (2 years ago)
Author:
sgillies
Message:

Complete adaptation of members folder

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • Geographer/trunk/configure.zcml

    r810 r811  
    3535 
    3636  <five:implements 
     37    class="Products.ATContentTypes.content.folder.ATBTreeFolder" 
     38    interface=".interfaces.IGeoreferenceable" 
     39    /> 
     40 
     41  <five:implements 
    3742    class="Products.ATContentTypes.content.topic.ATTopic" 
    3843    interface=".interfaces.IGeoreferenceable" 
  • Geographer/trunk/geo.py

    r810 r811  
    4242from Products.ZCatalog.CatalogBrains import AbstractCatalogBrain 
    4343from Products.CMFCore.interfaces import ICatalogTool 
     44from Products.CMFCore.interfaces import IMembershipTool 
    4445from Products.CMFPlone import CatalogTool as catalogtool 
    4546from Products.ATContentTypes.interface.topic import IATTopic 
    4647from Products.ATContentTypes.interface.folder import IATFolder 
     48from Products.ATContentTypes.interface.folder import IATBTreeFolder 
    4749 
    4850from Products.Geographer.interfaces import IGeometry, IGeoItemSimple 
     
    5153from Products.Geographer.interfaces import IReadOnlyGeoreferenceableBrain 
    5254from Products.Geographer.interfaces import IGeoreferenceableMember 
     55from Products.Geographer.interfaces import IGeoreferenceableMembersFolder 
    5356 
    5457 
     
    226229                'title' : context.getProperty('fullname', user_id), 
    227230                'description' : context.getProperty('fullname', user_id), 
    228                 'uri': None
     231                'uri': "%s/author/%s" % (context.portal_url(), user_id)
    229232                }, 
    230233            'geometry': { 
     
    259262 
    260263    def geoItems(self): 
    261         if IATTopic.providedBy(self.context): 
     264        if IGeoreferenceableMembersFolder.providedBy(self.context): 
     265            mt = getUtility(IMembershipTool) 
     266            for ob in self.context.listFolderContents(): 
     267                member = mt.getMemberById(ob.getId()) 
     268                item = IGeoItemSimple(member, None) 
     269                if item is not None: 
     270                    yield item 
     271 
     272        elif IATBTreeFolder.providedBy(self.context): 
     273            if self._catalog_geo: 
     274                catalog_tool = getUtility(ICatalogTool) 
     275                for brain in catalog_tool( 
     276                    path='/'.join(self.context.getPhysicalPath()) 
     277                    ): 
     278                    item = IGeoItemSimple(brain, None) 
     279                    if item is not None: 
     280                        yield item 
     281            else: 
     282                for ob in self.context.listFolderContents(): 
     283                    item = IGeoItemSimple(ob, None) 
     284                    if item is not None: 
     285                        yield item 
     286 
     287        elif IATTopic.providedBy(self.context): 
    262288            for brain in self.context.queryCatalog(): 
    263289                item = IGeoItemSimple(brain, None) 
     
    298324    info = property(getInfo,) 
    299325 
     326 
     327 
  • Geographer/trunk/interfaces.py

    r810 r811  
    5959 
    6060 
    61 class IGeoserializable(Interface): 
    62      
    63     """Marks an object that can be serialized eventually to GeoRSS and KML. 
    64     """ 
    65     
    66  
    67 class IGeoserializableMembersFolder(Interface): 
     61class IGeoreferenceableMembersFolder(Interface): 
    6862     
    6963    """Marker especially for a Plone site's "Members" folder. 
  • Geographer/trunk/tests/adapters.txt

    r810 r811  
    121121 
    122122 
     123Adapt the Members folders to IGeoCollectionSimple 
     124------------------------------------------------- 
     125 
     126  >>> from zope.interface import directlyProvides, noLongerProvides 
     127  >>> from Products.Geographer.interfaces import IGeoreferenceableMembersFolder 
     128  >>> from Products.Geographer.interfaces import IGeoreferenceable 
     129  >>> folder = self.portal.Members 
     130  >>> directlyProvides(folder, IGeoreferenceableMembersFolder) 
     131  >>> collection = IGeoCollectionSimple(folder) 
     132  >>> list(collection.members) 
     133  [<Products.Geographer.geo.GeoMemberSimple object at ...>] 
     134  >>> item = list(collection.members)[0] 
     135  >>> item.geometry.type 
     136  'Point' 
     137  >>> item.geometry.coordinates 
     138  ((0.0, 0.0, 0.0),) 
     139 
     140  >>> collection.info 
     141  {'members': [{'geometry': {'type': 'Point', 'coordinates': ((0.0, 0.0, 0.0),)}, 'id': 'test_user_1_', 'properties': {'uri': 'http://nohost/plone/author/test_user_1_', 'description': '', 'title': ''}}]} 
     142 
     143