首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[Odoo][v10] IndexError in cron in formview一切都很好

[Odoo][v10] IndexError in cron in formview一切都很好
EN

Stack Overflow用户
提问于 2019-11-05 13:17:37
回答 1查看 42关注 0票数 1

我有两种相同的方法,一种在记录的表单视图中工作,另一种用于cron。

当我在Form视图中运行操作时,一切正常,我可以得到值:

代码语言:javascript
复制
self.deadline = deadlines[0][0] 

但当我跑进箱子时:

代码语言:javascript
复制
emp.debug = deadlines[0][0]

我有IndexError:列表索引超出范围,但emp.debug = deadlines有效

完整代码:

代码语言:javascript
复制
class UserProfile(models.Model):
    _name = 'users.profile'

    user_id = fields.Many2one(related='project_id.user_id', string='User')
    partner_id = fields.Many2one('res.partner', 'Partner')
    follower_id = fields.Many2one('mail.followers', 'Follower')
    project_id = fields.Many2one('project.project', 'Project')
    # project_start_date  #   TODO    max date from deadlines
    project_active = fields.Boolean(related='project_id.active', string='Project active')
    project_percent = fields.Float(related='project_id.x_project_percent', string='Project percent')
    project_money = fields.Float(related='project_id.x_project_money_share')
    # project_money_paid = fields.Char(related='project_id.x_paid_debug')
    project_sale = fields.Many2one(related='project_id.x_sales_id', string='Sales')
    deadline = fields.Many2one('project.project.deadlines', 'Deadline')
    deadline_date = fields.Datetime(related='deadline.end_date')
    debug = fields.Text()

    def get_closest_date(self): # In form view
        find_deadlines = self.env["project.project.deadlines"].search([('project_id', '=', self.project_id.id)])
        deadlines = []
        for record in find_deadlines:
            datetime_without_tz = datetime.datetime.strptime(record.end_date, "%Y-%m-%d %H:%M:%S")
            record_id = record.id
            delta = datetime_without_tz - datetime.datetime.now()
            delta_in_seconds = int(delta.total_seconds())
            if delta_in_seconds > 0:
                deadlines.append((record_id, delta_in_seconds))
        deadlines.sort(key=itemgetter(1))
        self.deadline = deadlines[0][0] # No indexError i can get value
        self.debug = self.env["users.profile"].search([])[0].project_id.id

    @api.model
    def get_closest_date2(self):    # For cron
        emp_details_all = self.env["users.profile"].search([])
        for emp in emp_details_all:
            find_deadlines = self.env["project.project.deadlines"].search([('project_id', '=', emp.project_id.id)])
            deadlines = []
            for record in find_deadlines:
                datetime_without_tz = datetime.datetime.strptime(record.end_date, "%Y-%m-%d %H:%M:%S")
                record_id = record.id
                delta = datetime_without_tz - datetime.datetime.now()
                delta_in_seconds = int(delta.total_seconds())
                if delta_in_seconds > 0:
                    deadlines.append((record_id, delta_in_seconds))
            deadlines.sort(key=itemgetter(1))
            emp.debug = deadlines[0][0]     # IndexError
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-06 08:37:31

cron方法中,您正在遍历所有用户配置文件,因此似乎显示了不同记录的错误消息IndexError

在尝试获取值之前,请检查deadlines方法中的get_closest_date2变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58712165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档