예제 #1
0
    def eventtags(self):
        """ Return a list of tuples containing the event tag value
        (category value) in position 0 and the link to the related
        filter in position 1.

        The results are sorted by value (position 0).
        """

        categorized = IDirectoryCategorized(self)

        categories = dict()
        categories['cat1'] = categorized.keywords(categories=('cat1', ))
        categories['cat2'] = categorized.keywords(categories=('cat2', ))

        baseurl = self.get_parent().absolute_url() + '?filter=true&%s=%s'

        tags = list()

        for key in sorted(categories):
            for tag in sorted(categories[key]):
                if not tag:
                    continue

                tags.append((
                    tag.strip().replace(' ', ' '),
                    baseurl % (key, urllib.quote(tag.encode('utf-8')))
                ))

        return tags
예제 #2
0
    def eventtags(self):
        """ Return a list of tuples containing the event tag value
        (category value) in position 0 and the link to the related
        filter in position 1.

        The results are sorted by value (position 0).
        """

        categorized = IDirectoryCategorized(self)

        categories = dict()
        categories['cat1'] = categorized.keywords(categories=('cat1', ))
        categories['cat2'] = categorized.keywords(categories=('cat2', ))

        baseurl = self.get_parent().absolute_url() + '?filter=true&%s=%s'

        tags = list()

        for key in sorted(categories):
            for tag in sorted(categories[key]):
                if not tag:
                    continue

                tags.append(
                    (tag.strip().replace(' ', ' '),
                     baseurl % (key, urllib.quote(tag.encode('utf-8')))))

        return tags
예제 #3
0
    def test_categories(self):
        directory = self.add_directory()
        directory.cat1 = 'One'
        directory.cat2 = 'Two'
        directory.cat3 = 'Three'

        item = self.add_item(directory)

        # only present after setting them on the behavior
        self.assertFalse(hasattr(aq_base(item), 'cat1'))
        self.assertFalse(hasattr(aq_base(item), 'cat2'))
        self.assertFalse(hasattr(aq_base(item), 'cat3'))
        self.assertFalse(hasattr(aq_base(item), 'cat4'))

        categorized = IDirectoryCategorized(item)
        self.assertTrue(hasattr(categorized, 'cat1'))
        self.assertTrue(hasattr(categorized, 'cat2'))
        self.assertTrue(hasattr(categorized, 'cat3'))
        self.assertTrue(hasattr(categorized, 'cat4'))

        categorized.cat1 = '1'
        categorized.cat2 = '2'
        categorized.cat3 = '3'
        categorized.cat4 = '4'  # Will be ignored

        self.assertTrue(hasattr(aq_base(item), 'cat1'))
        self.assertTrue(hasattr(aq_base(item), 'cat2'))
        self.assertTrue(hasattr(aq_base(item), 'cat3'))
        self.assertTrue(hasattr(aq_base(item), 'cat4'))

        categories = categorized.categories()
        self.assertEqual(len(categories), 3)

        item_used = [c[0] for c in categories]
        dir_used = directory.used_categories()
        self.assertEqual(item_used, dir_used)

        item_labels = [c[1] for c in categories]
        dir_labels = directory.labels().values()
        self.assertEqual(item_labels, dir_labels)

        values = [c[2] for c in categories]
        self.assertEqual(values, ['1', '2', '3'])

        # Set the category to contain multiple keywords and use only
        # one category
        categorized.cat1 = ['tag one', 'tag two']
        directory.cat2 = None
        directory.cat3 = None

        categories = categorized.categories()

        self.assertEqual(len(categories), 1)
        self.assertEqual(categories[0][2], ['tag one', 'tag two'])

        # Set more categories and see if the keywords function correctly
        # returns all keywords flattened, even if invisible

        categorized.cat1 = ['Ready', 'Or']
        categorized.cat2 = 'Not'
        categorized.cat3 = ['Here', 'I']
        categorized.cat4 = 'Come'

        keywords = categorized.keywords()
        self.assertEqual(keywords, ['Ready', 'Or', 'Not', 'Here', 'I', 'Come'])
예제 #4
0
    def test_categories(self):
        directory = self.add_directory()
        directory.cat1 = 'One'
        directory.cat2 = 'Two'
        directory.cat3 = 'Three'

        item = self.add_item(directory)

        # only present after setting them on the behavior
        self.assertFalse(hasattr(aq_base(item), 'cat1'))
        self.assertFalse(hasattr(aq_base(item), 'cat2'))
        self.assertFalse(hasattr(aq_base(item), 'cat3'))
        self.assertFalse(hasattr(aq_base(item), 'cat4'))

        categorized = IDirectoryCategorized(item)
        self.assertTrue(hasattr(categorized, 'cat1'))
        self.assertTrue(hasattr(categorized, 'cat2'))
        self.assertTrue(hasattr(categorized, 'cat3'))
        self.assertTrue(hasattr(categorized, 'cat4'))

        categorized.cat1 = '1'
        categorized.cat2 = '2'
        categorized.cat3 = '3'
        categorized.cat4 = '4'  # Will be ignored

        self.assertTrue(hasattr(aq_base(item), 'cat1'))
        self.assertTrue(hasattr(aq_base(item), 'cat2'))
        self.assertTrue(hasattr(aq_base(item), 'cat3'))
        self.assertTrue(hasattr(aq_base(item), 'cat4'))

        categories = categorized.categories()
        self.assertEqual(len(categories), 3)

        item_used = [c[0] for c in categories]
        dir_used = directory.used_categories()
        self.assertEqual(item_used, dir_used)

        item_labels = [c[1] for c in categories]
        dir_labels = directory.labels().values()
        self.assertEqual(item_labels, dir_labels)

        values = [c[2] for c in categories]
        self.assertEqual(values, ['1', '2', '3'])

        # Set the category to contain multiple keywords and use only
        # one category
        categorized.cat1 = ['tag one', 'tag two']
        directory.cat2 = None
        directory.cat3 = None

        categories = categorized.categories()

        self.assertEqual(len(categories), 1)
        self.assertEqual(categories[0][2], ['tag one', 'tag two'])

        # Set more categories and see if the keywords function correctly
        # returns all keywords flattened, even if invisible

        categorized.cat1 = ['Ready', 'Or']
        categorized.cat2 = 'Not'
        categorized.cat3 = ['Here', 'I']
        categorized.cat4 = 'Come'

        keywords = categorized.keywords()
        self.assertEqual(keywords, ['Ready', 'Or', 'Not', 'Here', 'I', 'Come'])