Ignore:
Timestamp:
11 Jan 2015, 11:23:48 (10 years ago)
Author:
Henrik Bettermann
Message:

Add handler for document removal. Files must be removed too.

Location:
main/waeup.kofa/trunk/src/waeup/kofa/documents
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/documents/document.py

    r12438 r12441  
    4040    IPDFDocument, IHTMLDocument, IRESTDocument)
    4141
     42
     43@grok.subscribe(IDocument, grok.IObjectRemovedEvent)
     44def handle_document_removed(document, event):
     45    store = getUtility(IExtFileStore)
     46    for filename in document.filenames:
     47        store.deleteFileByContext(document, attr=filename)
     48    return
     49
     50
    4251class Document(grok.Container):
    4352    """This is a document.
     
    4857
    4958    form_fields_interface = None
     59
     60    # Kofa can store any number of files per Document object.
     61    # However, we highly recommend to associate and store
     62    # only one file per Document object. Thus the following
     63    # tuple should contain only a single filename string.
     64    filenames = ()
    5065
    5166    local_roles = [
     
    130145    grok.provides(IPDFDocument)
    131146
     147    filenames = ('sample.pdf',)
     148
    132149    form_fields_interface = IPDFDocument
    133150
  • main/waeup.kofa/trunk/src/waeup/kofa/documents/tests/test_browser.py

    r12438 r12441  
    150150            'href="http://localhost/app/documents/DOC1/sample.pdf">PDF File</a>'
    151151            in self.browser.contents)
     152        # The file can be found in the file system
     153        file = getUtility(IExtFileStore).getFileByContext(
     154            document, attr='sample.pdf')
     155        file_content = file.read()
     156        pdf.seek(0)
     157        pdf_content = pdf.read()
     158        self.assertEqual(file_content, pdf_content)
    152159        # Browsing the link shows a real pdf only if the document
    153160        # has been published
     
    176183        self.browser.getControl("Remove selected", index=0).click()
    177184        self.assertTrue('Successfully removed' in self.browser.contents)
     185
     186        # File has been removed too
     187        file = getUtility(IExtFileStore).getFileByContext(
     188            document, attr='sample.pdf')
     189        self.assertTrue(file is None)
    178190
    179191        # All actions are being logged
Note: See TracChangeset for help on using the changeset viewer.