2013-08-16 145 views
1

有沒有一種好方法來存儲web2py應用程序的配置設置?web2py應用程序配置文件

我寫了一個小應用程序,其中包含一個查詢LDAP中的用戶屬性(名稱,電子郵件地址等)的腳本。我們的企業LDAP服務器需要綁定,然後才允許搜索用戶詳細信息。

我想從GitHub存儲庫共享我的應用程序,但在我刪除用於綁定的憑據之前不能共享我的應用程序。

來自.Net背景,我習慣於把這樣的配置放到app.web.config文件中。但是這在web2py中爲seems to be frowned on

什麼是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 
+0

我對web2py並不是非常熟悉,但是在Django中,這可以通過一個單獨的未版本化的local_settings.py文件來實現。 http://stackoverflow.com/questions/4909958/django-local-settings。 –

回答

2

有不同的選擇,但一種方法只是將設置放入模塊並導入。在/yourapp/modules/ldap_settings.py:

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

然後在你的函數:

def user_info(username): 
    from ldap_settings import * 
    ... 
+0

謝謝,看來是最實用的解決方案。我結束了一些類似於@ will-hart's [linked](http://stackoverflow.com/a/14545196/68115)的建議,它允許我用未版本化的文件覆蓋設置。 – grenade

0

由於Keht提到AppConfig是正確的方法。 ini文件存在於私人文件夾中。您可以看到,默認的電子郵件smtp設置已經存在,web2py用於發送用戶驗證電子郵件/忘記密碼電子郵件。

您可以在這裏輸入您所需的鍵值,然後創建AppConfig對象並讀取所需的密鑰。