Example #1
0
    def view(self):

        session = DBSession()

        query = (session.query(TodoItem)
                .filter(TodoItem.parent_id == self.context.id)
                .order_by(TodoItem.todostate)
                .order_by(TodoItem.modification_date.desc())
                )

        items = query.all()

        page = self.request.params.get('page', 1)

        settings = todos_settings()

        if settings['use_batching']:
            items = Batch.fromPagenumber(items,
                          pagesize=settings['pagesize'],
                          pagenumber=int(page))

        return {
            'api': template_api(self.context, self.request),
            'macros': get_renderer('templates/macros.pt').implementation(),
            'items': items,
            'settings': settings,
            }
Example #2
0
    def view(self):

        session = DBSession()

        query = session.query(SoftwareProject).filter(
                SoftwareProject.parent_id == self.context.id)

        items = query.all()

        # [TODO] Are these calls too expensive?
        [item.refresh_pypi() for item in items]
        [item.refresh_github() for item in items]
        [item.refresh_bitbucket() for item in items]

        if self.context.sort_order_is_ascending:
            items = sorted(items, key=lambda x: x.date)
        else:
            items = sorted(items, key=lambda x: x.date, reverse=True)

        page = self.request.params.get('page', 1)

        settings = collection_settings()

        if settings['use_batching']:
            items = Batch.fromPagenumber(items,
                          pagesize=settings['pagesize'],
                          pagenumber=int(page))

        return {
            'api': template_api(self.context, self.request),
            'macros': get_renderer('templates/macros.pt').implementation(),
            'items': items,
            'settings': settings,
            }
Example #3
0
    def search(self, query=None, page=None, b_size=None, uids=None):
        catalog = getToolByName(self.context, 'portal_catalog')
        registry = getUtility(IRegistry)
        settings = registry.forInterface(ICoverSettings)
        searchable_types = settings.searchable_content_types

        #temporary we'll only list published elements
        catalog_query = {'sort_on': 'effective', 'sort_order': 'descending'}
        catalog_query['portal_type'] = searchable_types

        if query:
            catalog_query = {'SearchableText': '%s*' % query}

        # XXX: not implemented, this is needed?


#        if uids:
#            catalog_query['UID'] = uids

        results = catalog(**catalog_query)
        results = Batch.fromPagenumber(items=results,
                                       pagesize=b_size,
                                       pagenumber=page)

        return results
Example #4
0
 def batch(self):
     pagesize = self.pagesize
     if self.show_all:
         pagesize = len(self.items)
     b = Batch.fromPagenumber(self.items, pagesize=pagesize, pagenumber=self.pagenumber)
     map(self.set_checked, b)
     return b
Example #5
0
def extend_with_batching(widget, results):
    page = 1
    if widget.request.get('page'):
        page = int(widget.request.get('page'))
    batch = Batch.fromPagenumber(results, pagenumber=page)
    batch_view = RefBrowserBatchView(widget, widget.request)
    return (batch, batch_view(batch, minimal_navigation=True))
Example #6
0
    def view(self):

        session = DBSession()

        query = session.query(Category).filter(
                Category.parent_id == self.context.id)

        items = query.all()

        todos_data = {}
        for state in todo_states:
            todos_data[state] = 0

        todos_data['total'] = 0

        modification_dates_and_items = []

        for item in items:
            if item.children:
                done_count = 0
                for todo in item.children:
                    todos_data[todo.todostate] += 1
                    if todo.todostate == 'done':
                        done_count += 1

                todos_data['total'] += len(item.children)

                sorted_todoitems = sorted(item.children,
                                      key=lambda x: x.modification_date,
                                      reverse=True)

                modification_dates_and_items.append(
                        (sorted_todoitems[0].modification_date,
                         sorted_todoitems[0],
                         done_count,
                         item))
            else:
                modification_dates_and_items.append(
                        (item.modification_date, item, 0, item))

        items = sorted(modification_dates_and_items)

        page = self.request.params.get('page', 1)

        settings = todos_settings()

        if settings['use_batching']:
            items = Batch.fromPagenumber(items,
                          pagesize=settings['pagesize'],
                          pagenumber=int(page))

        return {
            'api': template_api(self.context, self.request),
            'macros': get_renderer('templates/macros.pt').implementation(),
            'items': items,
            'todos_data': todos_data,
            'data_keys': todo_states + ['total'],
            'settings': settings,
            }
 def batched_news(self):
     query = {"portal_type": "News Item",
              "sort_on": "effective",
              "sort_order": "descending", }
     news = api.content.find(**query)
     pagenumber = int(self.request.get("p", "1"))
     batch = Batch.fromPagenumber(items=news, pagesize=6,
                                  pagenumber=pagenumber, navlistsize=0)
     return batch
Example #8
0
 def batch(self):
     pagesize = self.pagesize
     if self.show_all:
         pagesize = len(self.items)
     b = Batch.fromPagenumber(self.items,
                              pagesize=pagesize,
                              pagenumber=self.pagenumber)
     map(self.set_checked, b)
     return b
Example #9
0
    def test_custom_batching_is_available(self):
        batch = Batch.fromPagenumber([item for item in range(1, 100)],
                                    pagesize=10,
                                    pagenumber=1)

        batching = self.portal.restrictedTraverse('@@batchnavigation')

        doc = PyQuery(batching(batch))
        self.assertTrue(doc('.onegovBatching.listingBar'),
                        'Did not found the onegov batching')
Example #10
0
    def test_custom_batching_is_available(self):
        batch = Batch.fromPagenumber([item for item in range(1, 100)],
                                     pagesize=10,
                                     pagenumber=1)

        batching = self.portal.restrictedTraverse('@@batchnavigation')

        doc = PyQuery(batching(batch))
        self.assertTrue(doc('.onegovBatching.listingBar'),
                        'Did not found the onegov batching')
Example #11
0
 def batch(self):
     """Batch of Products (brains)."""
     context = aq_inner(self.context)
     search_filter = dict(
         path='/'.join(context.getPhysicalPath()),
         review_state='published',
         portal_type='Place'
         )
     catalog = getToolByName(context, 'portal_catalog')
     brains = catalog.searchResults(search_filter)
     batch = Batch.fromPagenumber(
         items=brains, pagesize=2000,
         pagenumber=self.pagenum, navlistsize=5)
     return batch
Example #12
0
 def view_blog(self):
     settings = blog_settings()
     macros = get_renderer('templates/macros.pt').implementation()
     session = DBSession()
     query = session.query(BlogEntry).filter(\
                 BlogEntry.parent_id == self.context.id).order_by(BlogEntry.date.desc())
     items = query.all()
     items = [item for item in items if has_permission('view', item, self.request)]
     page = self.request.params.get('page', 1)
     if settings['use_batching']:
         items = Batch.fromPagenumber(items,
                       pagesize=settings['pagesize'],
                       pagenumber=int(page))
     return {
         'api': template_api(self.context, self.request),
         'macros': macros,
         'items': items,
         'settings': settings,
         }
Example #13
0
    def view(self):

        session = DBSession()

        query = session.query(Topic).filter(
                Topic.parent_id == self.context.id)

        items = query.all()

        modification_dates_and_items = []
        for item in items:
            if item.children:
                sorted_posts = sorted(item.children,
                                      key=lambda x: x.modification_date,
                                      reverse=True)
                modification_dates_and_items.append(
                        (sorted_posts[0].modification_date, sorted_posts[0], item))
            else:
                modification_dates_and_items.append(
                        (item.modification_date, item, item))


        if self.context.sort_order_is_ascending:
            items = sorted(modification_dates_and_items)
        else:
            items = sorted(modification_dates_and_items, reverse=True)

        page = self.request.params.get('page', 1)

        settings = forum_settings()

        if settings['use_batching']:
            items = Batch.fromPagenumber(items,
                          pagesize=settings['pagesize'],
                          pagenumber=int(page))

        return {
            'api': template_api(self.context, self.request),
            'macros': get_renderer('templates/macros.pt').implementation(),
            'items': items,
            'settings': settings,
            }
    def search(self, query=None, page=None, b_size=None, uids=None):
        catalog = getToolByName(self.context, "portal_catalog")
        registry = getUtility(IRegistry)
        settings = registry.forInterface(ICoverSettings)
        searchable_types = settings.searchable_content_types

        # temporary we'll only list published elements
        catalog_query = {"sort_on": "effective", "sort_order": "descending"}
        catalog_query["portal_type"] = searchable_types

        if query:
            catalog_query = {"SearchableText": "%s*" % query}

        # XXX: not implemented, this is needed?
        #        if uids:
        #            catalog_query['UID'] = uids

        results = catalog(**catalog_query)
        results = Batch.fromPagenumber(items=results, pagesize=b_size, pagenumber=page)

        return results
Example #15
0
def view_blog(context, request):
    settings = blog_settings()
    macros = get_renderer('templates/macros.pt').implementation()
    session = DBSession()
    query = session.query(BlogEntry).filter(\
                BlogEntry.parent_id == context.id).order_by(BlogEntry.date)
    items = query.all()
    page = request.params.get('page', 1)
    if settings['use_batching']:
        items = Batch.fromPagenumber(items,
                      pagesize=settings['pagesize'],
                      pagenumber=int(page))

    for item in items:
        item.formatted_date = format_date(item.date)

    return {
        'api': template_api(context, request),
        'macros': macros,
        'items': items,
        'settings': settings,
        }
Example #16
0
    def articles(self, limit, genre='Current', all_articles=False,
                       outstanding_optional=False, section='', batched=False, b_start=0):

        elements = {'outstanding': [], 'secondary': [], 'articles': []}
        catalog = getToolByName(self.context, 'portal_catalog')

        section = self.section(section)

        #query build getting all the section news
        query = {}
        query['object_provides'] = {'query': [INITF.__identifier__]}
        query['sort_on'] = 'effective'
        query['sort_order'] = 'reverse'
        query['genre'] = genre
        query['review_state'] = 'published'

        #query build for outstanding news
        outstanding = {}
        outstanding['object_provides'] = {
        'query': [ISectionArticle.__identifier__]}
        outstanding['genre'] = genre
        outstanding['sort_on'] = 'effective'
        outstanding['sort_order'] = 'reverse'
        outstanding['sort_limit'] = 1
        outstanding['review_state'] = 'published'

        if section:
            query['section'] = section
            outstanding['section'] = section

        existing = catalog.searchResults(query)
        if all_articles:
            if batched:
                if(len(existing) > (b_start-1)*limit):
                    elements['articles'] = Batch.fromPagenumber(items=existing, pagesize=limit, pagenumber=b_start)
                else:
                    elements['articles'] = []
            else:
                elements['articles'] = existing[:limit]
        else:
            #queremos dividir los objetos en outstanding y otros
            if (existing and section) or (existing and outstanding_optional):
                outstanding_UID = 0
                outstanding_results = catalog.searchResults(outstanding)

                move = 0
                if outstanding_results:
                    elements['outstanding'].append(
                        outstanding_results[0].getObject())
                    outstanding_UID = outstanding_results[0].UID
                else:
                    elements['outstanding'].append(existing[0].getObject())
                    move = 1
                #batcheamos los objetos para paginacion
                if batched:
                    if b_start > limit:
                        move = 0
                    tmp_elements = filter(lambda nota: nota.UID != outstanding_UID,
                        existing)[move:]
                    if(len(existing) > (b_start-1)*limit):
                        elements['secondary'] = Batch.fromPagenumber(items=tmp_elements, pagesize=limit, pagenumber=b_start)
                    else:
                        elements['secondary'] = []
                else:
                    elements['secondary'] = \
                        filter(lambda nota: nota.UID != outstanding_UID,
                        existing)[move: limit + move]

            elif existing:
                #no es una seccion, sino una vista global
                elements['outstanding'] = [existing[0].getObject()]
                elements['secondary'] = existing[1: limit + 1]

        return elements
Example #17
0
 def batch(self):
     items = self.context.get_items()
     batch_size = self.context.batch_size or sys.maxsize
     page = int(self.request.get('%spage' % self.prefix, 0))
     return Batch.fromPagenumber(items, batch_size, page + 1)
Example #18
0
    def view(self):

        session = DBSession()

        # Posts, if we have them.

        order_by = Post.modification_date
        if not self.context.sort_order_is_ascending:
            order_by = Post.modification_date.desc()
        query = (session.query(Post)
                 .filter(Post.parent_id == self.context.id)
                 .order_by(order_by)
                )

        top_level_posts = query.all()

        post_counts_and_trees = []

        for post in top_level_posts:
            if post.children:
                tree = nodes_tree(self.request, post)
                post_count = len(tree.tolist())
            else:
                tree = (post)
                post_count = 1
            post_tree = {
                'tree': {
                    'children': [tree],
                    },
                }

            post_counts_and_trees.append((post_count, post, post_tree))

        # Votes, if we have them.

        votes = None

        vote_data = {}
        vote_data['Sum'] = 0
        vote_data['Count'] = 0
        vote_data['Plus'] = 0
        vote_data['Zero'] = 0
        vote_data['Minus'] = 0

        votes_and_vote_objs = []

        if self.context.votable:

            query = session.query(Vote).filter(
                    Vote.parent_id == self.context.id)

            votes = query.all()

            for vote in votes:

                vote_data['Sum'] += vote.vote
                vote_data['Count'] += 1

                if vote.vote > 0:
                    vote_data['Plus'] += 1
                elif vote.vote == 0:
                    vote_data['Zero'] += 1
                else:
                    vote_data['Minus'] += 1

                votes_and_vote_objs.append((vote.vote, vote, 'vote'))

            if votes_and_vote_objs:
                if self.context.sort_order_is_ascending:
                    votes_and_vote_objs = sorted(votes_and_vote_objs)
                else:
                    votes_and_vote_objs = sorted(votes_and_vote_objs, reverse=True)

        page = self.request.params.get('page', 1)

        settings = forum_settings()

        if settings['use_batching']:
            post_items = Batch.fromPagenumber(post_counts_and_trees,
                          pagesize=settings['pagesize'],
                          pagenumber=int(page))

        return {
            'api': template_api(self.context, self.request),
            'macros': get_renderer('templates/macros.pt').implementation(),
            'vote_items': votes_and_vote_objs,
            'vote_data': vote_data,
            'items': post_items,
            'settings': settings,
            }
Example #19
0
 def batch(self):
     items = self.context.get_items()
     batch_size = self.context.batch_size or sys.maxint
     page = int(self.request.get('%spage' % self.prefix, 0))
     return Batch.fromPagenumber(items, batch_size, page + 1)