def filesByType(self):
        """Return a dictionary which contains the files in this workspace that
        don't belong to a post, where the keys are their file types."""
        groupHeaders = {}

        catalog = component.getUtility(ICatalog)
        intids = component.getUtility(IIntIds)

        for f in self.files:
            relations = [x for x in catalog.findRelations({
                'to_id': intids.getId(f),
                'from_interfaces_flattened': IThreaded, })]

            if relations or f.fileData is None:
                continue

            auto_select_media_type(f)

            if not f.rmMediaType in groupHeaders:
                groupHeaders[f.rmMediaType] = {
                    'label': mediaTypesVocabulary.by_value[f.rmMediaType].title,
                    'files': [f], }
            else:
                groupHeaders[f.rmMediaType]['files'].append(f)

        return groupHeaders.values()
 def test_media_type_auto_selection_already_set_invalid(self):
     obj = MockRichFile(None, 'invalid')
     richmetadata.auto_select_media_type(obj)
     self.assertEqual(obj.rmMediaType, richmetadata.DEFAULT_MEDIA_TYPE)
 def test_media_type_auto_selection_already_set_valid(self):
     obj = MockRichFile(None, 'document')
     richmetadata.auto_select_media_type(obj)
     self.assertEqual(obj.rmMediaType, 'document')
 def test_media_type_auto_selection_no_mime_type(self):
     obj = MockRichFile()
     richmetadata.auto_select_media_type(obj)
     self.assertEqual(obj.rmMediaType, richmetadata.DEFAULT_MEDIA_TYPE)
 def test_media_type_auto_selection(self):
     for mime_type, media_type in richmetadata.media_type_mappings.items():
         obj = MockRichFile(mime_type)
         richmetadata.auto_select_media_type(obj)
         self.assertEqual(obj.rmMediaType, media_type)