Конфигурируемый пользователем скрипт Python через веб-страницу
Я написал функцию Python, которая ежедневно получает финансовые данные из нашей БД Oracle и каждое утро отправляет хороший отчет по электронной почте на ряд адресов электронной почты.
Чтобы настроить эти отчеты для каждого пользователя, у меня есть простой скрипт, который его настраивает, и я запускаю этот скрипт как задание cron каждый день.
Строка в этом сценарии выглядит следующим образом: budgetts.sendit('abc02','user@email.com',0,0,0,0)
Эта строка запускает все, что нужно "пользователю", чтобы получить свою электронную почту о проекте acb02. Есть около 100 таких линий, и растет с каждым днем.
Я жертва моего собственного успеха. Я получаю постоянные запросы от десятков людей на администрирование этого скрипта. Их установка их собственного экземпляра VM/Python также не будет работать.
Моя цель: веб-страница, которую пользователь может аутентифицировать на нашем LPAD-сервере, и настроить свои собственные отчеты для запуска с использованием моей функции Python.
Мой вопрос: что вы рекомендуете в качестве базовой архитектуры для установки чего-то подобного? Даже создание веб-формы для добавления строк в мой сценарий было бы началом, но это кажется рискованным.
Полное раскрытие: я разработчик Python-самоучка, который выполняет обработку сигналов в качестве моей основной работы, поэтому у меня будет курс обучения, но если кто-то укажет мне правильное направление, я, как правило, могу это сделать.
2 ответа
Я рекомендую использовать фреймворк, такой как Django ( https://www.djangoproject.com/) или Pylons ( http://www.pylonsproject.org/). Что-то, что сокращает время настройки и выполняет все настройки для вас. Django имеет обширную поддержку для интеграции с другими сервисами, такими как LDAP ( http://pythonhosted.org/django-auth-ldap/). Благодаря встроенному управлению пользователями, административным представлениям, построению форм на основе моделей, Django звучит так, будто охватывает все, что вы ищете.
Существует множество ресурсов для самостоятельного изучения Django, таких как Книга Django ( http://www.djangobook.com/en/2.0/index.html) и документация по проекту Django ( https://docs.djangoproject.com/en/1.5/). Похоже, вы довольно хорошо обучаете себя, поэтому этих ресурсов должно быть более чем достаточно. Это те ресурсы, которые я использовал, чтобы начать работать над проектами, очень похожими на ваши. Совет, хотя, не пытайтесь создать свое приложение во время обучения. Просто следуйте инструкциям и создайте то, что они хотят, чтобы вы строили. Понять шаблоны и архитектуру. Затем примените шаблоны к вашему собственному приложению. Попытка создать свое приложение при переводе документации и учебных пособий может привести к путанице и, в конечном итоге, стать препятствием. Удачи!
Скорее всего, вы получите много разных мнений о том, как это реализовать, но вот один из возможных способов.
Используйте текстовый файл, базу данных SQLite и т. Д. Для управления списком адресов электронной почты и "опциями" - SQLite, вероятно, будет лучше, если люди планируют управлять своими предпочтениями (т. Е. Отказаться от подписки на рабочие письма, изменить свои предпочтения и т. Д.)
Подумайте об использовании фреймворка (например, Django) для реализации веб-интерфейса. Это ORM делает соединение с базой данных довольно простым, а также отнимает значительную часть тяжелой работы по разработке.
Разрешить аутентификацию на вашем веб-сервере (например, apache и т. Д.), Который вы настраиваете так, чтобы вход в систему разрешался только тем, кто прошел аутентификацию через LDAP Это берет большую часть работы по аутентификации LDAP из ваших рук и удерживает ее на веб-сервере. Ваше веб-приложение может получить доступ к этой информации через переменные среды.
Наконец, измените существующий скрипт, чтобы он рисовал из базы данных / файла, который вы создаете, чтобы сохранить эти настройки...
Места для поиска:
https://www.djangoproject.com/ <- Django Project
http://docs.python.org/2/library/sqlite3.html <- Доступ к SQLITE через python
http://httpd.apache.org/docs/2.2/mod/mod_ldap.html <- Mod_ldap с apache (apache для работы с LDAP