Edgewall Software

Ticket #8165: csv2.patch

File csv2.patch, 3.1 KB (added by Thijs Triemstra <lists@…>, 20 months ago)

render description as plain text

  • trac/ticket/report.py

     
    3939                            add_stylesheet, add_warning, \ 
    4040                            INavigationContributor, Chrome 
    4141from trac.wiki import IWikiSyntaxProvider, WikiParser 
     42from trac.wiki.formatter import format_to_plaintext 
    4243 
    4344 
    4445def cell_value(v): 
     
    726727        def iso_datetime(dt): 
    727728            return format_datetime(from_utimestamp(dt), 'iso8601') 
    728729 
     730        def plaintext(s): 
     731            return format_to_plaintext(self.env, Context.from_request(req), s) 
     732 
    729733        col_conversions = { 
     734            'description': plaintext, 
    730735            'time': iso_time, 
    731736            'datetime': iso_datetime, 
    732737            'changetime': iso_datetime, 
  • trac/ticket/query.py

     
    4444 
    4545from trac.wiki.api import IWikiSyntaxProvider 
    4646from trac.wiki.macros import WikiMacroBase # TODO: should be moved in .api 
     47from trac.wiki.formatter import format_to_plaintext 
    4748 
     49 
    4850class QuerySyntaxError(TracError): 
    4951    """Exception raised when a ticket query cannot be parsed from a string.""" 
    5052 
     
    10991101    def export_csv(self, req, query, sep=',', mimetype='text/plain'): 
    11001102        content = StringIO() 
    11011103        cols = query.get_columns() 
     1104 
     1105        if 'description' in query.rows: 
     1106            query.cols.insert(2, 'description') 
     1107 
    11021108        writer = csv.writer(content, delimiter=sep, quoting=csv.QUOTE_MINIMAL) 
    11031109        writer.writerow([unicode(c).encode('utf-8') for c in cols]) 
    11041110 
     
    11151121                                                               value) 
    11161122                    elif col in query.time_fields: 
    11171123                        value = format_datetime(value, tzinfo=req.tz) 
     1124                    elif col == 'description': 
     1125                        value = format_to_plaintext(self.env, context, value) 
    11181126                    values.append(unicode(value).encode('utf-8')) 
    11191127                writer.writerow(values) 
    11201128        return (content.getvalue(), '%s;charset=utf-8' % mimetype) 
  • trac/wiki/formatter.py

     
    4242 
    4343__all__ = ['wiki_to_html', 'wiki_to_oneliner', 'wiki_to_outline', 
    4444           'Formatter', 'format_to', 'format_to_html', 'format_to_oneliner', 
    45            'extract_link'] 
     45           'format_to_plaintext', 'extract_link'] 
    4646 
    4747 
    4848def system_message(msg, text=None): 
     
    15031503        shorten = context.get_hint('shorten_lines', False) 
    15041504    return InlineHtmlFormatter(env, context, wikidom).generate(shorten) 
    15051505 
     1506def format_to_plaintext(env, context, wikidom): 
     1507    html = format_to_html(env, context, wikidom) 
     1508    return plaintext(html)[1:-2] 
     1509 
    15061510def extract_link(env, context, wikidom): 
    15071511    if not wikidom: 
    15081512        return Markup()