コード例 #1
0
 def process_request(self, req):
     #TODO: catch errors
     if '/' + self.href == req.path_info:
         if 'GET' == req.method:
             self.return_json(req, Comments(req, self.env).search(req.args))
         if 'POST' == req.method:
             comments = Comments(req, self.env)
             id = comments.create(json.loads(req.read()))
             self.return_json(req, comments.by_id(id))
コード例 #2
0
    def _do_seed(self):
        # Create a subscription for all existing attachments
        for row in self.env.db_query("""
                SELECT DISTINCT type, id FROM attachment
                """):
            for attachment in Attachment.select(self.env, row[0], row[1]):
                Subscription.from_attachment(self.env, attachment)

        # Create a subscription for all existing revisions
        rm = RepositoryManager(self.env)
        repos = rm.get_real_repositories()
        for repo in repos:
            _rev = repo.get_oldest_rev()
            while _rev:
                try:
                    _cs = repo.get_changeset(_rev)
                    Subscription.from_changeset(self.env, _cs)
                except NoSuchChangeset:
                    pass
                _rev = repo.next_rev(_rev)

        # Create a subscription for all existing comments
        comments = Comments(None, self.env).all()
        for comment in comments:
            Subscription.from_comment(self.env, comment)
コード例 #3
0
    def get_paginator(self):
        def href_with_page(page):
            args = copy.copy(self.req.args)
            args['page'] = page
            return self.req.href(self.href, args)

        paginator = Paginator(self.data['comments'], self.page - 1,
                              self.per_page,
                              Comments(self.req, self.env).count(self.args))
        if paginator.has_next_page:
            add_link(self.req, 'next', href_with_page(self.page + 1),
                     'Next Page')
        if paginator.has_previous_page:
            add_link(self.req, 'prev', href_with_page(self.page - 1),
                     'Previous Page')
        shown_pages = paginator.get_shown_pages(page_index_count=11)
        links = [{
            'href': href_with_page(page),
            'class': None,
            'string': str(page),
            'title': 'Page %d' % page
        } for page in shown_pages]
        paginator.shown_pages = links
        paginator.current_page = {
            'href': None,
            'class': 'current',
            'string': str(paginator.page + 1),
            'title': None
        }
        return paginator
コード例 #4
0
    def process_request(self, req):
        req.perm.require('TRAC_ADMIN')

        self.data = {}
        self.args = {}
        self.req = req

        self.per_page = int(req.args.get('per-page', self.COMMENTS_PER_PAGE))
        self.page = int(req.args.get('page', 1))
        self.order_by = req.args.get('orderby', 'id')
        self.order = req.args.get('order', 'DESC')

        self.add_path_and_author_filters()

        self.comments = Comments(req, self.env)
        self.data['comments'] = self.comments.search(self.args, self.order,
                                                     self.per_page, self.page,
                                                     self.order_by)
        self.data['reponame'], repos, path = RepositoryManager(
            self.env).get_repository_by_path('/')
        self.data['can_delete'] = 'TRAC_ADMIN' in req.perm
        self.data['paginator'] = self.get_paginator()
        self.data['current_sorting_method'] = self.order_by
        self.data['current_order'] = self.order
        self.data['sortable_headers'] = []

        self.data.update(self.comments.get_filter_values())
        self.prepare_sortable_headers()

        return 'comments.html', self.data, None
コード例 #5
0
 def _get_comment_thread(self, comment):
     """
     Returns all comments in the same location as a given comment, sorted
     in order of id.
     """
     comments = Comments(None, self.env)
     args = {'type': comment.type,
             'revision': comment.revision,
             'path': comment.path,
             'line': comment.line}
     return comments.search(args, order_by='id')
コード例 #6
0
    def process_request(self, req):
        text = ''
        for id in req.args['ids'].split(','):
            comment = Comments(req, self.env).by_id(id)
            text += """
[[CodeCommentLink(%(id)s)]]
%(comment_text)s

""".lstrip() % {
                'id': id,
                'comment_text': comment.text
            }
        req.redirect(req.href.newticket(description=text))
コード例 #7
0
 def expand_macro(self, formatter, name, text, args):
     try:
         comment = Comments(formatter.req, formatter.env).by_id(text)
         return tag.a(comment.link_text(), href=comment.href())
     except:
         return ''
コード例 #8
0
 def delete(self, req):
     comment = Comments(req, self.env).by_id(req.args['id'])
     comment.delete()
     add_notice(req, 'Comment deleted.')
     req.redirect(req.args['return_to'] or req.href())
コード例 #9
0
 def form(self, req):
     data = {}
     referrer = req.get_header('Referer')
     data['comment'] = Comments(req, self.env).by_id(req.args['id'])
     data['return_to'] = referrer
     return 'delete.html', data, None