有一个带有时间表模块(自制)的odoo系统。 工作原理:工人来了 - 到达时间写在时间表中 - 一切都很好。 但是存在一个问题:负责制作此类记录的员工正在使用不同的时间格式:其中一些使用标准HH:MM(例如10:30),其中一些使用十分之一HH:T(例如10.5,其中意思是相同的10:30甚至10.125(10:08)),所以我不得不做一个转换功能。
工作已完成,但是有效,但我敢打赌,有一种方法可以优化它。至少,它的最后一部分。
@api.one
def time_button (self):
def ftohhmm(a):
if a:
a = re.sub(',' , '.' , a)
if (re.search ('^\-?\d+((,|\.)\d+)?$',a) >= 0):
if float(a) <24:
a = float(a) * 60
minutes = a%60
hours = a/60
if int(round(minutes)) < 10:
return str(int(hours))+":0"+str(int(round(minutes)))
else:
return str(int(hours))+":"+str(int(round(minutes)))
return a
if self.format:
for i in self.ids_string:
i.hours1=ftohhmm(i.hours1)
i.hours2=ftohhmm(i.hours2)
i.hours3=ftohhmm(i.hours3)
i.hours4=ftohhmm(i.hours4)
i.hours5=ftohhmm(i.hours5)
i.hours6=ftohhmm(i.hours6)
i.hours7=ftohhmm(i.hours7)
i.hours8=ftohhmm(i.hours8)
i.hours9=ftohhmm(i.hours9)
i.hours10=ftohhmm(i.hours10)
i.hours11=ftohhmm(i.hours11)
i.hours12=ftohhmm(i.hours12)
i.hours13=ftohhmm(i.hours13)
i.hours14=ftohhmm(i.hours14)
i.hours15=ftohhmm(i.hours15)
i.hours16=ftohhmm(i.hours16)
i.hours17=ftohhmm(i.hours17)
i.hours18=ftohhmm(i.hours18)
i.hours19=ftohhmm(i.hours19)
i.hours20=ftohhmm(i.hours20)
i.hours21=ftohhmm(i.hours21)
i.hours22=ftohhmm(i.hours22)
i.hours23=ftohhmm(i.hours23)
i.hours24=ftohhmm(i.hours24)
i.hours25=ftohhmm(i.hours25)
i.hours26=ftohhmm(i.hours26)
i.hours27=ftohhmm(i.hours27)
i.hours28=ftohhmm(i.hours28)
i.hours29=ftohhmm(i.hours29)
i.hours30=ftohhmm(i.hours30)
i.hours31=ftohhmm(i.hours31)
小时1-31是每天的列。行是给工人的。交叉口的单元格包含工人来的准确时间。
任何有关如何优化它的建议都会很棒。谢谢!
答案 0 :(得分:1)
for i in self.ids_string:
for j in range(1, 32):
if hasattr(i, "hours%s" % j):
a = getattr(i, "hours%s" % j)
setattr(i, "hours%s" %j, ftohhmm(a))
也许这个答案是你的需要。