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''),
                    ]))
Exemplo n.º 4
0
    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''),
                    ]))
Exemplo n.º 5
0
 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())
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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'))
Exemplo n.º 9
0
    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)
Exemplo n.º 11
0
    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)