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))
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)
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
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
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')
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))
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 ''
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())
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