2013-09-25 23 views
0

我想成爲一個不可見的按鈕,當前的日期是不一樣的字段的日期,我的意思是我需要顯示按鈕只有當前日期將與字段的日期相同。OpenERP7 - 隱藏按鈕根據當前日期

我試圖使用要做到這一點在XML中context_today(),但我不能這樣做,我的隱藏式按鍵的語法是:

attrs = "{'invisible': [('f_inicio', '!=', ((context_today()). strftime ('%% Y-%% m-%% d')))]}" 

該錯誤消息我得到的是「NameError:名稱'context_today'未定義「。

我也試着用下面的代碼:

attrs = "{'invisible': [('f_inicio', '!=', __import__ ('time'). strftime ('%% Y-%% m-%% d'))]}" 

與後者不給我錯誤,但不這樣做需要什麼,隱藏按鈕時f_inicio不等於當前日期。

如果我可以幫忙是不勝感激,

:在「f_inicio」的類型是「日期時間」和我想隱藏此放置在的部分「標題」按鈕的視圖。

我已經看到@Arya(OpenERP How to make a button invisible when datetime field != date today)的回覆,但我還沒有工作。

回答

1

由於f_inicio是一個日期時間,你只需要比較日期,最簡單的將是一個布爾功能字段。我從火車上的記憶中輸入這些信息,因此提前對任何錯誤表示歉意。

從openerp.tools進口DEFAULT_SERVER_DATE_FORMAT,DEFAULT_SERVER_DATETIME_FORMAT(不記得這個eactly - 檢查)

_columns = {'f_inicio_today': fields.function(_is_f_inicio_today, method = True, type = 'boolean', readonly = True, string = 'Is f_inicio today') 

def _is_f_inicio_today(self, cr, uid, ids, field, args, context = None): 
    res = {} 
    for item in self.browse(cr, uid, ids, context = contect): 
     if datetime.strptime(item.f_inicio, DEFAULT_SERVER_DATETIME_FORMAT).strftime(DEFAULT_SERVER_DATE_FORMAT) = fields.date.today(): 
     res[item.id] = True 
     else: 
     res[item.id] = False 

    return res 
表單中的

然後在以前的答案

<field name="f_inicio_today" invisible="1" /> 

attrs = "{'invisible': [('f_inicio_today', '=', True)]}" 

另一點要注意;如果f_inicio字段可以在表單上更改,則需要添加更改並在結果中返回功能字段的新計算值。從on_change返回這些值並將新值用於重新設置attrs是完全可以的。

+0

感謝您的回覆,我已經提出了您建議的方法,並且它的工作原理非常奇怪,當您不爲我工作代碼時,使按鈕不可見,請使用attrs =「{'invisible': [('1','=',1)]}「,也沒有隱藏,如果運行良好,我必須使用按鈕組項中的內容並以這種方式隱藏組。瘋狂的事情 –

0

在PY文件,

可以創建一個名爲 「CURRENT_DATE」 字段作爲日期時間和提供_defaultscurrent_date

_defaults={ 
     'current_date': time.strftime("%Y-%m-%d %H:%M:%S") 
} 

ATTRS =「{ '看不見的':[('f_inicio 」, '=',CURRENT_DATE)]}」

注:

此外,您只能比較兩個日期時間字段或日期字段。如果將日期時間與日期進行比較,則條件始終爲false。

datetime: "2013-09-26 05:07:18" 
date:"2013-09-26 00:00:00"