Version 9 (modified by srl100@…, 6 years ago) (diff)


SEAT plugin: SEarch wiki and ticket ATtachments


This plugin allows text integral search in wiki and ticket attachments (.pdf, .doc,.ppt,...). The SEAT plugin has the following features:

  • new Attachments source to the search page
  • an excerpt of the matching documents is presented in the result page
  • any format is supported as long as there is a command line tool for plain text conversion (filter command)

Bugs/Feature Requests

Existing bugs and feature requests for SearchAttachmentsPlugin are here. If you have any issues, create a new ticket.

Download and Source

Download the zipped source, check out using Subversion, or browse the source with Trac.

How to install?

  • Install the plugin
        python bdist_egg
        cp dist/TracSearchAttachmentsPlugin-0.1-py2.4.egg /path/to/your/env/plugins/
  • Trac 10.x and 11.x source code must be manually modified for SEAT plugin to work. The file to modify is, on a Linux Fedora system, it is located in /usr/lib/python2.4/site-packages/trac

Comment: This is already done for Trac 11.4

162     def insert(self, filename, fileobj, size, t=None, db=None):
184         try:
185             # Note: `path` is an unicode string because `self.path` was one.
186             # As it contains only quoted chars and numbers, we can use `ascii`
187             basename = os.path.basename(path).encode('ascii')
188             filename = unicode_unquote(basename)
190             cursor = db.cursor()
191             cursor.execute("INSERT INTO attachment "
192                            "VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",
193                            (self.parent_type, self.parent_id, filename,
194                             self.size, self.time, self.description,,
195                             self.ipnr))
196             shutil.copyfileobj(fileobj, targetfile)
197             self.filename = filename
199   'New attachment: %s by %s', self.title,
202             if handle_ta:
203                 db.commit()
205             targetfile.close() # << Line to add for SEAT plugin
207             for listener in AttachmentModule(self.env).change_listeners:
208                 listener.attachment_added(self)
209         finally:
210             targetfile.close()

  • Use the trac-seat utility to index existing attachments:
        cp YOUR_SOURCE_DIR/searchattachmentsplugin/0.10/trac-seat /path/to/your/env/index
        cd /path/to/your/env/index
        chmod +x trac-seat
        ./trac-seat /path/to/your/env meta
        ./trac-seat /path/to/your/env index -c
        cd ..
        chown -R apache:apache /path/to.your/env/index

Comment: On Trac 11.4 I think that should be /path/to/your/env/attachments/index

  • Configure trac.ini
       searchattachments.* = enabled
       # This is the path to the swish-e command on your system
       swish = /usr/local/bin/swish-e
       seat  = /path/to/your/env/trac-seat
       # The first %s is the absolute path of the input file.
       # The second %s is the absolute path of the text file generated by the command.
       filter.doc = /usr/local/bin/catdoc -b "%s" > "%s"
       filter.ppt = /usr/local/bin/catppt "%s" > "%s"
       filter.pdf = /usr/bin/pdftotext "%s" "%s"

Comment: I have had better success omitting the -b flag to catdoc

There is no need to declare a filter command for .txt or .text. Text files are handled natively. To index a new non-text format, just add a filter.* entry using the appropriate command line tool for this format.

   filter.EXTENSION = path_to_EXTENSION_to_text_command -infile "%s" -outfile "%s"
  • restart the trac server


I downloaded the plugin, but it does not include a version for trac 0.11. There are also reports on the web that it in fact does not work with trac 0.11. Does anyone know of an update?

Recent Changes

[14470] by rjollos on 2015-02-27 22:50:21
Branching for Trac 1.0.
[13178] by rjollos on 2013-05-20 09:40:01
Fixes #3064: Fixed incorrect import.
[13177] by rjollos on 2013-05-20 09:38:17
Fixes #1857: Fixed typo of section name in README. Thanks to sassyn@… for spotting this.


Author: deltroo