Мне дали задание написать плагин для Trac.В нем должны быть представлены данные об исчерпании запасов и оценочные данные, хранящиеся в системе отслеживания ошибок.Пользователь пишет свой запрос как wikimacro и получает ссылку / кнопку для загрузки выгрузки в виде csv-файла, вывод в виде диаграммы также запланирован, но имеет более низкий приоритет.
У меня есть рабочийРешение для обработки данных, но я остался со следующей проблемой.
Мой вопрос
Как я могу предоставить ссылку на скачивание / - на вики-странице для файла, который динамически создается по запросу пользователя?
Я видел несколько попыток отправить файлы в самом источнике trac и других плагинах, но так как я новичок в веб-программировании, это не очень помогает.
Обновление1 Я пытался решить проблему так, как предложил Феликс, что открыло для меня новую проблему.Этот (глупый) пример должен продемонстрировать мою проблему.Мой макрос генерирует следующий URL и добавляет его в качестве ссылки на вики-страницу.
//http://servername.com/projectname/wiki/page_name?teddy=bear
Но RequestHandler не реагирует, даже если условие возвращает true. Редактировать: Этот фрагмент кода теперь показывает рабочую версию для примера.
Новый URL:
#example url
#http://127.0.0.1:8000/prove/files/new
class CustomRequestHandlerModule(Component):
implements(IRequestHandler)
def match_request(self,req):
#old, not working
#return "teddy=bear"== str(req.path_info).split('?')[1]
#new
accept="/files/new"== str(req.path_info)
return accept
def process_request(self,req):
csvfile = self.create_csv()
req.send_response(200)
req.send_header('Content-Type', 'text/csv')
req.send_header('Content-length', len(csvfile))
req.send_header('Content-Disposition','filename=lala.csv')
req.end_headers()
req.write(csvfile)
raise RequestDone
Update2 Вставка loggingstatements показывает, что match_request никогда не вызывается.
Что я делаю не так?(Да, create_csv () уже существует)
Обновление 3 Спасибо за помощь =)