2016-04-20 23 views
-1

我想在[OSQA>用戶設置]的管理面板中改變一個複選框,但是當我提交機械化的web表單時,它會將TextareaControl的內容與其他字符一起碎化。python mechanize剎車TextareaControl的內容

>>> import mechanize 
>>> mech = mechanize.Browser() 
>>> mech.open('http://example.com/account/signin/') 
>>> mech.select_form(nr=2) 
>>> mech["username"] = 'user' 
>>> mech["password"] = 'pass' 

>>> mech.open('http://example.com/admin/settings/users/') 
>>> for el in mech.forms(): 
...  print el 
... 
<POST http://example.com/admin/settings/users/ multipart/form-data 
    <HiddenControl(csrfmiddlewaretoken=XxWchtzV5oR6ezkObhnk4nzIemTc8aDC) (readonly)> 
    <TextControl(MIN_USERNAME_LENGTH=3)> 
    <TextareaControl(RESERVED_USERNAMES=testing, this)> # << HERE 
    <CheckboxControl(TRUNCATE_LONG_USERNAMES=[*on])> 
    <CheckboxControl(SHOW_USER_ACCEPT_RATE=[*on])> 
    <TextControl(FREEZE_ACCEPT_RATE_FOR=admin)> 
    <SubmitControl(submit=Save) (readonly)>> 

>>> mech.select_form(nr=0) 
>>> print mech["RESERVED_USERNAMES"] 
... testing, this 

所以,當我現在提交甚至不修改任何領域...

>>> results = mech.submit() 

... TextareaControl的內容變成:

>>> mech.open('http://example.com/admin/settings/users/') 
>>> mech.select_form(nr=0) 
>>> print mech["RESERVED_USERNAMES"] 
... t, ,, , e, ,, , s, ,, , t, ,, , i, ,, , n, ,, , g, ,, , ,, ,, , , ,, , t, ,, , h, ,, , i, ,, , s 

回答

0

試圖調試,但機械化沒有運氣。

我結束了在osqa/forum/settings/users.py

REQUIRE_EMAIL_VALIDATION_TO = Setting('REQUIRE_EMAIL_VALIDATION_TO', [], USERS_SET, dict(
label = _("Require email validation to..."), 
help_text = _("Which actions in this site, users without a valid email will be prevented from doing."), 
widget=CheckboxSelectMultiple(attrs={"checked":"checked"}), 
choices=(("ask", _("ask questions")), ("answer", _("provide answers")), ("comment", _("make comments")), ("flag", _("report posts"))), 
required=False, 
)) 

是在安裝前改變OSQA設置選擇那些複選框新增(attrs={"checked":"checked"}),這不是我馬上要到,但解決我的問題。