def test_is_document(self): document = create(Builder('document')) mail = create(Builder('mail')) dossier = create(Builder('dossier')) self.assertTrue(IContentListingObject(obj2brain(document)).is_document) self.assertFalse(IContentListingObject(obj2brain(mail)).is_document) self.assertFalse(IContentListingObject(obj2brain(dossier)).is_document)
def test_getIcon_returns_none_for_every_contenttype(self): self.login(self.regular_user) self.assertIsNone( IContentListingObject(obj2brain(self.dossier)).getIcon(), ) self.assertIsNone( IContentListingObject(obj2brain(self.document)).getIcon(), )
def test_is_trashed(self): self.grant('Administrator') document_a = create(Builder('document')) document_b = create(Builder('document').trashed()) self.assertFalse(IContentListingObject(document_a).is_trashed) self.assertTrue(IContentListingObject(document_b).is_trashed)
def test_getIcon_returns_none_for_every_contenttype(self): dossier = create(Builder('dossier')) document = create(Builder('document')) self.assertEquals(None, IContentListingObject(obj2brain(dossier)).getIcon()) self.assertEquals(None, IContentListingObject(obj2brain(document)).getIcon())
def test_is_document(self): self.login(self.regular_user) self.assertTrue( IContentListingObject(obj2brain(self.document)).is_document, ) self.assertFalse( IContentListingObject(obj2brain(self.mail_eml)).is_document, ) self.assertFalse( IContentListingObject(obj2brain(self.dossier)).is_document, )
def test_is_removed(self): document_a = create(Builder('document')) document_b = create(Builder('document').removed()) dossier = create(Builder('dossier')) self.assertFalse( IContentListingObject(obj2brain(document_a)).is_removed) self.assertTrue( IContentListingObject(obj2brain(document_b, unrestricted=True)).is_removed) self.assertFalse(IContentListingObject(obj2brain(dossier)).is_removed)
def test_ContentTypeClass_returns_the_contenttype_icon_css_class(self): dossier = create(Builder('dossier')) document = create(Builder('document')) self.assertEquals( 'contenttype-opengever-dossier-businesscasedossier', IContentListingObject(obj2brain(dossier)).ContentTypeClass()) self.assertEquals( 'contenttype-opengever-document-document', IContentListingObject(obj2brain(document)).ContentTypeClass())
def test_ContentTypeClass_returns_the_contenttype_icon_css_class(self): self.login(self.regular_user) self.assertEquals( 'contenttype-opengever-dossier-businesscasedossier', IContentListingObject(obj2brain(self.dossier)).ContentTypeClass(), ) self.assertEquals( 'icon-docx', IContentListingObject(obj2brain(self.document)).ContentTypeClass(), )
def test_is_trashed(self): self.grant('Administrator') document_a = create(Builder('document')) document_b = create(Builder('document').trashed()) dossier = create(Builder('dossier')) self.assertFalse( IContentListingObject(obj2brain(document_a)).is_trashed) self.assertTrue( IContentListingObject(obj2brain(document_b, unrestricted=True)).is_trashed) self.assertFalse(IContentListingObject(obj2brain(dossier)).is_trashed)
def test_is_trashed(self): self.login(self.regular_user) self.assertFalse( IContentListingObject(obj2brain(self.document)).is_trashed, ) Trasher(self.document).trash() self.assertTrue( IContentListingObject(obj2brain(self.document, unrestricted=True), ).is_trashed, ) self.assertFalse( IContentListingObject(obj2brain(self.dossier)).is_trashed, )
def test_is_removed(self): self.login(self.regular_user) self.assertFalse( IContentListingObject(obj2brain(self.dossier)).is_removed, ) self.assertFalse( IContentListingObject(obj2brain(self.document)).is_removed, ) self.login(self.manager) self.set_workflow_state('document-state-removed', self.document) self.assertTrue( IContentListingObject(obj2brain(self.document, unrestricted=True)).is_removed, )
def _serialize_submitted_excerpt(self, item): if not item.has_proposal: return None excerpt = item.proposal.resolve_submitted_excerpt_document() if excerpt: return IContentListingObject(excerpt).render_link()
def test_feed_order(self): article = self.create_content('collective.cart.core.Article') instance = IContentListingObject(article) self.assertEqual(instance.feed_order(), u'Edit') instance._realobject.feed_order = 3 self.assertEqual(instance.feed_order(), 3)
def test_cropped_description_returns_empty_string_for_objs_without_description( self): self.login(self.regular_user) self.assertEqual( '', IContentListingObject(obj2brain( self.empty_document)).CroppedDescription())
def test_containing_dossier_title_is_cropped_to_near_200_chars(self): dossier = create(Builder('dossier') .titled(25 * u'lorem ipsum ')) document = create(Builder('document').within(dossier)) self.assertCropping( 201, IContentListingObject(obj2brain(document)).containing_dossier())
def test_brain_summary(self): brain = self.catalog(UID=self.doc1.UID())[0] summary = getMultiAdapter((brain, self.request), ISerializeToJsonSummary)() self.assertDictEqual( { "@id": "http://nohost/plone/doc1", "@type": "DXTestDocument", "title": "Lorem Ipsum", "description": "Description", "review_state": "private", }, summary, ) # Must also work if we're dealing with a CatalogContentListingObject # (because the brain has already been adapted to IContentListingObject, # as is the case for collection results) listing_obj = IContentListingObject(brain) summary = getMultiAdapter((listing_obj, self.request), ISerializeToJsonSummary)() self.assertDictEqual( { "@id": "http://nohost/plone/doc1", "@type": "DXTestDocument", "title": "Lorem Ipsum", "description": "Description", "review_state": "private", }, summary, )
def test_brain_summary(self): brain = self.catalog(UID=self.doc1.UID())[0] summary = getMultiAdapter((brain, self.request), ISerializeToJsonSummary)() self.assertDictEqual( { '@id': 'http://nohost/plone/doc1', '@type': 'DXTestDocument', 'title': 'Lorem Ipsum', 'description': 'Description' }, summary) # Must also work if we're dealing with a CatalogContentListingObject # (because the brain has already been adapted to IContentListingObject, # as is the case for collection results) listing_obj = IContentListingObject(brain) summary = getMultiAdapter((listing_obj, self.request), ISerializeToJsonSummary)() self.assertDictEqual( { '@id': 'http://nohost/plone/doc1', '@type': 'DXTestDocument', 'title': 'Lorem Ipsum', 'description': 'Description' }, summary)
def test_containing_dossier_returns_the_title_of_the_containing_dossier(self): dossier = create(Builder('dossier').titled(u'Testdossier')) document = create(Builder('document').within(dossier)) self.assertEquals( 'Testdossier', IContentListingObject(obj2brain(document)).containing_dossier())
def test_overlay_title_is_document_title_utf8_encoded(self): document = create(Builder('document') .titled('Anfrage B\xc3\xbcchel'.decode('utf-8'))) self.assertEquals( u'Anfrage B\xfcchel', IContentListingObject(document).get_overlay_title())
def test_get_breadcrumbs_returns_a_tuple_of_dicts_with_title_and_url(self): root = create(Builder('repository_root').titled(u'Ordnungssystem')) repo = create(Builder('repository').within(root).titled(u'Ablage 1')) dossier = create( Builder('dossier').within(repo).titled( 'hans m\xc3\xbcller'.decode('utf-8'))) document = create( Builder('document').titled('Anfrage Meier').within( dossier).with_dummy_content()) self.assertEquals( ( { 'absolute_url': 'http://nohost/plone/ordnungssystem', 'Title': 'Ordnungssystem' }, { 'absolute_url': 'http://nohost/plone/ordnungssystem/ablage-1', 'Title': '1. Ablage 1' }, { 'absolute_url': 'http://nohost/plone/ordnungssystem/ablage-1/dossier-1', # noqa 'Title': 'hans m\xc3\xbcller' }, { 'absolute_url': 'http://nohost/plone/ordnungssystem/ablage-1/dossier-1/document-1', # noqa 'Title': 'Anfrage Meier' }), IContentListingObject(obj2brain(document)).get_breadcrumbs())
def test_contenttypeclass_is_normalized_mimetype(self): document = create(Builder('document') .attach_file_containing('DATA', u'test.pdf')) self.assertEquals( 'icon-pdf', IContentListingObject(document).ContentTypeClass())
def __call__(self): field_list = self.request.form.get('items.fl', '').strip() if field_list: field_list = field_list.split(',') else: field_list = ['@type', 'title', 'description', 'review_state'] obj = IContentListingObject(self.context) summary = json_compatible({ '@id': obj.getURL(), }) for field in field_list: accessor = FIELD_ACCESSORS.get(field) if accessor is None: continue if isinstance(accessor, str): value = getattr(obj, accessor, None) if callable(value): value = value() else: value = accessor(obj) summary[field] = json_compatible(value) if ('title' in summary and ITranslatedTitleSupport.providedBy(self.context)): # Update title to contain translated title in negotiated language attr = 'title_{}'.format(get_preferred_language_code()) summary['title'] = getattr(self.context, attr) return summary
def test_containing_dossier_returns_empty_string_for_object_not_in_a_dossier( self): # noqa repository = create(Builder('repository')) self.assertEquals( '', IContentListingObject(obj2brain(repository)).containing_dossier())
def __getitem__(self, index): """`x.__getitem__(index)` <==> `x[index]` """ if isinstance(index, slice): return IContentListing( self._basesequence[index.start:index.stop:index.step]) return IContentListingObject(self._basesequence[index])
def test_uses_documentlinkrenderer_for_mails(self): self.login(self.regular_user) self.assertEquals( u'PATCHED LINK Die B\xfcrgschaft'.encode('utf-8'), IContentListingObject(obj2brain(self.mail_eml)).render_link(), )
def test_uses_documentlinkrenderer_for_documents(self): self.login(self.regular_user) self.assertEquals( u'PATCHED LINK Vertr\xe4gsentwurf'.encode('utf-8'), IContentListingObject(obj2brain(self.document)).render_link(), )
def test_containing_dossier_of_a_dossier_returns_dossiers_title(self): self.login(self.regular_user) brain = obj2brain(self.dossier) self.assertEquals( u'Vertr\xe4ge mit der kantonalen Finanzverwaltung'.encode('utf-8'), IContentListingObject(brain).containing_dossier(), )
def test_cropped_description_returns_empty_string_for_objs_without_description( self): # noqa document = create(Builder('document')) self.assertEquals( '', IContentListingObject(obj2brain(document)).CroppedDescription(), )
def setUp(self): super(TestIndividualRealContentItems, self).setUp() self.folder.invokeFactory('Document', 'mypage', title='My Page', description='blah') self.item = IContentListingObject(self.folder.mypage) self.realitem = self.folder.mypage
def test_job_state(self): view = self.getview() pc = self.portal.portal_catalog brain = pc.searchResults(path='/'.join(self.dataset.getPhysicalPath()))[0] from plone.app.contentlisting.interfaces import IContentListingObject ds = IContentListingObject(brain) data = view.job_state(ds) self.assertEqual(data, 'COMPLETED')