Changeset 1410

Show
Ignore:
Timestamp:
09/10/08 10:13:12 (3 months ago)
Author:
sgillies
Message:

Add view for deletion of collection members

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • pleiades.workspace/trunk/pleiades/workspace/browser/configure.zcml

    r1377 r1410  
    7979    /> 
    8080 
     81  <browser:page 
     82    for="..interfaces.IWorkspaceCollection" 
     83    name="delete-collection" 
     84    class=".manage.DeleteCollection" 
     85    permission="cmf.ModifyPortalContent" 
     86    /> 
     87 
    8188</configure> 
  • pleiades.workspace/trunk/pleiades/workspace/browser/manage.py

    r1377 r1410  
    3434 
    3535 
     36class DeleteCollection(BrowserView): 
     37 
     38    def __call__(self): 
     39        context = self.context 
     40        request = self.request 
     41        response = request.response 
     42        deletion = self.request.form.get('deletion', None) 
     43        if deletion is not None: 
     44            ptool = getToolByName(self.context, 'portal_url') 
     45            portal = ptool.getPortalObject() 
     46            metadata = self.context.queryCatalog 
     47            import transaction 
     48            savepoint = transaction.savepoint() 
     49            try: 
     50                lids = [b.getId for b in metadata() if b.Type == 'Location'] 
     51                nids = [b.getId for b in metadata() if b.Type == 'Name'] 
     52                fids = [b.getId for b in metadata() if b.Type == 'Features'] 
     53                pids = [b.getId for b in metadata() if b.Type == 'Places'] 
     54                portal['locations'].manage_delObjects(lids) 
     55                portal['names'].manage_delObjects(nids) 
     56                portal['features'].manage_delObjects(fids) 
     57                portal['places'].manage_delObjects(pids) 
     58            except: 
     59                savepoint.rollback() 
     60                raise 
     61            transaction.commit() 
     62             
     63        # acquire the parent workspace 
     64        workspace = None 
     65        child = aq_inner(self.context) 
     66        while 1: 
     67            ob = aq_parent(child) 
     68            if IWorkspace.providedBy(ob): 
     69                workspace = ob 
     70                break 
     71            child = ob 
     72        response.redirect('%s' % workspace.absolute_url()) 
     73 
     74 
    3675class ManageCollectionForm(BrowserView): 
    3776 
     
    4584    def transitions(self): 
    4685        wftool = getToolByName(self.context, 'portal_workflow') 
    47         member = self.context.queryCatalog()[0].getObject() 
     86        metadata = self.context.queryCatalog() 
     87        if len(metadata) == 0: 
     88            return [] 
     89        member = metadata[0].getObject() 
    4890        transitions = wftool.getTransitionsFor(member) 
    4991        return transitions 
  • pleiades.workspace/trunk/pleiades/workspace/browser/manage_collection_form.pt

    r1377 r1410  
    4646  </tal:links> 
    4747 
     48  <h3 class="documentFirstHeading">Member Deletion</h3> 
     49 
     50  <p>All members of this collection may be deleted using the form below.</p> 
     51 
     52  <form 
     53    action="@@delete-collection"  
     54    enctype="multipart/form-data"  
     55    method="post" 
     56    > 
     57    <p> 
     58      <input type="radio" name="deletion" value="true"/> Delete 
     59    </p> 
     60    <p><input name="submit-delete" type="submit" value="Apply"/></p> 
     61  </form> 
     62 
    4863</tal:main-macro> 
    4964</metal:main> 
  • pleiades.workspace/trunk/pleiades/workspace/browser/xml.py

    r1406 r1410  
    11import glob 
    22from os.path import basename 
     3import logging 
    34from elementtree import ElementTree as etree 
    45import transaction 
     
    2627        failures = [] 
    2728        count = 0 
    28         log = portal.getLogger("pleiades.entity") 
     29        log = logging.getLogger("pleiades.entity") 
    2930        for xml in glob.glob("%s/*.xml" % sourcedir): 
    3031            try: 
  • pleiades.workspace/trunk/pleiades/workspace/tests/kml-import.txt

    r1380 r1410  
    7777    >>> loc = ws['locations'].queryCatalog()[0].getObject() 
    7878    >>> loc.getGeometry() 
    79     'Point:[21.9725, 32.896299999999997, 0.0]' 
     79    'Point:[2..., 3...]' 
     80 
     81Test Deletion 
     82------------- 
     83 
     84    >>> browser.open('%s/locations/@@manage-collection-form' % ws_url) 
     85    >>> deletion = browser.getControl(name='deletion') 
     86    >>> deletion.value = ['true'] 
     87    >>> browser.getControl(name='submit-delete').click() 
     88    >>> len(list(ws['locations'].queryCatalog())) 
     89    0 
     90    >>> len(list(self.portal['locations'].keys())) 
     91    0