merge-evaluation

bzr revid: fp@tinyerp.com-20111111202946-y51gv8bsig75in3m
This commit is contained in:
Fabien Pinckaers 2011-11-11 21:29:46 +01:00
commit b42892163b
7 changed files with 92 additions and 57 deletions

View File

@ -20,7 +20,7 @@
##############################################################################
{
"name" : "Periodic Evaluations",
"name" : "HR Periodic Appraisals",
"version": "0.1",
"author": "OpenERP SA",
"category": "Human Resources",

View File

@ -28,13 +28,13 @@ from tools.translate import _
class hr_evaluation_plan(osv.osv):
_name = "hr_evaluation.plan"
_description = "Evaluation Plan"
_description = "Appraisal Plan"
_columns = {
'name': fields.char("Evaluation Plan", size=64, required=True),
'name': fields.char("Appraisal Plan", size=64, required=True),
'company_id': fields.many2one('res.company', 'Company', required=True),
'phase_ids': fields.one2many('hr_evaluation.plan.phase', 'plan_id', 'Evaluation Phases'),
'month_first': fields.integer('First Evaluation in (months)', help="This number of months will be used to schedule the first evaluation date of the employee when selecting an evaluation plan. "),
'month_next': fields.integer('Periodicity of Evaluations (months)', help="The number of month that depicts the delay between each evaluation of this plan (after the first one)."),
'phase_ids': fields.one2many('hr_evaluation.plan.phase', 'plan_id', 'Appraisal Phases'),
'month_first': fields.integer('First Appraisal in (months)', help="This number of months will be used to schedule the first evaluation date of the employee when selecting an evaluation plan. "),
'month_next': fields.integer('Periodicity of Appraisal (months)', help="The number of month that depicts the delay between each evaluation of this plan (after the first one)."),
'active': fields.boolean('Active')
}
_defaults = {
@ -47,13 +47,13 @@ hr_evaluation_plan()
class hr_evaluation_plan_phase(osv.osv):
_name = "hr_evaluation.plan.phase"
_description = "Evaluation Plan Phase"
_description = "Appraisal Plan Phase"
_order = "sequence"
_columns = {
'name': fields.char("Phase", size=64, required=True),
'sequence': fields.integer("Sequence"),
'company_id': fields.related('plan_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True),
'plan_id': fields.many2one('hr_evaluation.plan','Evaluation Plan', ondelete='cascade'),
'plan_id': fields.many2one('hr_evaluation.plan','Appraisal Plan', ondelete='cascade'),
'action': fields.selection([
('top-down','Top-Down Appraisal Requests'),
('bottom-up','Bottom-Up Appraisal Requests'),
@ -101,8 +101,8 @@ class hr_employee(osv.osv):
_name = "hr.employee"
_inherit="hr.employee"
_columns = {
'evaluation_plan_id': fields.many2one('hr_evaluation.plan', 'Evaluation Plan'),
'evaluation_date': fields.date('Next Evaluation Date', help="The date of the next evaluation is computed by the evaluation plan's dates (first evaluation + periodicity)."),
'evaluation_plan_id': fields.many2one('hr_evaluation.plan', 'Appraisal Plan'),
'evaluation_date': fields.date('Next Appraisal Date', help="The date of the next appraisal is computed by the appraisal plan's dates (first appraisal + periodicity)."),
}
def run_employee_evaluation(self, cr, uid, automatic=False, use_new_cursor=False, context=None):
@ -141,12 +141,12 @@ hr_employee()
class hr_evaluation(osv.osv):
_name = "hr_evaluation.evaluation"
_description = "Employee Evaluation"
_description = "Employee Appraisal"
_rec_name = 'employee_id'
_columns = {
'date': fields.date("Evaluation Deadline", required=True, select=True),
'date': fields.date("Appraisal Deadline", required=True, select=True),
'employee_id': fields.many2one('hr.employee', "Employee", required=True),
'note_summary': fields.text('Evaluation Summary'),
'note_summary': fields.text('Appraisal Summary'),
'note_action': fields.text('Action Plan',
help="If the evaluation does not meet the expectations, you can propose"+
"an action plan"),
@ -271,7 +271,7 @@ hr_evaluation()
class survey_request(osv.osv):
_inherit = "survey.request"
_columns = {
'is_evaluation': fields.boolean('Is Evaluation?'),
'is_evaluation': fields.boolean('Is Appraisal?'),
}
_defaults = {
'state': 'waiting_answer',
@ -283,11 +283,11 @@ class hr_evaluation_interview(osv.osv):
_name = 'hr.evaluation.interview'
_inherits = {'survey.request': 'request_id'}
_rec_name = 'request_id'
_description = 'Evaluation Interview'
_description = 'Appraisal Interview'
_columns = {
'request_id': fields.many2one('survey.request','Request_id', ondelete='cascade', required=True),
'user_to_review_id': fields.many2one('hr.employee', 'Employee to Interview'),
'evaluation_id': fields.many2one('hr_evaluation.evaluation', 'Evaluation Form'),
'evaluation_id': fields.many2one('hr_evaluation.evaluation', 'Appraisal Form'),
}
_defaults = {
'is_evaluation': True,
@ -314,7 +314,7 @@ class hr_evaluation_interview(osv.osv):
wating_id = 0
tot_done_req = 1
if not id.evaluation_id.id:
raise osv.except_osv(_('Warning !'),_("You cannot start evaluation without Evaluation."))
raise osv.except_osv(_('Warning !'),_("You cannot start evaluation without Appraisal."))
records = hr_eval_obj.browse(cr, uid, [id.evaluation_id.id], context=context)[0].survey_request_ids
for child in records:
if child.state == "draft":

View File

@ -1210,6 +1210,24 @@ Once the form had been filled, the employee send it to his supervisor.
<field eval="1" name="wait"/>
</record>
</data>
<data noupdate="1">
<record id="hr.employee" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
<record id="hr.employee1" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
<record id="hr.employee2" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
<record id="hr.employee3" model="hr.employee">
<field name="evaluation_plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
</record>
</data>
<data>
<record forcecreate="True" id="ir_cron_scheduler_evaluation" model="ir.cron">

View File

@ -7,7 +7,7 @@
<field name="model">hr_evaluation.plan</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Evaluation Plan">
<search string="Appraisal Plan">
<group>
<field name="name"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
@ -25,18 +25,17 @@
<field name="model">hr_evaluation.plan</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Evaluation Plan">
<form string="Appraisal Plan">
<group col="8" colspan="4">
<field name="name" select="1"/>
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
<field name="month_first"/>
<field name="month_next"/>
<label string="(months)" align="0.0"/>
<newline/>
<field name="active"/>
</group>
<notebook colspan="4">
<page string="Evaluation Phases">
<page string="Appraisal Phases">
<field name="phase_ids" nolabel="1" colspan="4"/>
</page>
</notebook>
@ -48,7 +47,7 @@
<field name="model">hr_evaluation.plan</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Evaluation Plan">
<tree string="Appraisal Plan">
<field name="name"/>
<field name="month_first"/>
<field name="month_next"/>
@ -57,14 +56,14 @@
</field>
</record>
<record model="ir.actions.act_window" id="open_view_hr_evaluation_plan_tree">
<field name="name">Evaluation Plans</field>
<field name="name">Appraisal Plans</field>
<field name="res_model">hr_evaluation.plan</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem name="Evaluations" parent="hr.menu_hr_root" id="menu_eval_hr" sequence="6"/>
<menuitem name="Periodic Evaluations" parent="hr.menu_hr_configuration" id="menu_eval_hr_config" sequence="4"/>
<menuitem name="Appraisal" parent="hr.menu_hr_root" id="menu_eval_hr" sequence="6"/>
<menuitem name="Periodic Appraisal" parent="hr.menu_hr_configuration" id="menu_eval_hr_config" sequence="4"/>
<menuitem parent="menu_eval_hr_config" id="menu_open_view_hr_evaluation_plan_tree"
action="open_view_hr_evaluation_plan_tree"/>
@ -73,7 +72,7 @@
<field name="model">hr_evaluation.plan.phase</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Evaluation Plan Phases">
<form string="Appraisal Plan Phases">
<notebook>
<page string="General">
<field name="plan_id" invisible="1"/>
@ -115,7 +114,7 @@
<label string=" (employee_name)s: Partner name" colspan="2"/>
<label string="(user_signature)s: User name" colspan="2"/>
<label string="(date)s: Current Date" colspan="2"/>
<label string="(eval_name)s:Evaluation Name" colspan="2"/>
<label string="(eval_name)s:Appraisal Name" colspan="2"/>
</page>
</notebook>
</form>
@ -126,7 +125,7 @@
<field name="model">hr_evaluation.plan.phase</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Evaluation Plan Phases" editable="bottom" >
<tree string="Appraisal Plan Phases" editable="bottom" >
<field name="sequence"/>
<field name="name"/>
<field name="action"/>
@ -142,7 +141,7 @@
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<page string="Notes" position="before">
<page string="Evaluation" groups="base.group_hr_user">
<page string="Appraisal" groups="base.group_hr_user">
<field name="evaluation_plan_id" on_change="onchange_evaluation_plan_id(evaluation_plan_id, evaluation_date)"/>
<field name="evaluation_date"/>
</page>
@ -155,9 +154,9 @@
<field name="model">hr_evaluation.evaluation</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Evaluation">
<form string="Appraisal">
<group col="4" colspan="3">
<separator string="Evaluation Data" colspan="4"/>
<separator string="Appraisal Data" colspan="4"/>
<field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
<field name="plan_id"/>
<field name="date"/>
@ -171,7 +170,7 @@
<notebook colspan="4">
<page string="Appraisal">
<field name="survey_request_ids" nolabel="1" colspan="4" widget="one2many">
<form string="Interview Evaluation">
<form string="Interview Appraisal">
<group col="4" colspan="4">
<field name="survey_id"/>
<group col="2" colspan="2">
@ -204,13 +203,13 @@
<field name="state" widget="statusbar" statusbar_visible="draft,progress,wait,done" statusbar_colors='{"progress":"blue"}'/>
<button name="button_cancel" string="Cancel" states="draft,wait,progress" type="object"
icon="gtk-cancel"/>
<button name="button_plan_in_progress" string="Start Evaluation" states="draft" type="object"
<button name="button_plan_in_progress" string="Start Appraisal" states="draft" type="object"
icon="gtk-execute"/>
<button name="button_done" string="Done" states="progress" type="object"
icon="gtk-jump-to"/>
<button name="button_draft" string="Reset to Draft" states="cancel" type="object"
icon="terp-stock_effects-object-colorize"/>
<button name="button_final_validation" string="Validate Evaluation" states="wait" type="object"
<button name="button_final_validation" string="Validate Appraisal" states="wait" type="object"
icon="gtk-go-forward"/>
</group>
</form>
@ -222,7 +221,7 @@
<field name="model">hr_evaluation.evaluation</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';black:state in ('wait','progress');gray:state in('done','cancel')" string="Evaluation">
<tree colors="blue:state == 'draft';black:state in ('wait','progress');gray:state in('done','cancel')" string="Appraisal">
<field name="employee_id"/>
<field name="plan_id"/>
<field name="date"/>
@ -238,7 +237,7 @@
<field name="model">hr_evaluation.evaluation</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Evaluation" type="bar">
<graph string="Appraisal" type="bar">
<field name="employee_id"/>
<field name="progress" operator="+"/>
</graph>
@ -250,16 +249,16 @@
<field name="model">hr_evaluation.evaluation</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Evaluation">
<search string="Search Appraisal">
<group>
<filter icon="terp-check" string="Pending" domain="[('state','=','wait')]" help="Evaluations that are in Plan In Progress state"/>
<filter icon="terp-camera_test" string="In progress" domain="[('state','=','progress')]" help="Evaluations that are in waiting appreciation state"/>
<filter icon="terp-check" string="Pending" domain="[('state','=','wait')]" help="Appraisal that are in Plan In Progress state"/>
<filter icon="terp-camera_test" string="In progress" domain="[('state','=','progress')]" help="Appraisal that are in waiting appreciation state"/>
<separator orientation="vertical"/>
<filter icon="terp-go-week" string="7 Days" help="Evaluations to close within the next 7 days"
<filter icon="terp-go-week" string="7 Days" help="Appraisal to close within the next 7 days"
domain="[('date', '&gt;=', (datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]" />
<separator orientation="vertical"/>
<filter icon="terp-gnome-cpu-frequency-applet+" string="Late"
help="Evaluations that overpassed the deadline" domain="[('date','&lt;=',(datetime.date.today()).strftime('%%Y-%%m-%%d'))]" />
help="Appraisal that overpassed the deadline" domain="[('date','&lt;=',(datetime.date.today()).strftime('%%Y-%%m-%%d'))]" />
<separator orientation="vertical"/>
<field name="employee_id" />
<field name="plan_id" widget="selection" />
@ -278,23 +277,23 @@
</record>
<record model="ir.actions.act_window" id="open_view_hr_evaluation_tree">
<field name="name">Evaluations</field>
<field name="name">Appraisal</field>
<field name="res_model">hr_evaluation.evaluation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="search_view_id" ref="hr_evaluation.evaluation_search"/>
<field name="help">Each employee may be assigned an evaluation plan. Such a plan defines the frequency and the way you manage your periodic personnel evaluation. You will be able to define steps and attach interviews to each step. OpenERP manages all kind of evaluations: bottom-up, top-down, self-evaluation and final evaluation by the manager.</field>
<field name="help">Each employee may be assigned an Appraisal Plan. Such a plan defines the frequency and the way you manage your periodic personnel evaluation. You will be able to define steps and attach interviews to each step. OpenERP manages all kind of evaluations: bottom-up, top-down, self-evaluation and final evaluation by the manager.</field>
</record>
<menuitem name="Evaluations" parent="menu_eval_hr" id="menu_open_view_hr_evaluation_tree"
action="open_view_hr_evaluation_tree"/>
<menuitem name="Appraisal" parent="menu_eval_hr" id="menu_open_view_hr_evaluation_tree"
action="open_view_hr_evaluation_tree" groups="base.group_hr_user"/>
<record model="ir.ui.view" id="view_hr_evaluation_interview_form">
<field name="name">hr_evaluation.interview.form</field>
<field name="model">hr.evaluation.interview</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Interview Evaluation">
<form string="Interview Appraisal">
<group col="4" colspan="4">
<field name="survey_id"/>
<field name="evaluation_id"/>
@ -325,7 +324,7 @@
<field name="model">hr.evaluation.interview</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Interview Evaluation">
<tree string="Interview Appraisal">
<field name="date_deadline" string="Deadline Date"/>
<field name="survey_id"/>
<field name="user_id" string="Interviewer"/>
@ -344,7 +343,7 @@
<field name="model">hr.evaluation.interview</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Evaluation">
<search string="Search Appraisal">
<group>
<filter icon="terp-gtk-go-back-rtl" string="To Do" name="todo" domain="[('state','=','waiting_answer')]"/>
<separator orientation="vertical"/>
@ -384,7 +383,7 @@
<field name="domain">[('is_evaluation' ,'=', True)]</field>
<field name="context">{"search_default_todo":1,"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_hr_evaluation_interview_search"/>
<field name="help">Interview Requests are generated automatically by OpenERP according to an employee's evaluation plan. Each user receives automatic emails and requests to evaluate their colleagues periodically.</field>
<field name="help">Interview Requests are generated automatically by OpenERP according to an employee's Appraisal Plan. Each user receives automatic emails and requests to evaluate their colleagues periodically.</field>
</record>
<record model="ir.actions.act_window.view" id="hr_evaluation_interview_tree">
@ -411,7 +410,7 @@
<!-- Email Compose message Action-->
<act_window
id="evaluation_reminders" name="Evaluation Reminders"
id="evaluation_reminders" name="Appraisal Reminders"
res_model="mail.compose.message"
src_model="hr.evaluation.interview"
view_type="form" view_mode="form"
@ -419,11 +418,11 @@
key2="client_action_multi"
context="{'mail.compose.message.mode':'mass_mail'}"/>
<!-- Evaluation Interviews Button on Employee Form -->
<!-- Appraisal Interviews Button on Employee Form -->
<act_window
context="{'search_default_user_to_review_id': [active_id], 'default_user_to_review_id': active_id}"
id="act_hr_employee_2_hr__evaluation_interview"
name="Evaluation Interviews"
name="Appraisal Interviews"
res_model="hr.evaluation.interview"
src_model="hr.employee"/>

View File

@ -8,7 +8,7 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';black:state in ('wait','progress');gray:state in('done','cancel')"
string="Evaluations Analysis">
string="Appraisal Analysis">
<field name="create_date" invisible="1"/>
<field name="employee_id" invisible="1"/>
<field name="deadline" invisible="1"/>
@ -32,7 +32,7 @@
<field name="model">hr.evaluation.report</field>
<field name="type">graph</field>
<field name="arch" type="xml">
<graph string="Evaluations Analysis" type="bar">
<graph string="Appraisal Analysis" type="bar">
<field name="employee_id"/>
<field name="nbr" operator="+"/>
<field name="state" group="True"/>
@ -45,7 +45,7 @@
<field name="model">hr.evaluation.report</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Evaluations Analysis">
<search string="Appraisal Analysis">
<group>
<filter icon="terp-go-year" string=" Year "
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;=',time.strftime('%%Y-01-01'))]" help="Evaluation done in current year"/>
@ -91,7 +91,7 @@
</record>
<record id="action_evaluation_report_all" model="ir.actions.act_window">
<field name="name">Evaluations Analysis</field>
<field name="name">Appraisal Analysis</field>
<field name="res_model">hr.evaluation.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
@ -100,7 +100,7 @@
</record>
<menuitem id="hr.menu_hr_reporting" name="Reporting" parent="hr.menu_hr_root" sequence="10"/>
<menuitem action="action_evaluation_report_all" id="menu_evaluation_report_all" parent="hr.menu_hr_reporting" sequence="3"/>
<menuitem action="action_evaluation_report_all" id="menu_evaluation_report_all" parent="hr.menu_hr_reporting" sequence="3" groups="base.group_hr_manager"/>
</data>
</openerp>

View File

@ -33,6 +33,22 @@
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="hr_employee_interview" model="ir.rule">
<field name="name">Employee Interview</field>
<field ref="model_hr_evaluation_interview" name="model_id"/>
<field name="domain_force">['|',('user_id','=',user.id),('user_id','=',False)]</field>
<field eval="False" name="global"/>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="hr_employee_interview_hr" model="ir.rule">
<field name="name">Employee Interview - HR</field>
<field ref="model_hr_evaluation_interview" name="model_id"/>
<field name="domain_force">[(1,'=',1)]</field>
<field eval="False" name="global"/>
<field name="groups" eval="[(4, ref('base.group_hr_user'))]"/>
</record>
</data>
</openerp>

View File

@ -4,6 +4,7 @@
"access_hr_evaluation_plan_user","hr_evaluation.plan.user","model_hr_evaluation_plan","base.group_hr_user",1,1,1,1
"access_hr_evaluation_plan_phase_user","hr_evaluation.plan.phase.user","model_hr_evaluation_plan_phase","base.group_hr_user",1,1,1,1
"access_hr_evaluation_interview_user","hr.evaluation.interview.user","model_hr_evaluation_interview","base.group_hr_user",1,1,1,1
"access_hr_evaluation_interview_employee","hr.evaluation.interview.employee","model_hr_evaluation_interview","base.group_user",1,1,1,0
"access_hr_evaluation_report","hr.evaluation.report","model_hr_evaluation_report","base.group_hr_manager",1,1,1,1
"access_survey_type_hr_manager","survey.type","survey.model_survey_type","base.group_hr_manager",1,1,1,1
"access_survey_hr_manager","survey.hr.manager","survey.model_survey","base.group_hr_manager",1,1,1,1
@ -25,6 +26,7 @@
"access_survey_response_hr_user","survey.response.hr.user","survey.model_survey_response","base.group_hr_user",1,1,1,0
"access_survey_history_hr_user","survey.history.hr.user","survey.model_survey_history","base.group_hr_user",1,1,1,0
"access_survey_request_hr_user","survey.request.hr.user","survey.model_survey_request","base.group_hr_user",1,1,1,0
"access_survey_request_hr_employee","survey.request.hr.employee","survey.model_survey_request","base.group_user",1,1,1,0
"access_survey_question_column_heading_hr_user","survey.question.column.heading.hr.user","survey.model_survey_question_column_heading","base.group_hr_user",1,0,0,0
"access_survey_response_line_hr_user","survey.response.line.hr.user","survey.model_survey_response_line","base.group_hr_user",1,1,1,0
"access_survey_tbl_column_heading_hr_user","survey.tbl.column.heading.hr.user","survey.model_survey_tbl_column_heading","base.group_hr_user",1,1,1,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_hr_evaluation_plan_user hr_evaluation.plan.user model_hr_evaluation_plan base.group_hr_user 1 1 1 1
5 access_hr_evaluation_plan_phase_user hr_evaluation.plan.phase.user model_hr_evaluation_plan_phase base.group_hr_user 1 1 1 1
6 access_hr_evaluation_interview_user hr.evaluation.interview.user model_hr_evaluation_interview base.group_hr_user 1 1 1 1
7 access_hr_evaluation_interview_employee hr.evaluation.interview.employee model_hr_evaluation_interview base.group_user 1 1 1 0
8 access_hr_evaluation_report hr.evaluation.report model_hr_evaluation_report base.group_hr_manager 1 1 1 1
9 access_survey_type_hr_manager survey.type survey.model_survey_type base.group_hr_manager 1 1 1 1
10 access_survey_hr_manager survey.hr.manager survey.model_survey base.group_hr_manager 1 1 1 1
26 access_survey_response_hr_user survey.response.hr.user survey.model_survey_response base.group_hr_user 1 1 1 0
27 access_survey_history_hr_user survey.history.hr.user survey.model_survey_history base.group_hr_user 1 1 1 0
28 access_survey_request_hr_user survey.request.hr.user survey.model_survey_request base.group_hr_user 1 1 1 0
29 access_survey_request_hr_employee survey.request.hr.employee survey.model_survey_request base.group_user 1 1 1 0
30 access_survey_question_column_heading_hr_user survey.question.column.heading.hr.user survey.model_survey_question_column_heading base.group_hr_user 1 0 0 0
31 access_survey_response_line_hr_user survey.response.line.hr.user survey.model_survey_response_line base.group_hr_user 1 1 1 0
32 access_survey_tbl_column_heading_hr_user survey.tbl.column.heading.hr.user survey.model_survey_tbl_column_heading base.group_hr_user 1 1 1 0