Hi Friends.
I inherited a model hr.employee to my view and I added a button action,
But it is throwing error to me, that
ValueError: No such external ID currently defined in the system: hr_team.action_button_confirm
I added the button in the hr_team and written the function in the class hr_team.
But this is not working.
Here is my .py file
class hr_performancegoals(osv.osv): _name = "hr.performancegoals" _description = "Performance Goals"
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
if context is None:
context = {}
result = super(hr_performancegoals, self).fields_view_get(cr, uid, view_id,view_type, context, toolbar,submenu)
data = result['arch']
if uid == 1:
L=[]
ldata = data.split("\n")
for var in ldata:
if re.search("str_goals",var):
pass
else:
L.append(var)
reqdata =''.join(L)
result['arch']=reqdata
else:
L=[]
ldata = data.split("\n")
for var in ldata:
if re.search("strategic_goals",var):
pass
else:
L.append(var)
reqdata =''.join(L)
result['arch']=reqdata
return result
def _get_employee_id(self,cr,uid,ids,name,arg,context=None):
if context.get('id',''):
print "Sateesh testing Employee Id",context.get('id','')
res = dict.fromkeys(ids,context.get('id',''))
return res
else:
cr.execute("select id from resource_resource where user_id=%s"%context.get('uid',''))
log_name = cr.dictfetchall()[0]
res = dict.fromkeys(ids,log_name['id'])
return res
def _get_objectives(self, cr, uid,context):
L=[]
if context.get('name_related','') :
cr.execute ("select parent_id from hr_employee where name_related='%s'"%context.get('name_related',''))
parent_id=cr.dictfetchall()[0]
cr.execute("select objectives from hr_performancegoals where employee_id=%s"%int(parent_id['parent_id']))
data = cr.dictfetchall()
for i,values in enumerate(data):
a=unicodedata.normalize('NFKD', values['objectives']).encode('ascii','ignore')
L.append((a,a))
else:
if context.get('uid',''):
user_id = int(context.get('uid',''))
cr.execute("select id from resource_resource where user_id=%s"%user_id)
log_name = cr.dictfetchall()[0]
print "TEsting Log name Here :",log_name
if log_name['id'] == 1:
L=[]
else:
cr.execute ("select parent_id from hr_employee where id=%s"%log_name['id'])
parent_id=cr.dictfetchall()[0]
cr.execute("select objectives from hr_performancegoals where employee_id=%s"%parent_id['parent_id'])
data = cr.dictfetchall()
for i,values in enumerate(data):
a=unicodedata.normalize('NFKD', values['objectives']).encode('ascii','ignore')
L.append((a,a))
return L
_columns = {
'employee_id': fields.function(_get_employee_id,method=True, type='many2one', relation="hr.employee", string="Employee",store=True),
'strategic_goals': fields.char('Strategic Goals'),
'str_goals': fields.selection(_get_objectives, type='selection', method=True, store=False, string="Strategic"),
'objectives' : fields.text('Objectives'),
'completion_date' : fields.date('Completion Date'),
'specific_actions_required_to_deliver_strategic_goal' : fields.text('Specific Actions Required To Deliver Strategic Goal'),
'status': fields.selection([('Yet To Start','Yet To Start'),
('In Progress','In Progress'),
('Invalid','Invalid'),
('Completed','Completed'),
('Closed','Closed'),],
'Status', required=True),
}
class hr_team(osv.osv): # Instead of Act Win I want to call Function _name = "hr.team" _description = "Team Goals"
# Function to overview the View
def action_button_confirm(self, cr, uid, ids, context=None):
print "Here is the Context ::",context
dummy, form_view = models_data.get_object_reference(cr, uid, 'hr_survey_relation', 'view_hr_performancegoals_form')
dummy, tree_view = models_data.get_object_reference(cr, uid, 'hr_survey_relation', 'view_hr_performancegoals_form')
return {
'type': 'ir.actions.act_window',
'domain': "[('employee_id','in',["+','.join(map(str,employee_list))+"])]",
'name': 'Goals',
'res_model': 'hr.performancegoals',
'views': [(form_view or False, 'form'), (tree_view or False, 'tree')],
'res_id': ids[0],
'view_type': 'form',
'view_mode': 'tree,form',
'view_id': False,
}
_columns = {
'id':fields.char('Employee ID'),
'name_related':fields.char('EMPLOYEE NAME', require=True),
'department_id':fields.char('Department'),
'work_location': fields.char('Office Location', size=32),
'job_id':fields.char('Role/Designation', required=True),
}
.. Xml file
<record model="ir.ui.view" id="view_hr_performancegoals_form">
<field name="name">hr.performancegoals.form</field>
<field name="model">hr.performancegoals</field>
<field name="arch" type="xml">
<form string="Goals" version="7.0">
<sheet>
<notebook>
<page string="Add New Goals">
<group>
<field name="employee_id" invisible="1"/>
</group>
<group col="4">
<field name="str_goals" context="{'employee_id':employee_id}"/>
<field name="strategic_goals" />
<field name="objectives"/>
<field name="completion_date"/>
<field name="specific_actions_required_to_deliver_strategic_goal"/>
<field name="status"/>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="view_hr_performancegoals_tree">
<field name="name">hr.performancegoals.form</field>
<field name="model">hr.performancegoals</field>
<field name="arch" type="xml">
<tree string="Goals" editable="bottom" >
<field name="employee_id" invisible="1"/>
<field name="str_goals" context="{'employee_id':employee_id}"/>
<field name="strategic_goals"/>
<field name="objectives"/>
<field name="completion_date"/>
<field name="specific_actions_required_to_deliver_strategic_goal"/>
<field name="status"/>
</tree>
</field>
</record>
<record id="hr_performancegoals_action" model="ir.actions.act_window"> <field name="name">Goals</field> <field name="res_model">hr.performancegoals</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="view_id" ref="view_hr_performancegoals_tree"/> </record> <menuitem parent="hr_evaluation.menu_eval_hr" id="hr_performancegoals" name="Goals" action="hr_performancegoals_action"/>
<record model="ir.ui.view" id="view_hr_team_form"> <field name="name">hr.team.form</field> <field name="model">hr.employee</field> <field name="arch" type="xml"> <notebook position="inside"> <page string="Team"> <group col="4"> <field name="id" invisible="1"/> <field name="name_related"/> <field name="department_id"/> <field name="work_location"/> <field name="job_id"/> <button name="hr_team.action_button_confirm" type="action" string="Assign Goals" class="oe_link oe_edit_only" icon="STOCK_DIRECTORY_MENU" context="{'id':id,'name_related':name_related}"/> </group> </page> </notebook> </field> </record>
<record model="ir.ui.view" id="view_hr_team_tree">
<field name="name">hr.team.tree</field>
<field name="model">hr.employee</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Team" editable="bottom" >
<field name="id" invisible="1"/>
<field name="name_related"/>
<field name="department_id"/>
<field name="work_location"/>
<field name="job_id"/>
<button name="hr_team.action_button_confirm" type="action" string="Assign Goals" class="oe_link oe_edit_only" icon="STOCK_DIRECTORY_MENU" context="{'id':id,'name_related':name_related}"/>
</tree>
</field>
</record>
<record id="hr_team_action" model="ir.actions.act_window">
<field name="name">Team</field>
<field name="res_model">hr.employee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_hr_team_tree"/>
</record>