def _render_view(self, req, db, page): page_name = self._set_title(req, page, '') if page.name == 'WikiStart': req.hdf['title'] = '' version = req.args.get('version') if version: # Ask web spiders to not index old versions req.hdf['html.norobots'] = 1 # Add registered converters for conversion in Mimeview( self.env).get_supported_conversions('text/x-trac-wiki'): conversion_href = req.href.wiki(page.name, version=version, format=conversion[0]) add_link(req, 'alternate', conversion_href, conversion[1], conversion[3]) latest_page = WikiPage(self.env, page.name) req.hdf['wiki'] = { 'exists': page.exists, 'version': page.version, 'latest_version': latest_page.version, 'readonly': page.readonly } if page.exists: req.hdf['wiki'] = { 'page_html': wiki_to_html(page.text, self.env, req), 'history_href': req.href.wiki(page.name, action='history'), 'last_change_href': req.href.wiki(page.name, action='diff', version=page.version) } if version: req.hdf['wiki'] = { 'comment_html': wiki_to_oneliner(page.comment or '--', self.env, db), 'author': page.author, 'age': pretty_timedelta(page.time) } else: if not req.perm.has_permission('WIKI_CREATE'): raise HTTPNotFound('Page %s not found', page.name) req.hdf['wiki.page_html'] = html.P('Describe "%s" here' % page_name) # Show attachments req.hdf['wiki.attachments'] = attachments_to_hdf( self.env, req, db, 'wiki', page.name) if req.perm.has_permission('WIKI_MODIFY'): attach_href = req.href.attachment('wiki', page.name) req.hdf['wiki.attach_href'] = attach_href
def _render_view(self, req, db, page): page_name = self._set_title(req, page, '') if page.name == 'WikiStart': req.hdf['title'] = '' version = req.args.get('version') if version: # Ask web spiders to not index old versions req.hdf['html.norobots'] = 1 # Add registered converters for conversion in Mimeview(self.env).get_supported_conversions( 'text/x-trac-wiki'): conversion_href = req.href.wiki(page.name, version=version, format=conversion[0]) add_link(req, 'alternate', conversion_href, conversion[1], conversion[3]) latest_page = WikiPage(self.env, page.name) req.hdf['wiki'] = {'exists': page.exists, 'version': page.version, 'latest_version': latest_page.version, 'readonly': page.readonly} if page.exists: req.hdf['wiki'] = { 'page_html': wiki_to_html(page.text, self.env, req), 'history_href': req.href.wiki(page.name, action='history'), 'last_change_href': req.href.wiki(page.name, action='diff', version=page.version) } if version: req.hdf['wiki'] = { 'comment_html': wiki_to_oneliner(page.comment or '--', self.env, db), 'author': page.author, 'age': pretty_timedelta(page.time) } else: if not req.perm.has_permission('WIKI_CREATE'): raise HTTPNotFound('Page %s not found', page.name) req.hdf['wiki.page_html'] = html.P(u'创建 "%s" ' % page_name) # Show attachments req.hdf['wiki.attachments'] = attachments_to_hdf(self.env, req, db, 'wiki', page.name) if req.perm.has_permission('WIKI_MODIFY'): attach_href = req.href.attachment('wiki', page.name) req.hdf['wiki.attach_href'] = attach_href
def _insert_ticket_data(self, req, db, ticket, reporter_id): """Insert ticket data into the hdf""" replyto = req.args.get('replyto') req.hdf['title'] = '#%d (%s)' % (ticket.id, ticket['summary']) req.hdf['ticket'] = ticket.values req.hdf['ticket'] = { 'id': ticket.id, 'href': req.href.ticket(ticket.id), 'replyto': replyto } # -- Ticket fields for field in TicketSystem(self.env).get_ticket_fields(): if field['type'] in ('radio', 'select'): value = ticket.values.get(field['name']) options = field['options'] if field['name'] == 'milestone' \ and not req.perm.has_permission('TICKET_ADMIN'): options = [ opt for opt in options if not Milestone(self.env, opt, db=db).is_completed ] if value and not value in options: # Current ticket value must be visible even if its not in the # possible values options.append(value) field['options'] = options name = field['name'] del field['name'] if name in ('summary', 'reporter', 'description', 'type', 'status', 'resolution', 'owner'): field['skip'] = True req.hdf['ticket.fields.' + name] = field req.hdf['ticket.reporter_id'] = reporter_id req.hdf['ticket.description.formatted'] = wiki_to_html( ticket['description'], self.env, req, db) req.hdf['ticket.opened'] = format_datetime(ticket.time_created) req.hdf['ticket.opened_delta'] = pretty_timedelta(ticket.time_created) if ticket.time_changed != ticket.time_created: req.hdf['ticket'] = { 'lastmod': format_datetime(ticket.time_changed), 'lastmod_delta': pretty_timedelta(ticket.time_changed) } # -- Ticket Change History def quote_original(author, original, link): if not 'comment' in req.args: # i.e. the comment was not yet edited req.hdf['ticket.comment'] = '\n'.join( [u'En réponse à [%s %s]:' % (link, author)] + [u'> %s' % line for line in original.splitlines()] + ['']) if replyto == 'description': quote_original(ticket['reporter'], ticket['description'], 'ticket:%d' % ticket.id) replies = {} changes = [] cnum = 0 description_lastmod = description_author = None for change in self.grouped_changelog_entries(ticket, db): changes.append(change) # wikify comment comment = '' if 'comment' in change: comment = change['comment'] change['comment'] = wiki_to_html(comment, self.env, req, db) if change['permanent']: cnum = change['cnum'] # keep track of replies threading if 'replyto' in change: replies.setdefault(change['replyto'], []).append(cnum) # eventually cite the replied to comment if replyto == str(cnum): quote_original(change['author'], comment, 'comment:%s' % replyto) if 'description' in change['fields']: change['fields']['description'] = '' description_lastmod = change['date'] description_author = change['author'] req.hdf['ticket'] = { 'changes': changes, 'replies': replies, 'cnum': cnum + 1 } if description_lastmod: req.hdf['ticket.description'] = { 'lastmod': description_lastmod, 'author': description_author } # -- Ticket Attachments req.hdf['ticket.attachments'] = attachments_to_hdf( self.env, req, db, 'ticket', ticket.id) if req.perm.has_permission('TICKET_APPEND'): req.hdf['ticket.attach_href'] = req.href.attachment( 'ticket', ticket.id) # Add the possible actions to hdf actions = TicketSystem(self.env).get_available_actions( ticket, req.perm) for action in actions: req.hdf['ticket.actions.' + action] = '1'
def _insert_ticket_data(self, req, db, ticket, reporter_id): """Insert ticket data into the hdf""" replyto = req.args.get('replyto') req.hdf['title'] = '#%d (%s)' % (ticket.id, ticket['summary']) req.hdf['ticket'] = ticket.values req.hdf['ticket'] = { 'id': ticket.id, 'href': req.href.ticket(ticket.id), 'replyto': replyto } # -- Ticket fields for field in TicketSystem(self.env).get_ticket_fields(): if field['type'] in ('radio', 'select'): value = ticket.values.get(field['name']) options = field['options'] if field['name'] == 'milestone' \ and not req.perm.has_permission('TICKET_ADMIN'): options = [opt for opt in options if not Milestone(self.env, opt, db=db).is_completed] if value and not value in options: # Current ticket value must be visible even if its not in the # possible values options.append(value) field['options'] = options name = field['name'] del field['name'] if name in ('summary', 'reporter', 'description', 'type', 'status', 'resolution', 'owner'): field['skip'] = True req.hdf['ticket.fields.' + name] = field req.hdf['ticket.reporter_id'] = reporter_id req.hdf['ticket.description.formatted'] = wiki_to_html( ticket['description'], self.env, req, db) req.hdf['ticket.opened'] = format_datetime(ticket.time_created) req.hdf['ticket.opened_delta'] = pretty_timedelta(ticket.time_created) if ticket.time_changed != ticket.time_created: req.hdf['ticket'] = { 'lastmod': format_datetime(ticket.time_changed), 'lastmod_delta': pretty_timedelta(ticket.time_changed) } # -- Ticket Change History def quote_original(author, original, link): if not 'comment' in req.args: # i.e. the comment was not yet edited req.hdf['ticket.comment'] = '\n'.join( [u'En réponse à [%s %s]:' % (link, author)] + [u'> %s' % line for line in original.splitlines()] + ['']) if replyto == 'description': quote_original(ticket['reporter'], ticket['description'], 'ticket:%d' % ticket.id) replies = {} changes = [] cnum = 0 description_lastmod = description_author = None for change in self.grouped_changelog_entries(ticket, db): changes.append(change) # wikify comment comment = '' if 'comment' in change: comment = change['comment'] change['comment'] = wiki_to_html(comment, self.env, req, db) if change['permanent']: cnum = change['cnum'] # keep track of replies threading if 'replyto' in change: replies.setdefault(change['replyto'], []).append(cnum) # eventually cite the replied to comment if replyto == str(cnum): quote_original(change['author'], comment, 'comment:%s' % replyto) if 'description' in change['fields']: change['fields']['description'] = '' description_lastmod = change['date'] description_author = change['author'] req.hdf['ticket'] = { 'changes': changes, 'replies': replies, 'cnum': cnum + 1 } if description_lastmod: req.hdf['ticket.description'] = {'lastmod': description_lastmod, 'author': description_author} # -- Ticket Attachments req.hdf['ticket.attachments'] = attachments_to_hdf(self.env, req, db, 'ticket', ticket.id) if req.perm.has_permission('TICKET_APPEND'): req.hdf['ticket.attach_href'] = req.href.attachment('ticket', ticket.id) # Add the possible actions to hdf actions = TicketSystem(self.env).get_available_actions(ticket, req.perm) for action in actions: req.hdf['ticket.actions.' + action] = '1'
def _insert_ticket_data(self, req, db, ticket, reporter_id): """Insert ticket data into the hdf""" replyto = req.args.get('replyto') req.hdf['title'] = '#%d (%s)' % (ticket.id, ticket['summary']) req.hdf['ticket'] = ticket.values req.hdf['ticket'] = { 'id': ticket.id, 'href': req.href.ticket(ticket.id), 'replyto': replyto } # -- Ticket fields ZhField = {'Status': u'狀態', 'Description': u'詳述', 'Reporter': u'報告者', 'Cc': u'附件', 'Resolution': u'解決方法', 'Component': u'组件', 'summary': u'描述', 'Priority': u'優先程度', 'Keywords': u'關鍵字', 'Version': u'版本', 'Milestone': u'里程碑', 'Owner': u'負責人', 'Type': u'類型 '} for field in TicketSystem(self.env).get_ticket_fields(): if field['type'] in ('radio', 'select'): value = ticket.values.get(field['name']) options = field['options'] if field['name'] == 'milestone' \ and not req.perm.has_permission('TICKET_ADMIN'): options = [opt for opt in options if not Milestone(self.env, opt, db=db).is_completed] if value and not value in options: # Current ticket value must be visible even if its not in the # possible values options.append(value) field['options'] = options name = field['name'] field['label'] = ZhField.get(field['label'],field['label']) del field['name'] if name in ('summary', 'reporter', 'description', 'type', 'status', 'resolution', 'owner'): field['skip'] = True req.hdf['ticket.fields.' + name] = field req.hdf['ticket.reporter_id'] = reporter_id req.hdf['ticket.description.formatted'] = wiki_to_html( ticket['description'], self.env, req, db) req.hdf['ticket.opened'] = format_datetime(ticket.time_created) ZhUnit = {'second':u'秒','seconds':u'秒','minute':u'分鐘','minutes':u'分鐘','hour':u'小時','hours':u'小時', 'day':u'天','days':u'天','week':u'週','weeks':u'週','year':u'年','years':u'年','month':u'月','months':u'月'} tempTime = pretty_timedelta(ticket.time_created) numAndUnit = tempTime.split(' ') numAndUnit[1] = ZhUnit.get(numAndUnit[1],numAndUnit[1]) ZhCTime = ' '.join(numAndUnit) req.hdf['ticket.opened_delta'] = ZhCTime tempTime = pretty_timedelta(ticket.time_changed) numAndUnit = tempTime.split(' ') numAndUnit[1] = ZhUnit.get(numAndUnit[1],numAndUnit[1]) ZhATime = ' '.join(numAndUnit) if ticket.time_changed != ticket.time_created: req.hdf['ticket'] = { 'lastmod': format_datetime(ticket.time_changed), 'lastmod_delta': ZhATime } # -- Ticket Change History def quote_original(author, original, link): if not 'comment' in req.args: # i.e. the comment was not yet edited req.hdf['ticket.comment'] = '\n'.join( ['Replying to [%s %s]:' % (link, author)] + ['> %s' % line for line in original.splitlines()] + ['']) if replyto == 'description': quote_original(ticket['reporter'], ticket['description'], 'ticket:%d' % ticket.id) replies = {} changes = [] cnum = 0 description_lastmod = description_author = None for change in self.grouped_changelog_entries(ticket, db): changes.append(change) # wikify comment comment = '' if 'comment' in change: comment = change['comment'] change['comment'] = wiki_to_html(comment, self.env, req, db) if change['permanent']: cnum = change['cnum'] # keep track of replies threading if 'replyto' in change: replies.setdefault(change['replyto'], []).append(cnum) # eventually cite the replied to comment if replyto == str(cnum): quote_original(change['author'], comment, 'comment:%s' % replyto) if 'description' in change['fields']: change['fields']['description'] = '' description_lastmod = change['date'] description_author = change['author'] # 汉化"修改历史部分" tempList = [] for comment_ in changes: newFields_ = {} for key, value in comment_['fields'].iteritems(): newFields_.setdefault(ZhField.get(key.capitalize(),key),value) comment_['fields'] = newFields_ tempList.append(comment_) changes = tempList req.hdf['ticket'] = { 'changes': changes, 'replies': replies, 'cnum': cnum + 1 } if description_lastmod: req.hdf['ticket.description'] = {'lastmod': description_lastmod, 'author': description_author} # -- Ticket Attachments req.hdf['ticket.attachments'] = attachments_to_hdf(self.env, req, db, 'ticket', ticket.id) if req.perm.has_permission('TICKET_APPEND'): req.hdf['ticket.attach_href'] = req.href.attachment('ticket', ticket.id) # Add the possible actions to hdf actions = TicketSystem(self.env).get_available_actions(ticket, req.perm) for action in actions: req.hdf['ticket.actions.' + action] = '1'