1. Jun Omae
  2. traclightning-plugins

Commits

Takashi Okamoto  committed 159317b Draft

import from base TracLightning 3.0.6.

  • Participants
  • Branches default

Comments (0)

Files changed (1296)

File ExcelReportExport/excelreportexport/__init__.py

Empty file added.

File ExcelReportExport/excelreportexport/custumPyExcelerator.py

View file
+# -*- coding: utf-8 -*-
+
+from pyExcelerator import *
+
+# 標準のpyExceleratorでは作成したExcelデータの保存はファイル出力しかできない。
+# httpresponseに直接データを流し込めるようにするためのカスタマイズクラス。
+
+class XlsDoc(CompoundDoc.XlsDoc):
+    def getdata(self, stream):
+        padding = '\x00' * (0x1000 - (len(stream) % 0x1000))
+        self.book_stream_len = len(stream) + len(padding)
+        self.__build_directory()
+        self.__build_sat()
+        self.__build_header()
+        return '%s%s%s%s%s%s%s' % (
+            self.header,
+            self.packed_MSAT_1st,
+            stream,
+            padding,
+            self.packed_MSAT_2nd,
+            self.packed_SAT,
+            self.dir_stream)
+
+class CustomWorkbook(Workbook):
+    def getdata(self):
+        doc = XlsDoc()
+        return doc.getdata(self.get_biff_data())
+
+

File ExcelReportExport/excelreportexport/excelreportexport.py

View file
+# -*- coding: utf-8 -*-
+
+from trac.core import *
+from trac.mimeview.api import IContentConverter, Context
+from trac.ticket.api import TicketSystem
+import pyExcelerator
+from trac.resource import Resource
+from custumPyExcelerator import *
+import re
+from trac.ticket.model import Ticket
+from trac.util.datefmt import to_timestamp
+from datetime import datetime
+
+class ExcelReportExport(Component):
+    u"""カスタムレポートの抽出結果をExcel形式で出力するプラグイン。
+    なお、カスタムレポートの抽出結果はIDのリストのみを使用し、
+    項目は無条件で出力します(不要な項目はExcelのファイル側で削除してください)。
+    なお、コメントが記入されている場合は、右方向へ追記していきます。
+    (256列を超えた場合の挙動は確認していません)
+    
+    Excelファイルの作成に、pyExceleratorを使用しているので、あらかじめインストールしておいてください。
+    http://sourceforge.net/projects/pyexcelerator
+    今回は、Ver0.6.3aで動作確認しています(2005年秋以降更新されていない?)
+    zipファイルをダウンロードして展開し、普通に python setup.py install でインストールできます。
+    """
+    implements(IContentConverter)
+
+    # ステータス毎の背景色
+    statuscolor = {}
+
+    # IContentConverter methods
+    def get_supported_conversions(self):
+        # IContentConverterを使用すると、いい感じでダウンロードリンクを追加できる。
+        # 第1引数はformatで第2引数が画面のテキスト、第3引数が拡張子、
+        # 第4の引数は対象となる機能、第5引数がmime-type。最後の引数は・・・?
+        yield ('excel', 'Excel', 'xls',
+               'trac.ticket.Query', 'application/vnd.ms-excel ', 8)
+
+    def convert_content(self, req, mimetype, query, key):
+        if key == 'excel':
+            return self.export_excel(req, query)
+
+    # 背景色の設定を読み込む
+    def load_bgcolor(self, ticketfields):
+        # 定義されているステータス一覧
+        statuslist = []
+        for field in ticketfields:
+            if field['name'] == 'status':
+                statuslist = field['options']
+
+        for status in statuslist: