| Line | |
|---|
| 1 | from trac.core import * |
|---|
| 2 | from trac.web.chrome import ITemplateProvider |
|---|
| 3 | from trac.web.api import IRequestHandler |
|---|
| 4 | from trac.wiki.model import WikiPage |
|---|
| 5 | |
|---|
| 6 | __all__ = ['RobotsTxtModule'] |
|---|
| 7 | |
|---|
| 8 | class RobotsTxtModule(Component): |
|---|
| 9 | """Serve a robots.txt file from Trac.""" |
|---|
| 10 | |
|---|
| 11 | implements(ITemplateProvider, IRequestHandler) |
|---|
| 12 | |
|---|
| 13 | # IRequestHandler methods |
|---|
| 14 | def match_request(self, req): |
|---|
| 15 | return req.path_info == '/robots.txt' |
|---|
| 16 | |
|---|
| 17 | def process_request(self, req): |
|---|
| 18 | page = WikiPage(self.env, 'RobotsTxt') |
|---|
| 19 | data = '' |
|---|
| 20 | if page.exists: |
|---|
| 21 | data = page.text |
|---|
| 22 | req.hdf['robotstxt.data'] = data |
|---|
| 23 | return 'robotstxt.cs', 'text/plain' |
|---|
| 24 | |
|---|
| 25 | |
|---|
| 26 | # ITemplateProvider methods |
|---|
| 27 | def get_templates_dirs(self): |
|---|
| 28 | from pkg_resources import resource_filename |
|---|
| 29 | return [resource_filename(__name__, 'templates')] |
|---|
| 30 | |
|---|
| 31 | def get_htdocs_dirs(self): |
|---|
| 32 | from pkg_resources import resource_filename |
|---|
| 33 | #return [('robotstxt', resource_filename(__name__, 'htdocs'))] |
|---|
| 34 | return [] |
|---|
Note: See
TracBrowser
for help on using the repository browser.