def testSourceTextQuery(self):
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import Choice
        from zope.schema.interfaces import ISource

        @implementer(ISource)
        class DummyCatalogSource(object):
            def search(self, query):
                return [Mock(value=Mock(id=query))]

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = Choice(source=DummyCatalogSource())
        widget.field.interface = Interface

        from plone.app.content.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        self.request.form.update({
            'query': 'foo',
            'attributes': 'id',
        })
        data = json.loads(view())
        self.assertEquals(len(data['results']), 1)
        self.assertEquals(data['results'][0]['id'], 'foo')
    def testSource(self):
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import Choice
        from zope.schema.interfaces import ISource

        @implementer(ISource)
        class DummyCatalogSource(object):
            def search_catalog(self, query):
                querytext = query['SearchableText']['query']
                return [Mock(id=querytext)]

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = Choice(source=DummyCatalogSource())
        widget.field.interface = Interface

        from plone.app.widgets.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        query = {
            'criteria': [{
                'i': 'SearchableText',
                'o': 'plone.app.querystring.operation.string.is',
                'v': 'foo'
            }]
        }
        self.request.form.update({
            'query': json.dumps(query),
            'attributes': 'id',
        })
        data = json.loads(view())
        self.assertEquals(len(data['results']), 1)
        self.assertEquals(data['results'][0]['id'], 'foo')
    def testSourcePermissionDenied(self):
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import Choice
        from zope.schema.interfaces import ISource

        @implementer(ISource)
        class DummyCatalogSource(object):
            def search_catalog(self, query):
                querytext = query['SearchableText']['query']
                return [Mock(id=querytext)]

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = Choice(source=DummyCatalogSource())
        widget.field.interface = Interface

        from plone.app.content.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        query = {
            'criteria': [
                {
                    'i': 'SearchableText',
                    'o': 'plone.app.querystring.operation.string.is',
                    'v': 'foo'
                }
            ]
        }
        self.request.form.update({
            'query': json.dumps(query),
        })
        logout()
        data = json.loads(view())
        self.assertEquals(data['error'], 'Vocabulary lookup not allowed.')
Beispiel #4
0
    def testSourcePermissionDenied(self):
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import Choice
        from zope.schema.interfaces import ISource

        @implementer(ISource)
        class DummyCatalogSource(object):
            def search_catalog(self, query):
                querytext = query['SearchableText']['query']
                return [Mock(id=querytext)]

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = Choice(source=DummyCatalogSource())
        widget.field.interface = Interface

        from plone.app.content.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        query = {
            'criteria': [{
                'i': 'SearchableText',
                'o': 'plone.app.querystring.operation.string.is',
                'v': 'foo'
            }]
        }
        self.request.form.update({
            'query': json.dumps(query),
        })
        logout()
        data = json.loads(view())
        self.assertEquals(data['error'], 'Vocabulary lookup not allowed.')
Beispiel #5
0
    def testSourceTextQuery(self):
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import Choice
        from zope.schema.interfaces import ISource

        @implementer(ISource)
        class DummyCatalogSource:
            def search(self, query):
                return [mock.Mock(value=mock.Mock(id=query))]

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = Choice(source=DummyCatalogSource())
        widget.field.interface = Interface

        from plone.app.content.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        self.request.form.update({
            'query': 'foo',
            'attributes': 'id',
        })
        data = json.loads(view())
        self.assertEqual(len(data['results']), 1)
        self.assertEqual(data['results'][0]['id'], 'foo')
Beispiel #6
0
 def update(self, *args, **kwargs):
     value_type = getattr(self.field, 'value_type', None)
     if value_type:
         self.vocabulary = getattr(value_type,
                                   'vocabularyName',
                                   'plone.app.vocabularies.Catalog')
     if self.vocabulary is None:
         self.vocabulary = 'plone.app.vocabularies.Catalog'
     z3cform_TextWidget.update(self, *args, **kwargs)
Beispiel #7
0
 def updateWidgets(self):
     super(FieldAddForm, self).updateWidgets()
     fieldset_id = int(self.request.form.get('fieldset_id', 0))
     if fieldset_id:
         # add fieldset_id from GET parameter as hidden field, so that
         # ``add`` method at the end of the form lifecycle can read it.
         fieldset_id_widget = TextWidget(self.request)
         fieldset_id_widget.name = 'fieldset_id'
         fieldset_id_widget.value = fieldset_id
         fieldset_id_widget.mode = HIDDEN_MODE
         # Uhm. z3c.form widgets doesn't have an API for extending a
         # schema-generated form. Using internal ``_data_values``...
         self.widgets._data_values.append(fieldset_id_widget)
Beispiel #8
0
 def updateWidgets(self):
     super(FieldAddForm, self).updateWidgets()
     fieldset_id = int(self.request.form.get('fieldset_id', 0))
     if fieldset_id:
         # add fieldset_id from GET parameter as hidden field, so that
         # ``add`` method at the end of the form lifecycle can read it.
         fieldset_id_widget = TextWidget(self.request)
         fieldset_id_widget.name = 'fieldset_id'
         fieldset_id_widget.value = fieldset_id
         fieldset_id_widget.mode = HIDDEN_MODE
         # Uhm. z3c.form widgets doesn't have an API for extending a
         # schema-generated form. Using internal ``_data_values``...
         self.widgets._data_values.append(fieldset_id_widget)
Beispiel #9
0
    def testSourceCollectionField(self):
        # This test uses a collection field
        # and a source providing the 'search' method
        # to help achieve coverage.
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import List, Choice
        from zope.schema.interfaces import ISource
        from zope.schema.vocabulary import SimpleTerm

        @implementer(ISource)
        class DummySource(object):
            def search(self, query):
                terms = [SimpleTerm(query, query)]
                return iter(terms)

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = List(value_type=Choice(source=DummySource()))
        widget.field.interface = Interface

        from plone.app.content.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        query = {
            'criteria': [{
                'i': 'SearchableText',
                'o': 'plone.app.querystring.operation.string.is',
                'v': 'foo'
            }],
            'sort_on':
            'id',
            'sort_order':
            'ascending',
        }
        self.request.form.update({
            'query': json.dumps(query),
            'batch': json.dumps({
                'size': 10,
                'page': 1
            }),
        })
        data = json.loads(view())
        self.assertEquals(len(data['results']), 1)
        self.assertEquals(data['results'][0]['id'], 'foo')
    def setUp(self):
        super(TestGeverRenderWidget, self).setUp()
        textfield = TextLine()
        textfield.description = u"A d\xfcscription"

        self.widget = TextWidget(self.request)
        self.widget.field = textfield

        alsoProvides(self.request, IPloneFormLayer)
    def testSourceCollectionField(self):
        # This test uses a collection field
        # and a source providing the 'search' method
        # to help achieve coverage.
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import List, Choice
        from zope.schema.interfaces import ISource
        from zope.schema.vocabulary import SimpleTerm

        @implementer(ISource)
        class DummySource(object):
            def search(self, query):
                terms = [SimpleTerm(query, query)]
                return iter(terms)

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = List(value_type=Choice(source=DummySource()))
        widget.field.interface = Interface

        from plone.app.content.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        query = {
            'criteria': [
                {
                    'i': 'SearchableText',
                    'o': 'plone.app.querystring.operation.string.is',
                    'v': 'foo'
                }
            ],
            'sort_on': 'id',
            'sort_order': 'ascending',
        }
        self.request.form.update({
            'query': json.dumps(query),
            'batch': json.dumps({'size': 10, 'page': 1}),
        })
        data = json.loads(view())
        self.assertEquals(len(data['results']), 1)
        self.assertEquals(data['results'][0]['id'], 'foo')
    def testSource(self):
        from z3c.form.browser.text import TextWidget
        from zope.interface import implementer
        from zope.interface import Interface
        from zope.schema import Choice
        from zope.schema.interfaces import ISource

        @implementer(ISource)
        class DummyCatalogSource(object):
            def search_catalog(self, query):
                querytext = query['SearchableText']['query']
                return [Mock(id=querytext)]

        widget = TextWidget(self.request)
        widget.context = self.portal
        widget.field = Choice(source=DummyCatalogSource())
        widget.field.interface = Interface

        from collective.patterns.widgets.browser.vocabulary import SourceView
        view = SourceView(widget, self.request)
        query = {
            'criteria': [
                {
                    'i': 'SearchableText',
                    'o': 'plone.app.querystring.operation.string.is',
                    'v': 'foo'
                }
            ]
        }
        self.request.form.update({
            'query': json.dumps(query),
            'attributes': 'id',
        })
        data = json.loads(view())
        self.assertEquals(len(data['results']), 1)
        self.assertEquals(data['results'][0]['id'], 'foo')
Beispiel #13
0
 def update(self, *args, **kwargs):
     if not hasattr(self, 'vocabulary'):
         self.vocabulary = getattr(self.field, 'vocabularyName', None)
     z3cform_TextWidget.update(self, *args, **kwargs)
def KeywordLangKey(field, request):
    field_widget = TextWidget(request)
    alsoProvides(field_widget, IKeywordLangKey)
    return FieldWidget(field, field_widget)