"""Converts `application/x-trac-ticket` data to `application/vnd.ms-excel`."""

from trac.core import *
from trac.mimeview.api import IContentConverter
from trac.ticket.web_ui import TicketModule
from trac.ticket.query import QueryModule

EXCEL_MIMETYPE = 'application/vnd.ms-excel'

class TicketsToExcelConverter(Component):
    implements (IContentConverter)

    # IContentConverter methods 
    def get_supported_conversions(self): 
        yield ('exceltsv', 'Excel', 'csv',
               'trac.ticket.model.Ticket', EXCEL_MIMETYPE, 8) 
        yield ('exceltsv', 'Excel', 'csv',
               'trac.ticket.query', EXCEL_MIMETYPE, 8) 
	 
    def convert_content(self, req, mimetype, content, key, filename=None,
                        url=None):
        output = '%s; name=%s.xls' % (EXCEL_MIMETYPE, filename)
        if mimetype == 'trac.ticket.model.Ticket': 
            return TicketModule(self.env).export_csv(content, sep='\t',
                                                     mimetype=output) 
        elif mimetype == 'trac.ticket.query': 
            return QueryModule(self.env).export_csv(content, sep='\t',
                                                    mimetype=output) 


