コード例 #1
0
    def test_actions_disabled(self):
        user = self.login()

        categories = ChoiceModelIterator(Category.objects.all())
        creation_url, _allowed = config_registry.get_model_creation_info(
            SubCategory, user)
        widget = CreatorCategorySelector(
            categories=categories,
            creation_url=creation_url,
            creation_allowed=True,
        )
        widget._build_actions({})

        self.assertListEqual(
            [
                self._build_create_action(
                    SubCategory.creation_label,
                    _('Create'),
                    creation_url + '?category=${_delegate_.category}',
                ),
            ],
            widget.actions,
        )

        widget._build_actions({'readonly': True})
        self.assertListEqual([], widget.actions)

        widget._build_actions({'disabled': True})
        self.assertListEqual([], widget.actions)
コード例 #2
0
ファイル: test_forms.py プロジェクト: mrjmad/creme_crm-2.1
    def test_user_not_allowed(self):
        user = self.login(is_superuser=False)

        field = CategoryField()
        field.user = user

        url, _allowed = config_registry.get_model_creation_info(SubCategory, user)
        self.assertEqual(user, field.user)
        self.assertFalse(field.widget.creation_allowed)
        self.assertEqual(url, field.widget.creation_url)
コード例 #3
0
ファイル: test_forms.py プロジェクト: mrjmad/creme_crm-2.1
    def test_create_subcategory_from_widget__unknown_category(self):
        user = self.login()

        url, _allowed = config_registry.get_model_creation_info(SubCategory, user)
        self.assertGET200(url)

        count = SubCategory.objects.count()

        self.client.post(url, data={'name': 'sub12', 'description': 'sub12', 'category': 99999})
        self.assertEqual(count, SubCategory.objects.count())
コード例 #4
0
    def test_user02(self):
        "In constructor."
        user = self.login()
        field = CategoryField(user=user)

        url, _allowed = config_registry.get_model_creation_info(
            SubCategory, user)
        self.assertEqual(user, field.user)
        self.assertTrue(field.widget.creation_allowed)
        self.assertEqual(url, field.widget.creation_url)
コード例 #5
0
ファイル: test_forms.py プロジェクト: mrjmad/creme_crm-2.1
    def test_create_category_from_widget(self):
        user = self.login()

        url, _allowed = config_registry.get_model_creation_info(Category, user)
        self.assertGET200(url)

        response = self.client.post(url, data={'name': 'cat1',
                                               'description': 'cat1',
                                               'category': 'unknown',
                                              },
                                   )
        self.assertNoFormError(response)
        cat1 = self.get_object_or_fail(Category, name='cat1')

        self.assertEqual({'added': [[cat1.id, str(cat1)]],
                          'value': cat1.id
                         },
                         response.json()
                        )
コード例 #6
0
    def test_create_subcategory_from_widget(self):
        user = self.login()

        cat1 = Category.objects.create(name='cat1', description='description')
        count = SubCategory.objects.count()

        url, _allowed = config_registry.get_model_creation_info(
            SubCategory, user)
        response = self.assertGET200(url)
        self.assertTemplateUsed(response,
                                'creme_core/generics/form/add-popup.html')

        context = response.context
        self.assertEqual(
            pgettext('products-sub_category', 'Create a sub-category'),
            context.get('title'))
        self.assertEqual(_('Save'), context.get('submit_label'))

        # ---
        response = self.client.post(
            url,
            data={
                'name': 'sub12',
                'description': 'sub12',
                'category': cat1.id,
            },
        )
        self.assertNoFormError(response)
        self.assertEqual(count + 1, SubCategory.objects.count())

        cat12 = self.get_object_or_fail(SubCategory, name='sub12')

        self.assertEqual(
            {
                'added': [{
                    'category': [str(cat1.id), str(cat1)],
                    'subcategory': [str(cat12.id), str(cat12)],
                }],
                'value': {
                    'category': str(cat1.id),
                    'subcategory': str(cat12.id),
                },
            }, response.json())
コード例 #7
0
ファイル: test_widget.py プロジェクト: mrjmad/creme_crm-2.1
    def test_actions_creation_not_allowed(self):
        user = self.login()

        categories = ChoiceModelIterator(Category.objects.all())
        creation_url, _allowed = config_registry.get_model_creation_info(
            SubCategory, user)
        widget = CreatorCategorySelector(categories=categories,
                                         creation_url=creation_url,
                                         creation_allowed=False)
        widget._build_actions({})

        self.assertListEqual([
            self._build_create_action(
                SubCategory.creation_label,
                _("Can't create"),
                url=creation_url + '?category=${_delegate_.category}',
                enabled=False,
            ),
        ], widget.actions)
コード例 #8
0
    def test_render(self):
        user = self.login()

        categories = ChoiceModelIterator(Category.objects.all())
        creation_url, _allowed = config_registry.get_model_creation_info(
            SubCategory, user)
        widget = CreatorCategorySelector(
            categories=categories,
            creation_url=creation_url,
            creation_allowed=True,
        )
        value = json_dump({'category': 1, 'subcategory': 1})

        html = '''
<ul class="hbox ui-creme-widget ui-layout widget-auto ui-creme-actionbuttonlist"
    widget="ui-creme-actionbuttonlist">
    <li class="delegate">
        <div class="ui-creme-widget widget-auto ui-creme-chainedselect"
             widget="ui-creme-chainedselect">
            <input class="ui-creme-input ui-creme-chainedselect"
                   name="sub_category" type="hidden" value="{value}" />
            <ul class="ui-layout vbox">
                <li chained-name="category" class="ui-creme-chainedselect-item">
                    <span class="ui-creme-dselectlabel">{categories_label}</span>
                    <select class="ui-creme-input ui-creme-widget ui-creme-dselect"
                            name="" url="" widget="ui-creme-dselect">
                        {categories}
                    </select>
                </li>
                <li chained-name="subcategory" class="ui-creme-chainedselect-item">
                    <span class="ui-creme-dselectlabel">{sub_categories_label}</span>
                    <select class="ui-creme-input ui-creme-widget ui-creme-dselect"
                            name="" url="{choices_url}" widget="ui-creme-dselect">
                    </select>
                </li>
            </ul>
        </div>
    </li>
    <li>
        <button class="ui-creme-actionbutton with-icon"
                name="create" title="{create_title}" type="button" popupUrl="{create_url}">
            {create_icon}<span>{create_label}</span>
        </button>
    </li>
</ul>'''.format(
            value=escape(value),
            categories=format_html_join(
                '',
                '<option value="{}">{}</option>',
                Category.objects.values_list('id', 'name'),
            ),
            categories_label=_('Category'),
            sub_categories_label=_('Sub-category'),
            choices_url=reverse(
                'products__subcategories',
                args=('1234', ),
            ).replace('1234', '${category}'),
            create_title=_('Create'),
            create_label=SubCategory.creation_label,
            create_url=creation_url + '?category=${_delegate_.category}',
            create_icon=self.get_icon(
                'add',
                size='form-widget',
                label=SubCategory.creation_label,
            ).render(),
        )

        self.maxDiff = None
        self.assertHTMLEqual(
            html,
            widget.render(
                'sub_category',
                value,
                attrs={
                    'reset': False,
                    'direction': ChainedInput.VERTICAL
                },
            ))
コード例 #9
0
 def _update_creation_info(self):
     widget = self.widget
     widget.creation_url, widget.creation_allowed = config_registry.get_model_creation_info(
         SubCategory, self.user)
コード例 #10
0
 def _update_creation_info(self):
     widget = self.widget
     user = self._user
     widget.creation_url, widget.creation_allowed = (
         ('', False) if user is None else
         config_registry.get_model_creation_info(SubCategory, user))