def test_periodic(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('contributor', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', approved=0, contributor='admin') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 ' u'by "".') ]))
def test_instant(self): """ Instant notifications for unapproved objects When an object is added it calls the ``NotificationTool.handle_object_add`` subscriber that sends the notifications to the folder maintainers and the notification subribers Since we do not call directly that subscriber no notifications will be sent. See the tests from ``test_noitifications_functional`` for the above case. """ self.add_account_subscription('contributor', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', approved=0, contributor='admin') notif_tool = self.portal.getNotificationTool() notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') # No notifications should be sent at this point self.assertEqual( set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 ' u'by "".') ]))
def test_periodic(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('contributor', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', approved=0, contributor='admin') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual( set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 ' u'by "".') ]))
def test_notification_type_checking(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('user1', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol1', 'daily', 'en') self.add_account_subscription('user3', 'fol1', 'weekly', 'en') addNyDocument(self.portal['fol1'], id='doc_a') addNyDocument(self.portal['fol1'], id='doc_b') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 7, 16)), ('fol1/doc_b', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('daily', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'daily [fol1/doc_b] portal'), ])) notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/doc_b] portal'), ])) notif_tool._send_newsletter('monthly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set())
def save_flash(self, results, p_type): """ """ template = self._getOb(self.df_template) archive = self.getFlashArchive() #create mail document id = '%s_%s' % (self.lastflashdate, p_type) title = u'Flash to be sent on %s (%s version)' % (self.utShowDateTime( self.notif_date), p_type) doc_obj = archive._getOb(id, None) if doc_obj is None: addNyDocument(archive, id=id, title=title) doc_obj = archive._getOb(id, None) doc_obj.approveThis(0, None) doc_obj.submitThis() for k in results.keys(): """ overwrite the objectkeywords_{lang} on the instance (object) such that the recatalobObject function doesn't reindex these documents next line is worth 20 secs (performance when generating e-Flash notification message) """ setattr(doc_obj, 'objectkeywords_%s' % k, '') style = template._getOb("%s_%s" % (p_type, k)).document_src() x = self.render_xml(results[k], style) doc_obj.saveProperties(title=title, body=x, lang=k)
def test_export_mixed_encodings(self): self.test_folder.zip_import.do_import(data=mac_zip) addNyDocument(self.test_folder, id='html_document') self.test_folder['html_document'].body = u'<p>Html document</p>' self.test_folder['html_document'].approved = 1 export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') expected_namelist = ['index.txt', 'zip_export_folder/picture-1.png', 'zip_export_folder/picture-2.png', 'zip_export_folder/html_document.html'] self.assertEqual(sorted(zip.namelist()), sorted(expected_namelist)) self.assertTrue('<p>Html document</p>' in \ zip.read('zip_export_folder/html_document.html')) picture1_data = IZipExportObject(self.test_folder['picture-1'])()[0] picture2_data = IZipExportObject(self.test_folder['picture-2'])()[0] self.assertEqual(zip.read('zip_export_folder/picture-1.png'), picture1_data) self.assertEqual(zip.read('zip_export_folder/picture-2.png'), picture2_data)
def test_restricted_instant(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('reviewer', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', contributor='admin') self.portal.fol1.doc_a.approved = True addNyDocument(self.portal['fol1'], id='doc_b', contributor='admin') self.portal.fol1.doc_b.approved = True self.portal['fol1']['doc_a']._View_Permission = ('Reviewer',) self.portal['fol1']['doc_b']._View_Permission = ('Contributor',) notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') notif_tool.notify_instant(self.portal['fol1']['doc_b'], 'somebody') notifications = self._fetch_test_notifications() self.assertEqual(set(notifications), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 by "".'), ('*****@*****.**', '*****@*****.**', u'Instant notification for object: doc_a', u'The item "doc_a" has been created at http://nohost/portal/fol1/doc_a by "".\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html'), ('*****@*****.**', '*****@*****.**', u'Instant notification for object: doc_b', u'The item "doc_b" has been created at http://nohost/portal/fol1/doc_b by "".\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html') ]))
def test_export_mixed_encodings(self): self.test_folder.zip_import.do_import(data=mac_zip) addNyDocument(self.test_folder, id='html_document') self.test_folder['html_document'].body = u'<p>Html document</p>' self.test_folder['html_document'].approved = 1 export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') expected_namelist = [ 'index.txt', 'zip_export_folder/Picture 1.png', # TODO 'zip_export_folder/Picture 2.png', 'zip_export_folder/html_document.html' ] self.assertEqual(sorted(zip.namelist()), sorted(expected_namelist)) self.assertTrue('<p>Html document</p>' in \ zip.read('zip_export_folder/html_document.html')) picture1_data = IZipExportObject(self.test_folder['picture-1']).data picture2_data = IZipExportObject(self.test_folder['picture-2']).data self.assertEqual(zip.read('zip_export_folder/Picture 1.png'), picture1_data) self.assertEqual(zip.read('zip_export_folder/Picture 2.png'), picture2_data)
def test_restricted_periodic(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('reviewer', 'fol1', 'weekly', 'en') self.add_account_subscription('user2', 'fol1', 'weekly', 'en') addNyDocument(self.portal['fol1'], id='doc_a', contributor='admin') addNyDocument(self.portal['fol1'], id='doc_b', contributor='admin') self.portal['fol1']['doc_a']._View_Permission = ('Reviewer',) self.portal['fol1']['doc_b']._View_Permission = ('Contributor',) self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ('fol1/doc_b', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 by "".'), ('*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Folowing items were modified/added in the "Naaya Test Site" portal.\n\n: doc_a (http://nohost/portal/fol1/doc_a)\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html'), ('*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Folowing items were modified/added in the "Naaya Test Site" portal.\n\n: doc_b (http://nohost/portal/fol1/doc_b)\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html') ]))
def test_instant(self): """ Instant notifications for unapproved objects When an object is added it calls the ``NotificationTool.handle_object_add`` subscriber that sends the notifications to the folder maintainers and the notification subribers Since we do not call directly that subscriber no notifications will be sent. See the tests from ``test_noitifications_functional`` for the above case. """ self.add_account_subscription('contributor', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', approved=0, contributor='admin') notif_tool = self.portal.getNotificationTool() notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') #No notifications should be sent at this point self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 by "".') ]))
def test_export_mixed_encodings(self): self.test_folder.zip_import.do_import(data=mac_zip) addNyDocument(self.test_folder, id="html_document") self.test_folder["html_document"].body = u"<p>Html document</p>" self.test_folder["html_document"].approved = 1 export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ("Errors are raised: ", export_value)) zip = ZipFile(export_value, "r") expected_namelist = [ "index.txt", "zip_export_folder/Picture 1.png", # TODO "zip_export_folder/Picture 2.png", "zip_export_folder/html_document.html", ] self.assertEqual(sorted(zip.namelist()), sorted(expected_namelist)) self.assertTrue("<p>Html document</p>" in zip.read("zip_export_folder/html_document.html")) picture1_data = IZipExportObject(self.test_folder["picture-1"]).data picture2_data = IZipExportObject(self.test_folder["picture-2"]).data self.assertEqual(zip.read("zip_export_folder/Picture 1.png"), picture1_data) self.assertEqual(zip.read("zip_export_folder/Picture 2.png"), picture2_data)
def test_instant_notifications(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('user1', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol2', 'instant', 'en') self.add_account_subscription('user3', '', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a') self.portal.fol1.doc_a.approved = True self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ] notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 by "".'), ('*****@*****.**', '*****@*****.**', u'Instant notification for object: doc_a', u'The item "doc_a" has been created at http://nohost/portal/fol1/doc_a by "".\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html'), ('*****@*****.**', '*****@*****.**', u'Instant notification for object: doc_a', u'The item "doc_a" has been created at http://nohost/portal/fol1/doc_a by "".\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html') ]))
def test_restricted_periodic(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('reviewer', 'fol1', 'weekly', 'en') self.add_account_subscription('user2', 'fol1', 'weekly', 'en') addNyDocument(self.portal['fol1'], id='doc_a', contributor='admin') addNyDocument(self.portal['fol1'], id='doc_b', contributor='admin') self.portal['fol1']['doc_a']._View_Permission = ('Reviewer',) self.portal['fol1']['doc_b']._View_Permission = ('Contributor',) self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ('fol1/doc_b', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/doc_a] Naaya Test Site'), ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/doc_b] Naaya Test Site'), ]))
def afterSetUp(self): from naaya.content.document.document_item import addNyDocument addNyDocument(self.portal.info, id="document", title="Document", contributor='contributor', submitted=1) from Products.Naaya.NyFolder import addNyFolder addNyFolder(self.portal, 'folder', contributor='contributor', submitted=1) transaction.commit()
def test_export_html_document(self): addNyDocument(self.test_folder, id="html_document") self.test_folder["html_document"].body = "<p>Html document</p>" self.test_folder["html_document"].approved = 1 export_value = self.test_folder.zip_export.do_export() zip = ZipFile(export_value, "r") self.assertEqual(sorted(zip.namelist()), sorted(["index.txt", "zip_export_folder/html_document.html"])) self.assertTrue("<p>Html document</p>" in zip.read("zip_export_folder/html_document.html"))
def test_export_anonymous(self): addNyDocument(self.test_folder, id="public_access") self.test_folder["public_access"].body = "<p>Some html</p>" self.test_folder["public_access"].approved = 1 self.logout() export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ("Errors are raised: ", export_value)) zip = ZipFile(export_value, "r") self.assertEqual(sorted(zip.namelist()), sorted(["index.txt", "zip_export_folder/public_access.html"])) self.assertTrue("<p>Some html</p>" in zip.read("zip_export_folder/public_access.html"))
def test_export_html_document(self): addNyDocument(self.test_folder, id='html_document') self.test_folder['html_document'].body = '<p>Html document</p>' self.test_folder['html_document'].approved = 1 export_value = self.test_folder.zip_export.do_export() zip = ZipFile(export_value, 'r') self.assertEqual( sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/html_document.html'])) self.assertTrue('<p>Html document</p>' in \ zip.read('zip_export_folder/html_document.html'))
def test_export_html_document(self): addNyDocument(self.test_folder, id='html_document') self.test_folder['html_document'].body = '<p>Html document</p>' self.test_folder['html_document'].approved = 1 export_value = self.test_folder.zip_export.do_export() zip = ZipFile(export_value, 'r') self.assertEqual(sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/html_document.html'])) self.assertTrue('<p>Html document</p>' in \ zip.read('zip_export_folder/html_document.html'))
def afterSetUp(self): addNyFolder(self.portal, 'myfolder', contributor='contributor', submitted=1) addNyDocument(self.portal.myfolder, id='mydoc', title='My document', submitted=1, contributor='contributor') transaction.commit()
def afterSetUp(self): self._notifications = [] divert_notifications(True, save_to=self._notifications) self.notif = self.portal.portal_notification self._original_config = dict(self.notif.config) self.notif.config['enable_instant'] = True self.notif.config['enable_daily'] = True self.notif.config['enable_weekly'] = True self.notif.config['enable_monthly'] = True addNyFolder(self.portal, 'notifol', contributor='contributor', submitted=1) addNyDocument(self.portal.notifol, id='notidoc', title='Notifying document', submitted=1, contributor='contributor')
def test_notification_type_checking(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('user1', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol1', 'daily', 'en') self.add_account_subscription('user3', 'fol1', 'weekly', 'en') addNyDocument(self.portal['fol1'], id='doc_a') addNyDocument(self.portal['fol1'], id='doc_b') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 7, 16)), ('fol1/doc_b', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('daily', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual( set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Changed items - daily digest', u'Following items were modified/added in the "Naaya Test Site" ' u'portal.\n\n: doc_b (http://nohost/portal/fol1/doc_b)\n\n\n' u'If you want to unsubscribe from these notifications follow the ' u'link below:\n\nhttp://nohost/portal/portal_notification/' u'my_subscriptions_html') ])) notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual( set(self._fetch_test_notifications()), set([( '*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Following items were modified/added in the "Naaya Test Site" ' u'portal.\n\n: doc_b (http://nohost/portal/fol1/doc_b)\n\n\n' u'If you want to unsubscribe from these notifications follow the ' u'link below:\n\nhttp://nohost/portal/portal_notification/' u'my_subscriptions_html')])) notif_tool._send_newsletter('monthly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set())
def test_notification_type_checking(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('user1', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol1', 'daily', 'en') self.add_account_subscription('user3', 'fol1', 'weekly', 'en') addNyDocument(self.portal['fol1'], id='doc_a') addNyDocument(self.portal['fol1'], id='doc_b') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 7, 16)), ('fol1/doc_b', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('daily', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 ' u'by "".'), ('*****@*****.**', '*****@*****.**', u'Changed items - daily digest', u'Following items were modified/added in the "Naaya Test Site" ' u'portal.\n\n: doc_b (http://nohost/portal/fol1/doc_b)\n\n\n' u'If you want to unsubscribe from these notifications follow the ' u'link below:\n\nhttp://nohost/portal/portal_notification/' u'my_subscriptions_html') ])) notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Following items were modified/added in the "Naaya Test Site" ' u'portal.\n\n: doc_b (http://nohost/portal/fol1/doc_b)\n\n\n' u'If you want to unsubscribe from these notifications follow the ' u'link below:\n\nhttp://nohost/portal/portal_notification/' u'my_subscriptions_html') ])) notif_tool._send_newsletter('monthly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set())
def afterSetUp(self): self._notifications = [] set_notif_testing_mode(True, save_to=self._notifications) self.notif = self.portal.portal_notification self._original_config = dict(self.notif.config) self.notif.config["enable_instant"] = True self.notif.config["enable_daily"] = True self.notif.config["enable_weekly"] = True self.notif.config["enable_monthly"] = True addNyFolder(self.portal, "notifol", contributor="contributor", submitted=1) addNyDocument( self.portal.notifol, id="notidoc", title="Notifying document", submitted=1, contributor="contributor" )
def test_export_anonymous(self): addNyDocument(self.test_folder, id='public_access') self.test_folder['public_access'].body = '<p>Some html</p>' self.test_folder['public_access'].approved = 1 self.logout() export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') self.assertEqual(sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/public_access.html'])) self.assertTrue('<p>Some html</p>' in \ zip.read('zip_export_folder/public_access.html'))
def test_export_anonymous(self): addNyDocument(self.test_folder, id='public_access') self.test_folder['public_access'].body = '<p>Some html</p>' self.test_folder['public_access'].approved = 1 self.logout() export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') self.assertEqual( sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/public_access.html'])) self.assertTrue('<p>Some html</p>' in \ zip.read('zip_export_folder/public_access.html'))
def test_periodic(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('contributor', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', approved=0, contributor='admin') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(self._fetch_test_notifications(), [])
def afterSetUp(self): self._notifications = [] divert_notifications(True, save_to=self._notifications) addNyFolder(self.portal, 'notifol', contributor='contributor', submitted=1) addNyDocument(self.portal.notifol, id='notidoc', title='Notifying document', submitted=1, contributor='contributor') self.portal.notifol.notidoc.approved = True # Approve this document _notif = self.portal.getNotificationTool() self._original_config = dict(_notif.config) _notif.config['enable_instant'] = True _notif.config['enable_daily'] = True _notif.config['enable_weekly'] = True _notif.config['enable_monthly'] = True transaction.commit()
def get_document_or_create(site, title): folder = site[FOLDER["id"]] try: doc = folder[slugify(title, removelist=[])] except KeyError: doc_id = addNyDocument(folder, title=title, submitted=1) doc = folder[doc_id] return doc
def test_instant_notifications(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('user1', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol2', 'instant', 'en') self.add_account_subscription('user3', '', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 8, 3)), ] notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'instant [fol1/doc_a] portal'), ('*****@*****.**', '*****@*****.**', 'notifications', 'instant [fol1/doc_a] portal'), ]))
def test_export_mixed_access(self): addNyDocument(self.test_folder, id='public_document') addNyDocument(self.test_folder, id='restricted_document') self.test_folder['public_document'].body = '<p>Some html</p>' self.test_folder['public_document'].approved = 1 self.test_folder['restricted_document'].body = '<p>Restricted html</p>' self.test_folder['restricted_document'].approved = 1 #restrict access restricted_doc = self.test_folder['restricted_document'] permission = getattr(restricted_doc, '_View_Permission', []) new_permission = [x for x in permission if x != 'Anonymous'] if 'Contributor' not in new_permission: new_permission.append('Contributor') restricted_doc._View_Permission = tuple(new_permission) self.logout() export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') self.assertEqual( sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/public_document.html'])) self.assertTrue('<p>Some html</p>' in \ zip.read('zip_export_folder/public_document.html')) self.login('contributor') export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') self.assertEqual( sorted(zip.namelist()), sorted([ 'index.txt', 'zip_export_folder/public_document.html', 'zip_export_folder/restricted_document.html' ])) self.assertTrue('<p>Some html</p>' in \ zip.read('zip_export_folder/public_document.html')) self.assertTrue('<p>Restricted html</p>' in \ zip.read('zip_export_folder/restricted_document.html'))
def test_main(self): """ Add, Find, Edit and Delete Naaya Documents """ addNyDocument(self._portal().info, id='doc1', title='doc1', lang='en', submitted=1) addNyDocument(self._portal().info, id='doc1_fr', title='doc1_fr', lang='fr', submitted=1) meta = self._portal().getCatalogedObjectsCheckView(meta_type=['Naaya Document']) #Get added NyDocument for x in meta: if x.getLocalProperty('title', 'en') == 'doc1': meta = x if x.getLocalProperty('title', 'fr') == 'doc1_fr': meta_fr = x self.assertEqual(meta.getLocalProperty('title', 'en'), 'doc1') self.assertEqual(meta_fr.getLocalProperty('title', 'fr'), 'doc1_fr') #Change NyDocument title meta.process_submitted_form({'title': 'doc1_edited'}, _lang='en', _all_values=False) meta_fr.process_submitted_form({'title': 'doc1_fr_edited'}, _lang='fr', _all_values=False) self.assertEqual(meta.getLocalProperty('title', 'en'), 'doc1_edited') self.assertEqual(meta_fr.getLocalProperty('title', 'fr'), 'doc1_fr_edited') #delete NyDocument self._portal().info.manage_delObjects([meta.id]) self._portal().info.manage_delObjects([meta_fr.id]) meta = self._portal().getCatalogedObjectsCheckView(meta_type=['Naaya Document']) for x in meta: if x.id == 'doc1': meta = x else: meta = [] if x.id == 'doc1_fr': meta_fr = x else: meta_fr = [] self.assertEqual(meta, []) self.assertEqual(meta_fr, [])
def test_export_mixed_access(self): addNyDocument(self.test_folder, id='public_document') addNyDocument(self.test_folder, id='restricted_document') self.test_folder['public_document'].body = '<p>Some html</p>' self.test_folder['public_document'].approved = 1 self.test_folder['restricted_document'].body = '<p>Restricted html</p>' self.test_folder['restricted_document'].approved = 1 #restrict access restricted_doc = self.test_folder['restricted_document'] permission = getattr(restricted_doc, '_View_Permission', []) new_permission = [x for x in permission if x != 'Anonymous'] if 'Contributor' not in new_permission: new_permission.append('Contributor') restricted_doc._View_Permission = tuple(new_permission) self.logout() export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') self.assertEqual(sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/public_document.html'])) self.assertTrue('<p>Some html</p>' in \ zip.read('zip_export_folder/public_document.html')) self.login('contributor') export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ('Errors are raised: ', export_value)) zip = ZipFile(export_value, 'r') self.assertEqual(sorted(zip.namelist()), sorted(['index.txt', 'zip_export_folder/public_document.html', 'zip_export_folder/restricted_document.html'])) self.assertTrue('<p>Some html</p>' in \ zip.read('zip_export_folder/public_document.html')) self.assertTrue('<p>Restricted html</p>' in \ zip.read('zip_export_folder/restricted_document.html'))
def test_restricted_instant(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('reviewer', 'fol1', 'instant', 'en') self.add_account_subscription('user2', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', contributor='admin') addNyDocument(self.portal['fol1'], id='doc_b', contributor='admin') self.portal['fol1']['doc_a']._View_Permission = ('Reviewer',) self.portal['fol1']['doc_b']._View_Permission = ('Contributor',) notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') notif_tool.notify_instant(self.portal['fol1']['doc_b'], 'somebody') self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'instant [fol1/doc_a] portal'), ('*****@*****.**', '*****@*****.**', 'notifications', 'instant [fol1/doc_b] portal'), ]))
def test_instant(self): """ Instant notifications for unapproved objects When an object is added it calls the ``NotificationTool.handle_object_add`` subscriber that sends the notifications to the folder maintainers and the notification subribers Since we do not call directly that subscriber no notifications will be sent. See the tests from ``test_noitifications_functional`` for the above case. """ self.add_account_subscription('contributor', 'fol1', 'instant', 'en') addNyDocument(self.portal['fol1'], id='doc_a', approved=0, contributor='admin') notif_tool = self.portal.getNotificationTool() notif_tool.notify_instant(self.portal['fol1']['doc_a'], 'somebody') #No notifications should be sent at this point self.assertEqual(self._fetch_test_notifications(), [])
def test_weekly_notification_interval(self): notif_tool = self.portal.getNotificationTool() self.add_account_subscription('user1', '', 'weekly', 'en') self.add_account_subscription('user2', '', 'weekly', 'en') addNyDocument(self.portal['fol1'], id='doc_a') addNyDocument(self.portal['fol1'], id='doc_b') self.object_timestamps = [ ('fol1/doc_a', datetime(2009, 7, 16)), ('fol1/doc_b', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/doc_b] Naaya Test Site'), ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/doc_b] Naaya Test Site'), ]))
def test_weekly_notification_paths(self): notif_tool = self.portal.getNotificationTool() addNyFolder(self.portal['fol1'], 'g', contributor='admin') addNyFolder(self.portal['fol1'], 'h', contributor='admin') addNyDocument(self.portal['fol1']['g'], id='doc_a') addNyDocument(self.portal['fol1']['h'], id='doc_b') addNyDocument(self.portal['fol1'], id='doc_c', discussion=0) self.add_account_subscription('user1', 'fol1/g', 'weekly', 'en') self.add_account_subscription('user2', 'fol1/h', 'weekly', 'en') self.add_account_subscription('user3', 'fol1', 'weekly', 'en') self.object_timestamps = [ ('fol1/g/doc_a', datetime(2009, 8, 3)), ('fol1/h/doc_b', datetime(2009, 8, 3)), ('fol1/doc_c', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/g/doc_a] portal'), ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/h/doc_b] portal'), ('*****@*****.**', '*****@*****.**', 'notifications', 'weekly [fol1/doc_c][fol1/g/doc_a][fol1/h/doc_b] portal'), ]))
def afterSetUp(self): self._notifications = [] divert_notifications(True, save_to=self._notifications) #Login with admin and set skip_notifications in administration self.browser_do_login('admin', '') self.browser.go('http://localhost/portal/portal_notification/admin_html') form = self.browser.get_form('skip_notifications') self.browser.clicked(form, self.browser.get_form_field(form, 'submit-button')) self.browser.submit() #create folders and other content in browser, so the skip_notification #flag will be respected (the REQUEST.SESSION is checked for it) self.browser.go('http://localhost/portal/folder_add_html') form = self.browser.get_form('frmAdd') self.browser.clicked(form, self.browser.get_form_field(form, 'title:utf8:ustring')) form['title:utf8:ustring'] = 'notifol' self.browser.submit() addNyDocument(self.portal.notifol, id='notidoc', title='Notifying document', submitted=1, contributor='contributor') self.portal.notifol.notidoc.approved = True # Approve this document _notif = self.portal.getNotificationTool() self._original_config = dict(_notif.config) _notif.config['enable_instant'] = True _notif.config['enable_daily'] = True _notif.config['enable_weekly'] = True _notif.config['enable_monthly'] = True transaction.commit() #Unset skip_notifications in administration self.browser.go('http://localhost/portal/portal_notification/admin_html') form = self.browser.get_form('skip_notifications') self.browser.clicked(form, self.browser.get_form_field(form, 'submit-button')) self.browser.submit() self.browser_do_logout()
def test_export_mixed_access(self): addNyDocument(self.test_folder, id="public_document") addNyDocument(self.test_folder, id="restricted_document") self.test_folder["public_document"].body = "<p>Some html</p>" self.test_folder["public_document"].approved = 1 self.test_folder["restricted_document"].body = "<p>Restricted html</p>" self.test_folder["restricted_document"].approved = 1 # restrict access restricted_doc = self.test_folder["restricted_document"] permission = getattr(restricted_doc, "_View_Permission", []) new_permission = [x for x in permission if x != "Anonymous"] if "Contributor" not in new_permission: new_permission.append("Contributor") restricted_doc._View_Permission = tuple(new_permission) self.logout() export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ("Errors are raised: ", export_value)) zip = ZipFile(export_value, "r") self.assertEqual(sorted(zip.namelist()), sorted(["index.txt", "zip_export_folder/public_document.html"])) self.assertTrue("<p>Some html</p>" in zip.read("zip_export_folder/public_document.html")) self.login("contributor") export_value = self.test_folder.zip_export.do_export() self.assertFalse(isinstance(export_value, list), ("Errors are raised: ", export_value)) zip = ZipFile(export_value, "r") self.assertEqual( sorted(zip.namelist()), sorted( ["index.txt", "zip_export_folder/public_document.html", "zip_export_folder/restricted_document.html"] ), ) self.assertTrue("<p>Some html</p>" in zip.read("zip_export_folder/public_document.html")) self.assertTrue("<p>Restricted html</p>" in zip.read("zip_export_folder/restricted_document.html"))
def save_flash(self, results, p_type): """ """ template = self._getOb(self.df_template) archive = self.getFlashArchive() #create mail document id = '%s_%s' % (self.lastflashdate, p_type) title = u'Flash to be sent on %s (%s version)' % (self.utShowDateTime(self.notif_date), p_type) doc_obj = archive._getOb(id, None) if doc_obj is None: addNyDocument(archive, id=id, title=title) doc_obj = archive._getOb(id, None) doc_obj.approveThis(0, None) doc_obj.submitThis() for k in results.keys(): """ overwrite the objectkeywords_{lang} on the instance (object) such that the recatalobObject function doesn't reindex these documents next line is worth 20 secs (performance when generating e-Flash notification message) """ setattr(doc_obj, 'objectkeywords_%s' % k, '') style = template._getOb("%s_%s" % (p_type, k)).document_src() x = self.render_xml(results[k], style) doc_obj.saveProperties(title=title, body=x, lang=k)
def test_weekly_notification_paths(self): notif_tool = self.portal.getNotificationTool() addNyFolder(self.portal['fol1'], 'g', contributor='admin') addNyFolder(self.portal['fol1'], 'h', contributor='admin') addNyDocument(self.portal['fol1']['g'], id='doc_a') addNyDocument(self.portal['fol1']['h'], id='doc_b') addNyDocument(self.portal['fol1'], id='doc_c', discussion=0) self.add_account_subscription('user1', 'fol1/g', 'weekly', 'en') self.add_account_subscription('user2', 'fol1/h', 'weekly', 'en') self.add_account_subscription('user3', 'fol1', 'weekly', 'en') self.object_timestamps = [ ('fol1/g/doc_a', datetime(2009, 8, 3)), ('fol1/h/doc_b', datetime(2009, 8, 3)), ('fol1/doc_c', datetime(2009, 8, 3)), ] notif_tool._send_newsletter('weekly', datetime(2009, 7, 30), datetime(2009, 8, 5)) self.assertEqual(set(self._fetch_test_notifications()), set([ ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol1', u'The item "fol1" has been created at http://nohost/portal/fol1 by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: fol2', u'The item "fol2" has been created at http://nohost/portal/fol2 by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: g', u'The item "g" has been created at http://nohost/portal/fol1/g by "".'), ('*****@*****.**', '*****@*****.**', u'Maintainer notification for object: h', u'The item "h" has been created at http://nohost/portal/fol1/h by "".'), ('*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Folowing items were modified/added in the "Naaya Test Site" portal.\n\n: doc_a (http://nohost/portal/fol1/g/doc_a)\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html'), ('*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Folowing items were modified/added in the "Naaya Test Site" portal.\n\n: doc_a (http://nohost/portal/fol1/g/doc_a)\n\n: doc_b (http://nohost/portal/fol1/h/doc_b)\n\n: doc_c (http://nohost/portal/fol1/doc_c)\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html'), ('*****@*****.**', '*****@*****.**', u'Changed items - weekly digest', u'Folowing items were modified/added in the "Naaya Test Site" portal.\n\n: doc_b (http://nohost/portal/fol1/h/doc_b)\n\n\nIf you want to unsubscribe from these notifications follow the link below:\n\nhttp://nohost/portal/portal_notification/my_subscriptions_html') ]))
def add_object(self, parent): ob = parent[addNyDocument(parent, title='My document', submitted=1)] ob.approveThis() return ob
def afterSetUp(self): from naaya.content.document.document_item import addNyDocument addNyDocument(self.portal.info, id='ver_doc', title='ver_doc', submitted=1) import transaction; transaction.commit()
def afterSetUp(self): from Products.Naaya.NyFolder import addNyFolder from naaya.content.document.document_item import addNyDocument addNyFolder(self.portal, 'myfolder', contributor='contributor', submitted=1) addNyDocument(self.portal.myfolder, id='mydoc', title='My document', submitted=1, contributor='contributor') import transaction; transaction.commit()
def afterSetUp(self): addNyFolder(self.portal, "myfolder", contributor="contributor", submitted=1) addNyDocument(self.portal.myfolder, id="mydoc", title="My document", submitted=1, contributor="contributor") transaction.commit()
def add_object(self, parent, **kwargs): from naaya.content.document.document_item import addNyDocument return addNyDocument(parent, **kwargs)