예제 #1
0
 def get_items(self, resource, context):
     # Keep the query parameters
     schema = context.view.get_query_schema()
     params = encode_query(context.query, schema)
     return [
         {'title': MSG(u'Download "Last Att." images as one Zip'),
          'href': ';zip?%s' % params}
           ] + TrackerViewMenu.get_items(self, resource, context)
예제 #2
0
 def action_diff(self, resource, context, form):
     # Take newer and older revisions, even if many selected
     ids = sorted(form['ids'])
     # Each item is a (index, revision) tuple
     revision = ids.pop()[1]
     to = ids.pop(0)[1] if ids else 'HEAD'
     # FIXME same hack than rename to call a GET from a POST
     query = encode_query({'revision': revision, 'to': to})
     uri = '%s/;changes?%s' % (context.get_link(resource), query)
     return get_reference(uri)
예제 #3
0
 def action_diff(self, resource, context, form):
     # Take newer and older revisions, even if many selected
     ids = sorted(form['ids'])
     # Each item is a (index, revision) tuple
     revision = ids.pop()[1]
     to = ids.pop(0)[1] if ids else 'HEAD'
     # FIXME same hack than rename to call a GET from a POST
     query = encode_query({'revision': revision, 'to': to})
     uri = '%s/;changes?%s' % (context.get_link(resource), query)
     return get_reference(uri)
예제 #4
0
파일: tags.py 프로젝트: nkhine/ztm-ikaaro
    def get_tags_namespace(self, context):
        tags_folder = self.get_site_root().get_resource('tags')
        # query
        query = encode_query(context.uri.query)

        tags = []
        for tag_name in self.get_property('tags'):
            tag = tags_folder.get_resource(tag_name)
            href = context.get_link(tag)
            if query:
                href = '%s?%s' % (href, query)
            tags.append({'title': tag.get_title(), 'href': href})
        return tags
예제 #5
0
파일: tags.py 프로젝트: hforge/itws
    def get_tags_namespace(self, context):
        tags_folder = self.get_site_root().get_resource("tags")
        ac = tags_folder.get_access_control()
        # query
        query = encode_query(context.uri.query)

        tags = []
        for tag_name in self.get_property("tags"):
            tag = tags_folder.get_resource(tag_name)
            # Check ACL
            if ac.is_allowed_to_view(context.user, tag) is False:
                continue
            href = context.get_link(tag)
            if query:
                href = "%s?%s" % (href, query)
            tags.append({"title": tag.get_title(), "href": href})
        return tags
예제 #6
0
 def test_query(self):
     input = 'a&a'
     output = encode_query(decode_query(input))
     self.assertEqual(output, input)
예제 #7
0
    def get_namespace(self, resource, context):
        tags_folder = self._get_tags_folder(resource, context)

        # description (help text)
        bo_description = False
        ac = tags_folder.get_access_control()
        if ac.is_allowed_to_edit(context.user, tags_folder):
            if is_navigation_mode(context) is False and \
                    self.show_description and \
                    type(context.resource) is type(tags_folder):
                bo_description = True

        tag_brains = tags_folder.get_tag_brains(context)
        tag_base_link = '%s/%%s' % context.get_link(tags_folder)
        if self.formats:
            query = {'format': self.formats}
            tag_base_link = '%s?%s' % (tag_base_link, encode_query(query))

        # query
        root = context.root
        tags_query = tags_folder.get_tags_query_terms(state='public',
                                                      formats=self.formats)
        tags_results = root.search(AndQuery(*tags_query))

        items_nb = []
        tags = []
        for brain in tag_brains:
            if self.tags_to_show and len(items_nb) == self.tags_to_show:
                break
            sub_results = tags_results.search(PhraseQuery('tags', brain.name))
            nb_items = len(sub_results)
            if nb_items:
                d = {}
                title = brain.title or brain.name
                if self.show_number:
                    title = u'%s (%s)' % (title, nb_items)
                d['title'] = title
                d['xml_title'] = title.replace(u' ', u'\u00A0')
                d['link'] = tag_base_link % brain.name
                d['css'] = None
                items_nb.append(nb_items)
                d['nb_items'] = nb_items
                tags.append(d)

        if not tags:
            return {'tags': [], 'bo_description': bo_description}

        max_items_nb = max(items_nb) if items_nb else 0
        min_items_nb = min(items_nb) if items_nb else 0

        css_index_max = self.css_index_max
        delta = (max_items_nb - min_items_nb) or 1
        percentage_per_item = float(css_index_max - 1) / delta

        # Special case of there is only one item
        default_css = 'tag-1'

        for tag in tags:
            if min_items_nb == max_items_nb:
                tag['css'] = default_css
            else:
                nb_items = tag['nb_items']
                css_index = int(ceil(nb_items) * percentage_per_item) or 1
                # FIXME sometimes css_index = 0, this should never append
                # set css_index to 1
                css_index = abs(css_index_max - css_index + 1) or 1
                tag['css'] = 'tag-%s' % css_index

        # Random
        if self.random_tags:
            shuffle(tags)

        return {'tags': tags, 'bo_description': bo_description}
예제 #8
0
 def test_query(self):
     input = 'a&a'
     output = encode_query(decode_query(input))
     self.assertEqual(output, input)