python - Cron 函数缺少参数

标签 python xml cron odoo openerp-8

我正在尝试创建一个 cron 函数来更改学生的状态,但它给了我一个错误,即我的函数接受 5 个参数,但只给出了 4 个参数。

这是我的类,其中包含函数 def get_age_comp:

from openerp.osv import osv, fields
from datetime import date
from dateutil.relativedelta import relativedelta


class fci_student(osv.osv):
    _name = 'fci.student'
    _columns = {
        'photo': fields.binary(string='Photo'),
        'name': fields.char(size=128, string='First Name', required=True),
        'middle_name': fields.char(size=128, string='Middle Name', required=True),
        'last_name': fields.char(size=128, string='Last Name', required=True),
        'status': fields.selection([('under_Age', 'Under Age'), ('get_card', 'Get Card'), ('got_card', 'Got Card')],
                                   string='Military Status'
                                   , default='under_Age'),
        # basic details
        'user_id': fields.many2one('res.users', 'User'),
        "birth_date": fields.date(string='Birth Date', required=True),
        'gender': fields.selection([('m', 'Male'), ('f', 'Female'), ('o', 'Other')], string='Gender', required=True),
        'title': fields.selection([('mr', 'Mr.'), ('ms', 'Mrs.')], string='Title'),
        'Paid': fields.boolean('Paid Student'),
        'nationality': fields.many2one('res.country', string='Nationality'),
        'id_number': fields.char(size=64, string='ID Card Number', required=True),
        'phone': fields.char(string='Phone Number', size=256, required=True),
        'email_address': fields.char(string='E-mail', size=256, required=True),
        'pay_amount': fields.char(size=64, string='Payment', required=True),
        # Edictional details
        'standard_id': fields.many2one('fci.standard', string='Standard', required=True),
        'group_id': fields.many2one('fci.standard.groups',string='Groups(s)'),

        'terms_id': fields.many2one('fci.terms', string='Term'),
        'sit_number': fields.integer(size=128, string='Sit Number',required=True),
        'subject_id':fields.many2many('fci.subject','student_sub_rel','sub_student_rel','sub_stu_id','Subjects'),
        # Parent details
        'parent_name': fields.char(size=128, string='Parent First Name'),
        'parent_middle_name': fields.char(size=128, string='Parent First Name'),
        'parent_last_name': fields.char(size=128, string='Parent First Name'),
        'parent_phone': fields.integer(size=128, string='Parent Number'),
        'parent_ids': fields.char(size=128, string='Parent E-mail'),
        # Library details
        'library_card_number': fields.char(size=64, string='Library Card Number'),
        'library_card_type': fields.char(size=64, string='Library Card type'),
        'number_of_books_allow': fields.char(size=64, string='Number of books allow'),
        # Address details
        'street_name': fields.char(size=128, string='Street', required=True),
        'city_name': fields.char(size=128, string='City', required=True),
        'state_name': fields.char(size=128, string='State', required=True),
        'Zip': fields.char(size=128, string='Zip Code'),
        'country': fields.char(size=128, string='country', required=True),
        #Exams
        'exam_res': fields.char(size=128, string='Results'),
        'grade': fields.char(size=128, string='Results'),
        'percentage': fields.char(size=128, string='Results'),

    }

    #the Cron function
    def get_age_comp(self, cr, uid,ids ,context={}):
        student_ids=self.search(cr, uid,[('gender', '=like', 'm'), ('status', '=like', 'under_Age'),
                                         ('birth_date', '<', date.today() - relativedelta(years=20))])
        if student_ids:
            self.write(cr, uid, student_ids, {'status': 'get_card'}, context=context)
        return True

这是我的 xml 来调用它:

<record id="ir_cron_actions" model="ir.cron">
    <field name="name">compare</field>
    <field eval="True" name="active"/>
    <field name="user_id" ref="base.user_root"/>
    <field name="interval_number">1</field>
    <field name="interval_type">minutes</field>
    <field name="numbercall">-1</field>
    <field eval="'fci.student'" name="model"/>
    <field eval="'get_age_comp'" name="function"/>
    <field eval="'()'" name="args"/>
</record>

最佳答案

通过删除 id 来更新您的函数,

def get_age_comp(self, cr, uid ,context={}):
        student_ids=self.search(cr, uid,[('gender', '=like', 'm'), ('status', '=like', 'under_Age'),
                                         ('birth_date', '<', date.today() - relativedelta(years=20))])
        if student_ids:
            self.write(cr, uid, student_ids, {'status': 'get_card'}, context=context)
        return True

关于python - Cron 函数缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29573928/

相关文章:

python - numpy - 列向量乘以行向量的标量乘法

javascript - 处理来自 XMLHttpRequest 的图像(使用 HTML 和 Javascript)

php - 使用 cron 作业为每个用户安排可变时间的每日通知

c++ - 使用 TinyXML 解析 XML 元素

xml - 将字符串解析转换为 XQuery 和 XPath

linux - crontab 无法运行以指定时间间隔获取 url 的 shell 脚本

php - 需要帮助创建 Cron 来每天下载 XML 文件

python - pip install 与 python3 -m pip install

python - 使用 map(int, raw_input().split())

python - Matplotlib:用两个 x 轴绘制 x/y 坐标并进行逆比例缩放