def populate_hdf(hdf, env, db, req): sql_to_hdf(db, "SELECT name FROM enum WHERE type='priority' " "ORDER BY value", hdf, 'enums.priority') sql_to_hdf(db, "SELECT name FROM enum WHERE type='severity' " "ORDER BY value", hdf, 'enums.severity') htdocs_location = env.get_config('trac', 'htdocs_location') if htdocs_location[-1] != '/': htdocs_location += '/' hdf.setValue('htdocs_location', htdocs_location) hdf.setValue('project.name', env.get_config('project', 'name')) # Kludges for RSS, etc hdf.setValue('project.name.encoded', util.escape(env.get_config('project', 'name'))) hdf.setValue('project.descr', env.get_config('project', 'descr')) hdf.setValue( 'project.footer', env.get_config( 'project', 'footer', ' Visit the Trac open source project at<br />' '<a href="http://trac.edgewall.com/">http://trac.edgewall.com/</a>' )) hdf.setValue('project.url', env.get_config('project', 'url')) hdf.setValue('trac.href.wiki', env.href.wiki()) hdf.setValue('trac.href.browser', env.href.browser('/')) hdf.setValue('trac.href.timeline', env.href.timeline()) hdf.setValue('trac.href.roadmap', env.href.roadmap()) hdf.setValue('trac.href.report', env.href.report()) hdf.setValue('trac.href.query', env.href.query()) hdf.setValue('trac.href.newticket', env.href.newticket()) hdf.setValue('trac.href.search', env.href.search()) hdf.setValue('trac.href.about', env.href.about()) hdf.setValue('trac.href.about_config', env.href.about('config')) hdf.setValue('trac.href.login', env.href.login()) hdf.setValue('trac.href.logout', env.href.logout()) hdf.setValue('trac.href.settings', env.href.settings()) hdf.setValue('trac.href.homepage', 'http://trac.edgewall.com/') hdf.setValue('trac.version', __version__) hdf.setValue('trac.time', time.strftime('%c', time.localtime())) hdf.setValue('trac.time.gmt', time.strftime('%a, %d %b %Y %H:%M:%S GMT', time.gmtime())) hdf.setValue('header_logo.link', env.get_config('header_logo', 'link')) hdf.setValue('header_logo.alt', env.get_config('header_logo', 'alt')) src = env.get_config('header_logo', 'src') src_abs = re.match(r'https?://', src) != None if not src[0] == '/' and not src_abs: src = htdocs_location + src hdf.setValue('header_logo.src', src) hdf.setValue('header_logo.src_abs', str(src_abs)) hdf.setValue('header_logo.width', env.get_config('header_logo', 'width')) hdf.setValue('header_logo.height', env.get_config('header_logo', 'height')) hdf.setValue('trac.href.logout', env.href.logout()) if req: hdf.setValue('cgi_location', req.cgi_location) hdf.setValue('trac.authname', util.escape(req.authname)) templates_dir = env.get_config('trac', 'templates_dir') hdf.setValue('hdf.loadpaths.0', env.get_templates_dir()) hdf.setValue('hdf.loadpaths.1', templates_dir)
def render(self): self.perm.assert_permission(perm.TICKET_CREATE) if self.args.has_key('create'): self.create_ticket() ticket = Ticket() ticket.populate(self.args) ticket.setdefault('component', self.env.get_config('ticket', 'default_component')) ticket.setdefault('milestone', self.env.get_config('ticket', 'default_milestone')) ticket.setdefault('priority', self.env.get_config('ticket', 'default_priority')) ticket.setdefault('severity', self.env.get_config('ticket', 'default_severity')) ticket.setdefault('version', self.env.get_config('ticket', 'default_version')) ticket.setdefault('reporter', util.get_reporter_id(self.req)) if ticket.has_key('description'): self.req.hdf.setValue( 'newticket.description_preview', wiki_to_html(ticket['description'], self.req.hdf, self.env, self.db)) self.req.hdf.setValue('title', 'New Ticket') evals = util.mydict( zip(ticket.keys(), map(lambda x: util.escape(x), ticket.values()))) util.add_to_hdf(evals, self.req.hdf, 'newticket') util.sql_to_hdf(self.db, 'SELECT name FROM component ORDER BY name', self.req.hdf, 'newticket.components') util.sql_to_hdf(self.db, 'SELECT name FROM milestone ORDER BY name', self.req.hdf, 'newticket.milestones') util.sql_to_hdf(self.db, 'SELECT name FROM version ORDER BY name', self.req.hdf, 'newticket.versions') insert_custom_fields(self.env, self.req.hdf, ticket)
def insert_ticket_data(self, hdf, id, ticket, reporter_id): """Insert ticket data into the hdf""" evals = util.mydict( zip(ticket.keys(), map(lambda x: util.escape(x), ticket.values()))) util.add_to_hdf(evals, self.req.hdf, 'ticket') util.sql_to_hdf(self.db, 'SELECT name FROM component ORDER BY name', self.req.hdf, 'ticket.components') util.sql_to_hdf(self.db, 'SELECT name FROM milestone ORDER BY name', self.req.hdf, 'ticket.milestones') util.sql_to_hdf(self.db, 'SELECT name FROM version ORDER BY name', self.req.hdf, 'ticket.versions') util.sql_to_hdf( self.db, "SELECT name FROM enum WHERE type='resolution'" " ORDER BY value", self.req.hdf, 'enums.resolution') util.hdf_add_if_missing(self.req.hdf, 'ticket.components', ticket['component']) util.hdf_add_if_missing(self.req.hdf, 'ticket.milestones', ticket['milestone']) util.hdf_add_if_missing(self.req.hdf, 'ticket.versions', ticket['version']) util.hdf_add_if_missing(self.req.hdf, 'enums.priority', ticket['priority']) util.hdf_add_if_missing(self.req.hdf, 'enums.severity', ticket['severity']) util.hdf_add_if_missing(self.req.hdf, 'enums.resolution', 'fixed') self.req.hdf.setValue('ticket.reporter_id', util.escape(reporter_id)) self.req.hdf.setValue('title', '#%d (%s)' % (id, ticket['summary'])) self.req.hdf.setValue( 'ticket.description.formatted', wiki_to_html(ticket['description'], self.req.hdf, self.env, self.db)) self.req.hdf.setValue( 'ticket.opened', time.strftime('%c', time.localtime(int(ticket['time'])))) changelog = ticket.get_changelog(self.db) curr_author = None curr_date = 0 comment = None idx = 0 for date, author, field, old, new in changelog: hdf.setValue('ticket.changes.%d.date' % idx, time.strftime('%c', time.localtime(date))) hdf.setValue('ticket.changes.%d.time' % idx, str(date)) hdf.setValue('ticket.changes.%d.author' % idx, util.escape(author)) hdf.setValue('ticket.changes.%d.field' % idx, field) hdf.setValue('ticket.changes.%d.old' % idx, util.escape(old)) if field == 'comment': hdf.setValue( 'ticket.changes.%d.new' % idx, wiki_to_html(new, self.req.hdf, self.env, self.db)) else: hdf.setValue('ticket.changes.%d.new' % idx, util.escape(new)) idx = idx + 1 insert_custom_fields(self.env, hdf, ticket) # List attached files self.env.get_attachments_hdf(self.db, 'ticket', str(id), self.req.hdf, 'ticket.attachments')