def test_view_does_not_fail_when_no_modified_date_is_passed(self): portal = self.layer['portal'] request = self.layer['request'] folder = self.layer['folder'] request.form['uid'] = IUUID(folder) feed_view = getMultiAdapter((portal, request), name='watcher-feed') feed_data = feed_view() # modify feed data data = json.loads(feed_data) for item in data['items']: item['modified'] = '' data = json.dumps(data) _portlet, portlet_hash = self._get_portlet_and_hash() self._expect_request().result(self._create_response( status_code=200, raw=data)) self.replay() request.form['hash'] = portlet_hash view = queryMultiAdapter((portal, request), name='watcher-load-data') self.assertNotEqual(view, None) self.assertEqual(type(json.loads(view())), dict)
def test_view_does_not_fail_when_no_modified_date_is_passed(self): portal = self.layer['portal'] request = self.layer['request'] folder = self.layer['folder'] request.form['uid'] = IUUID(folder) feed_view = getMultiAdapter((portal, request), name='watcher-feed') feed_data = feed_view() # modify feed data data = json.loads(feed_data) for item in data['items']: item['modified'] = '' data = json.dumps(data) _portlet, portlet_hash = self._get_portlet_and_hash() self._expect_request().result( self._create_response(status_code=200, raw=data)) self.replay() request.form['hash'] = portlet_hash view = queryMultiAdapter((portal, request), name='watcher-load-data') self.assertNotEqual(view, None) self.assertEqual(type(json.loads(view())), dict)
def test_feed(self): portal = self.layer['portal'] folder = self.layer['folder'] page = folder.get('page') uid = IUUID(folder) request = self.layer['request'] request.form['uid'] = uid view = queryMultiAdapter((portal, request), name='watcher-feed') result = view() self.assertEqual(type(result), str) data = json.loads(result) self.assertEqual(data, dict( title=u'Feed folder', details_url=u'%sfeed-folder/@@watcher-recently-modified' % ( PORTAL_URL_PLACEHOLDER), items=[ dict(title=u'The page with uml\xe4uts', url=u'%sfeed-folder/page' % PORTAL_URL_PLACEHOLDER, modified=page.modified().strftime(DATETIME_FORMAT), portal_type=u'Document', cssclass=u''), dict(title=u'Feed folder', url=u'%sfeed-folder' % PORTAL_URL_PLACEHOLDER, modified=folder.modified().strftime( DATETIME_FORMAT), portal_type=u'Folder', cssclass=u''), ]))
def test_feed(self): portal = self.layer['portal'] folder = self.layer['folder'] page = folder.get('page') uid = IUUID(folder) request = self.layer['request'] request.form['uid'] = uid view = queryMultiAdapter((portal, request), name='watcher-feed') result = view() self.assertEqual(type(result), str) data = json.loads(result) self.assertEqual(data, dict( title=u'Feed folder', details_url=u'%sfeed-folder/@@watcher-recently-modified' % ( PORTAL_URL_PLACEHOLDER), items=[ dict(title=u'The page with uml\xe4uts', url=u'%sfeed-folder/page' % PORTAL_URL_PLACEHOLDER, modified=page.modified().strftime(DATETIME_FORMAT), portal_type=u'Document', cssclass=u''), dict(title=u'Feed folder', url=u'%sfeed-folder' % PORTAL_URL_PLACEHOLDER, modified=folder.modified().strftime( DATETIME_FORMAT), portal_type=u'Folder', cssclass=u''), ]))
def get_json(self, *args, **kwargs): """Makes a request to a JSON view on a remote client, return the converted python objects. """ response = self(*args, **kwargs) if response is None: return None else: return json.loads(response.read())
def __call__(self): query = json.loads(self.request.get('query')) limit = int(self.request.get('limit')) brains = self._query_catalog(query, limit) total_length = self._count_unbatched_length(query) self.request.RESPONSE.setHeader('X-total_results_length', str(total_length)) return self._serialize_results(brains)
def __call__(self): query = json.loads(self.request.get('query')) limit = int(self.request.get('limit')) brains = self._query_catalog(query, limit) total_length = self._count_unbatched_length(query) self.request.RESPONSE.setHeader( 'X-total_results_length', str(total_length)) return self._serialize_results(brains)
def test_ignore_types_in_feed(self): portal = self.layer['portal'] folder = self.layer['folder'] uid = IUUID(folder) request = self.layer['request'] request.form['uid'] = uid view = queryMultiAdapter((portal, request), name='watcher-feed') data = json.loads(view()) self.assertEqual(2, len(data.get('items'))) api.portal.set_registry_record('types_to_ignore', value=[u'Document'], interface=IWatcherPortletRegistry) data = json.loads(view()) self.assertEqual(1, len(data.get('items'))) self.assertEqual('Folder', data.get('items')[0].get('portal_type'))
def search_catalog(self, target, query, limit=50, batching_start=0): path = '@@bridge-search-catalog' query['batching_start'] = batching_start data = {'query': json.dumps(query), 'limit': limit} response = self(target, path, data=data) data = json.loads(response.read()) total_length = int(response.headers.get( 'X-total_results_length', '0')) serializer = getUtility(IBrainSerializer) return serializer.deserialize_brains(data, total_length)
def test_view(self): portal = self.layer['portal'] request = self.layer['request'] folder = self.layer['folder'] page = folder.get('page') request.form['uid'] = IUUID(folder) feed_view = getMultiAdapter((portal, request), name='watcher-feed') feed_data = feed_view() portlet, portlet_hash = self._get_portlet_and_hash() url = 'http://bridge/proxy/%s/%s' % (portlet.client_id, portlet.path) self._expect_request(url=url).result(self._create_response( status_code=200, raw=feed_data)) self.replay() request.form['hash'] = portlet_hash view = queryMultiAdapter((portal, request), name='watcher-load-data') self.assertNotEqual(view, None) dt_format = '%b %d, %Y' expected_feed_data = dict( title=u'Feed folder', details_url=u'%sfeed-folder/@@watcher-recently-modified' % ( PORTAL_URL_PLACEHOLDER), items=[ dict(title=u'The page with uml\xe4uts', url=u'%sfeed-folder/page' % PORTAL_URL_PLACEHOLDER, modified=page.modified().strftime(dt_format), portal_type=u'Document', cssclass=u''), dict(title=u'Feed folder', url=u'%sfeed-folder' % PORTAL_URL_PLACEHOLDER, modified=folder.modified().strftime(dt_format), portal_type=u'Folder', cssclass=u''), ]) self.assertEqual(json.loads(view()), expected_feed_data)
def __call__(self): query = to_utf8_recursively(json.loads(self.request.get('query'))) # ftw.solr hack https://github.com/4teamwork/ftw.solr/issues/42 if query.get('path') == '/' or ( isinstance(query.get('path'), dict) and query['path'].get('query') == '/'): del query['path'] limit = int(self.request.get('limit')) brains = self._query_catalog(query, limit) total_length = self._count_unbatched_length(query) response = self.request.RESPONSE response.setHeader( 'X-total_results_length', str(total_length)) response.setHeader('X-Theme-Disabled', 'True') response.setHeader("Content-type", "application/json") return self._serialize_results(brains)
def test_view(self): portal = self.layer['portal'] request = self.layer['request'] folder = self.layer['folder'] page = folder.get('page') request.form['uid'] = IUUID(folder) feed_view = getMultiAdapter((portal, request), name='watcher-feed') feed_data = feed_view() portlet, portlet_hash = self._get_portlet_and_hash() url = 'http://bridge/proxy/%s/%s' % (portlet.client_id, portlet.path) self._expect_request(url=url).result( self._create_response(status_code=200, raw=feed_data)) self.replay() request.form['hash'] = portlet_hash view = queryMultiAdapter((portal, request), name='watcher-load-data') self.assertNotEqual(view, None) dt_format = folder.portal_properties.site_properties.localTimeFormat expected_feed_data = dict( title=u'Feed folder', details_url=u'%sfeed-folder/@@watcher-recently-modified' % (PORTAL_URL_PLACEHOLDER), items=[ dict(title=u'The page with uml\xe4uts', url=u'%sfeed-folder/page' % PORTAL_URL_PLACEHOLDER, modified=page.modified().strftime(dt_format), portal_type=u'Document', cssclass=u''), dict(title=u'Feed folder', url=u'%sfeed-folder' % PORTAL_URL_PLACEHOLDER, modified=folder.modified().strftime(dt_format), portal_type=u'Folder', cssclass=u''), ]) self.assertEqual(json.loads(view()), expected_feed_data)