конфигурационен файл на приложението 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