файл конфигурации приложения web2py

Есть ли хороший способ сохранить настройки конфигурации для приложения web2py?

Я написал небольшое приложение, включающее скрипт, который ищет пользовательские атрибуты (имена, адреса электронной почты и т. д.) из LDAP. Наш корпоративный LDAP-сервер требует привязки, прежде чем разрешить поиск сведений о пользователе.

Я хочу поделиться своим приложением из репозитория GitHub, но не раньше, чем удалю учетные данные, используемые для привязки.

Имея опыт работы в .Net, я привык помещать подобную конфигурацию в файл app|web.config. Но это похоже, не одобряется в web2py.

Какой способ Pythonic или web2pyonic сделать это?

def user_info(username):
    #todo: move these parameters to config
    ldap_host = 'example.com'
    ldap_port = 389
    ldap_base_dn = 'OU=DK,DC=example,DC=com'
    ldap_bind_dn = 'CN=<removed>,OU=DK,DC=example,DC=com'
    ldap_bind_pw = '<removed>'
    ldap_attr_uid = 'sAMAccountName'
    ldap_attr_forename = 'givenName'
    ldap_attr_surname = 'sn'
    ldap_attr_display_name = 'displayName'
    ldap_attr_department = 'department'
    ldap_attr_employee_type = 'employeeType'
    ldap_attr_email = 'mail'

    l = ldap.initialize('ldap://%s:%s' % (ldap_host, ldap_port))
    l.simple_bind_s(ldap_bind_dn, ldap_bind_pw)
    r = l.search_s(base=ldap_base_dn,
                   scope=ldap.SCOPE_SUBTREE,
                   filterstr='(%s=%s)' % (ldap_attr_uid, username),
                   attrlist=[
                       ldap_attr_forename,
                       ldap_attr_surname,
                       ldap_attr_email,
                       ldap_attr_display_name,
                       ldap_attr_employee_type,
                       ldap_attr_department])
    if r:
        dn, e = r[0]
        return {
            'dn': dn,
            'forename': e[ldap_attr_forename][0],
            'surname': e[ldap_attr_surname][0],
            'email': e[ldap_attr_email][0],
            'display_name': e[ldap_attr_display_name][0],
            'department': e[ldap_attr_department][0],
            'employee_type': e[ldap_attr_employee_type][0]}
    return None

person grenade    schedule 16.08.2013    source источник
comment
Я не очень хорошо знаком с web2py, но в Django этого можно добиться, имея отдельный неверсионный файл local_settings.py - например. stackoverflow.com/questions/4909958/django-local-settings.   -  person will-hart    schedule 16.08.2013


Ответы (3)


Существуют разные варианты, но один подход — просто поместить настройки в модуль и импортировать. В /yourapp/modules/ldap_settings.py:

ldap_host = 'example.com'
ldap_port = 389
...

И затем в вашей функции:

def user_info(username):
    from ldap_settings import *
    ...
person Anthony    schedule 16.08.2013
comment
Спасибо, похоже, самое практичное решение. В итоге я получил что-то похожее на связанное предложение @will-hart, которое позволяет мне переопределить настройки с помощью неверсионного файла. - person grenade; 19.08.2013

Я считаю, что правильный метод web2py — использовать модуль AppConfig. Взгляните на это в справочном руководстве по web2py здесь: http://web2py.com/books/default/chapter/29/13/deployment-recipes#AppConfig-module

person KEHT    schedule 28.09.2016

Как упомянул Кет, AppConfig - правильный способ сделать это. Файл ini находится в личной папке. Вы можете видеть, что настройки smtp электронной почты по умолчанию уже существуют, которые используются web2py для отправки электронных писем с подтверждением пользователя / электронными письмами о забытом пароле.

Вы можете ввести здесь требуемый ключ-значение, а затем создать объект AppConfig и прочитать требуемый ключ.

person mtk    schedule 30.09.2016