更新表格字段

时间:2015-09-07 05:56:52

标签: python python-2.7 odoo odoo-8

有一个带有时间表模块(自制)的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是每天的列。行是给工人的。交叉口的单元格包含工人来的准确时间。

任何有关如何优化它的建议都会很棒。谢谢!

1 个答案:

答案 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))

也许这个答案是你的需要。