【问题标题】:Openerp 7: workflow stops when given access rightsOpenerp 7:工作流在获得访问权限时停止
【发布时间】:2018-02-28 07:12:40
【问题描述】:

我用简单的工作流程创建了自己的月度评估模型。

  1. 任何员工都可以创建月度评估,保存并提交(草稿--> 确认--> 验证1)。

  2. 提交的评估将由主管确认(验证 1 --> 验证)

我成功创建了该部分,一旦我向普通用户授予访问权限,它就会在提交(确认 --> validate1)按钮处停止工作流。一旦我将普通配置文件连接到管理员配置文件,它就会再次顺利运行。

请帮我解决这个问题,因为我无法想象我做错了什么。

工作流函数

  def evaluation_confirm(self, cr, uid, ids, context=None):
        #self.hr_mnthly_evaluation(cr, uid, ids, context=context)

        eval_id=self.browse(cr, uid, ids[0],context=context).evaluation_id
        eval_state=self.browse(cr, uid, ids[0],context=context).state


        values = {}
        values.update({'state':'confirm'})
        ime_super_obj = self.browse(cr, uid, ids ,context) 

        emp_id = ime_super_obj[0].employee_id.id
        emp_obj=self.pool.get('hr.employee')


        return self.write(cr, uid, ids, {'state': 'confirm'})


    def evaluation_first_validate(self, cr, uid, ids, context=None):

        values = {}
        values.update({'state':'validate1'})
        return self.write(cr, uid, ids, values)

    def evaluation_validate(self, cr, uid, ids, context=None):


        obj_emp = self.pool.get('hr.employee')
        state = self.browse(cr, uid, ids[0],context=context).state
        sup_id=self.browse(cr, uid, ids[0],context=context).parent_id.id

        idss = obj_emp.search(cr, uid, [('user_id', '=', uid)])
        log_user_uid=self.browse(cr, uid, ids[0],context=context).employee_id.id



        if (idss[0]==log_user_uid)and(state!='confirm'):
            raise osv.except_osv(_('Warning!'),_('You are not allow to acknowledge your own appraisals'))


        if idss[0]!=sup_id:
            raise osv.except_osv(_('Warning!'),_('Only Immediate Supervisor , can acknowledge the appraisals !'))


        obj_emp = self.pool.get('hr.employee')

        idss = obj_emp.search(cr, uid, [('user_id', '=', uid)])

        values = {}
        values.update({'state':'validate'})
        return self.write(cr, uid, ids, values)


    def evaluation_refuse(self, cr, uid, ids, context=None):
        print "workflow validate"
        values = {}
        values.update({'state':'refuse'})
        return self.write(cr, uid, ids, values)

授予访问权限

给定记录规则

点击“提交”(确认)按钮后,日志看起来像

工作流程

<?xml version="1.0" ?>
<openerp>
<data>

    <record model="workflow" id="wkf_mnthly_evaluation">
        <field name="name">hr.wkf.mnthly.evaluation</field>
        <field name="osv">hr.mnthly.evaluation</field>
        <field name="on_create">True</field>
    </record>

    <record model="workflow.activity" id="act_draft"> <!-- draft -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="flow_start">True</field>
        <field name="name">draft</field>
    </record>

    <record model="workflow.activity" id="act_confirm"> <!-- confirm -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">confirm</field>
        <field name="kind">function</field>
        <field name="action">evaluation_confirm()</field>
        <field name="split_mode">OR</field>
    </record>

    <record model="workflow.activity" id="act_validate1"> <!-- first_validate -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">validate1</field>
        <field name="kind">function</field>
        <field name="action">evaluation_first_validate()</field>
        <field name="split_mode">OR</field>
    </record>




    <record model="workflow.activity" id="act_validate"> <!-- validate -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">validate</field>
        <field name="kind">function</field>
        <field name="action">evaluation_validate()</field>
    </record>


    <record model="workflow.activity" id="act_refuse"> <!-- refused -->
        <field name="wkf_id" ref="wkf_mnthly_evaluation" />
        <field name="name">refuse</field>
        <field name="flow_stop">True</field>
        <field name="kind">function</field>
        <field name="action">evaluation_refuse()</field>
    </record>

    <!--
        workflow transition
    -->

    <record model="workflow.transition" id="evaluation_draft2confirm"> <!-- 1. draft->confirm (Save BTN - no action) -->
        <field name="act_from" ref="act_draft" />
        <field name="act_to" ref="act_confirm" />
    </record>

    <record model="workflow.transition" id="evaluation_confirm2validate1"> <!-- 2. confirm->validate1 (Request Confirm BTN)-->
        <field name="act_from" ref="act_confirm" />
        <field name="act_to" ref="act_validate1" />
        <field name="signal">validate1</field>

        <field name="group_id" ref="base.group_hr_user"/>
    </record>

    <record model="workflow.transition" id="evaluation_validate12validate2"> <!-- 2. validate1 -> validate2 (Manager Approval BTN)-->
        <field name="act_from" ref="act_validate1" />
        <field name="act_to" ref="act_validate" />
        <field name="signal">validate2</field>
         <field name="condition">True</field>
        <field name="group_id" ref="base.group_hr_user"/>
    </record>






<!-- //////////////////////////////////////////////////////////////////////////////////////////////////////// -->



    <record model="workflow.transition" id="evaluation_confirm2refuse"> <!-- 2. submitted->refused (refuse signal) -->
        <field name="act_from" ref="act_confirm" />
        <field name="act_to" ref="act_refuse" />
        <field name="signal">refuse</field>
        <field name="condition">True</field>
        <field name="group_id" ref="base.group_hr_user"/>
    </record>

    <record model="workflow.transition" id="evaluation_validate12refuse"> <!-- 2. submitted->refused (refuse signal) -->
        <field name="act_from" ref="act_validate1" />
        <field name="act_to" ref="act_refuse" />
        <field name="signal">refuse</field>
        <field name="condition">True</field>
        <field name="group_id" ref="base.group_hr_user"/>
    </record>




</data>
</openerp>

按钮

        <header>
            <button string="Submit" name="validate1" states="confirm" type="workflow" class="oe_highlight"/>
            <button string="Manager Acknowledgement" name="validate2" states="validate1" type="workflow" class="oe_highlight" />

            <button string="Refuse" name="refuse" states="validate1" type="workflow"/>                    
            <field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate1,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
        </header>

【问题讨论】:

  • 能否添加日志输出。
  • 附上@Zety 日志
  • 您是否为confirmvalidate 状态创建了工作流转换?
  • 是的,我做到了。当我将它连接到管理员用户帐户时,它运行良好
  • 请显示工作流代码和相关按钮。

标签: xml python-2.7 odoo openerp-7


【解决方案1】:

将工作流状态更改为validate 需要是base.group_hr_user 的成员。

它在使用管理员用户而不是普通用户登录时有效,因为record rules do not apply to the Administrator user(尽管访问规则可以)。

只需将用户添加到base.group_hr_user 并授予他对模型的访问权限,然后他应该能够将工作流状态从validate1 更改为validate

【讨论】:

  • 我从工作流代码中删除了该部分,但仍然无法正常工作...仍然停留在草稿中
  • 删除工作流和更新模块(您可以卸载并重新安装模块)。
  • 这对你有用吗(在我的服务器中,你的代码正在运行)?
猜你喜欢
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2011-07-08
  • 1970-01-01
相关资源
最近更新 更多