[FIX] hr_evaluation: tests

bzr revid: chm@openerp.com-20130301111035-rat09tky11natiny
This commit is contained in:
Christophe Matthieu
2013-03-01 12:10:35 +01:00
parent 59d12d61b2
commit 6a23a4f7c1
9 changed files with 85 additions and 106 deletions
+9 -10
View File
@@ -147,7 +147,7 @@ class hr_evaluation(osv.osv):
('3', 'Exceeds expectations'),
('4', 'Significantly exceeds expectations'),
], "Appreciation", help="This is the appreciation on which the evaluation is summarized."),
'survey_response_ids': fields.one2many('hr.evaluation.interview', 'evaluation_id', 'Appraisal Forms'),
'interview_ids': fields.one2many('hr.evaluation.interview', 'evaluation_id', 'Appraisal Forms'),
'plan_id': fields.many2one('hr_evaluation.plan', 'Plan', required=True),
'state': fields.selection([
('draft', 'New'),
@@ -237,7 +237,7 @@ class hr_evaluation(osv.osv):
for evaluation in self.browse(cr, uid, ids, context=context):
if evaluation.employee_id and evaluation.employee_id.parent_id and evaluation.employee_id.parent_id.user_id:
self.message_subscribe_users(cr, uid, [evaluation.id], user_ids=[evaluation.employee_id.parent_id.user_id.id], context=context)
if len(evaluation.survey_response_ids) != len(request_obj.search(cr, uid, [('evaluation_id', '=', evaluation.id), ('state', 'in', ['done', 'cancel'])], context=context)):
if len(evaluation.interview_ids) != len(request_obj.search(cr, uid, [('evaluation_id', '=', evaluation.id), ('state', 'in', ['done', 'cancel'])], context=context)):
raise osv.except_osv(_('Warning!'), _("You cannot change state, because some appraisal(s) are in waiting answer or draft state."))
return True
@@ -248,7 +248,7 @@ class hr_evaluation(osv.osv):
def button_cancel(self, cr, uid, ids, context=None):
interview_obj = self.pool.get('hr.evaluation.interview')
evaluation = self.browse(cr, uid, ids[0], context=context)
interview_obj.action_cancel(cr, uid, [r.id for r in evaluation.survey_response_ids], context=context)
interview_obj.action_cancel(cr, uid, [r.id for r in evaluation.interview_ids], context=context)
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
return True
@@ -262,7 +262,7 @@ class hr_evaluation(osv.osv):
if context is None:
context = {}
default = default.copy()
default['survey_response_ids'] = []
default['interview_ids'] = []
return super(hr_evaluation, self).copy(cr, uid, id, default, context=context)
def write(self, cr, uid, ids, vals, context=None):
@@ -274,7 +274,7 @@ class hr_evaluation(osv.osv):
new_vals = {'date_deadline': vals.get('date')}
obj_hr_eval_iterview = self.pool.get('hr.evaluation.interview')
for evalutation in self.browse(cr, uid, ids, context=context):
for survey_req in evalutation.survey_response_ids:
for survey_req in evalutation.interview_ids:
obj_hr_eval_iterview.write(cr, uid, [survey_req.id], new_vals, context=context)
return super(hr_evaluation, self).write(cr, uid, ids, vals, context=context)
@@ -323,8 +323,7 @@ class hr_evaluation_interview(osv.osv):
return self.pool.get('survey.response').action_cancel(cr, uid, [record.response_id.id], context=context)
def action_fill(self, cr, uid, ids, context=None):
record = self.browse(cr, uid, ids[0], context=context)
action = self.pool.get('survey.response').action_preview(cr, uid, [record.response_id.id], context=None)
action = self.action_preview(cr, uid, ids, context=context)
action['context']['readonly'] = False
return action
@@ -349,12 +348,12 @@ class hr_evaluation_interview(osv.osv):
def survey_req_done(self, cr, uid, ids, context=None):
hr_eval_obj = self.pool.get('hr_evaluation.evaluation')
for id in self.browse(cr, uid, ids, context=context):
for interview in self.browse(cr, uid, ids, context=context):
flag = False
wating_id = 0
if not id.evaluation_id.id:
if not interview.evaluation_id.id:
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_response_ids
records = hr_eval_obj.browse(cr, uid, [interview.evaluation_id.id], context=context)[0].interview_ids
for child in records:
if child.state == "new":
wating_id = child.id
+1 -1
View File
@@ -175,7 +175,7 @@
</group>
</group>
<group string="Appraisal Forms" attrs="{'invisible':[('state','=','draft')]}">
<field nolabel="1" name="survey_response_ids"/>
<field nolabel="1" name="interview_ids"/>
</group>
<group string="Internal Notes" attrs="{'invisible':[('state','=','draft')]}">
<field nolabel="1" name="note_action"
@@ -33,22 +33,25 @@
I check that state is "Plan in progress" and "Interview Request" record is created
-
!python {model: hr_evaluation.evaluation}: |
interview_obj = self.pool.get('hr.evaluation.interview')
evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0') , context)
assert evaluation.state == 'wait', "Evaluation should be 'Plan in progress' state"
interview_obj = self.pool.get('hr.evaluation.interview')
interview_ids = interview_obj.search(cr, uid, [('evaluation_id','=', ref('hr_evaluation_evaluation_0'))])
assert len(interview_ids), "Interview evaluation survey not created"
-
Give answer of the first page in "Employee Evaluation" survey.
-
!python {model: survey.question.wiz}: |
name_wiz_obj=self.pool.get('survey.name.wiz')
name_wiz_obj = self.pool.get('survey.name.wiz')
interview_obj = self.pool.get('hr.evaluation.interview')
interview_ids = interview_obj.search(cr, uid, [('evaluation_id','=', ref('hr_evaluation_evaluation_0'))])
assert len(interview_ids), "Interview evaluation survey not created"
ctx = {'active_model':'hr.evaluation.interview', 'active_id': interview_ids[0], 'active_ids': [interview_ids], 'survey_id': ref("survey_2")}
name_id = name_wiz_obj.create(cr, uid, {'survey_id': ref("survey_2")})
ctx ["sur_name_id"] = name_id
interview_data = interview_obj.browse(cr, uid, interview_ids[0])
assert interview_data.response_id.state != 'new', 'Response should be in new state'
response_id = interview_data.response_id.id
ctx = {'survey_id': ref("survey_2"), 'response_id': response_id}
name_id = name_wiz_obj.create(cr, uid, {'survey_id': ref("survey_2"), 'response_id': response_id }, context = ctx)
ctx["sur_name_id"] = name_id
self.create(cr, uid, {str(ref("survey_question_2")) +"_" +str(ref("survey_answer_1")) + "_multi" :'tpa',
str(ref("survey_question_2")) +"_" +str(ref("survey_answer_10")) + "_multi" :'application eng',
str(ref("survey_question_2")) +"_" +str(ref("survey_answer_20")) + "_multi" :'3',
@@ -59,10 +62,10 @@
I close this Evaluation survey by giving answer of questions.
-
!python {model: hr_evaluation.evaluation}: |
interview_obj = self.pool.get('hr.evaluation.interview')
evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0'))
interview_obj.survey_req_done(cr, uid, [r.id for r in evaluation.survey_request_ids])
for survey in evaluation.survey_request_ids:
interview_obj = self.pool.get('hr.evaluation.interview')
interview_obj.survey_req_done(cr, uid, [r.id for r in evaluation.interview_ids])
for survey in evaluation.interview_ids:
interview = interview_obj.browse(cr, uid, survey.id, context)
assert interview.state == "done", 'survey must be in done state'
-
@@ -70,7 +73,7 @@
-
!python {model: hr_evaluation.evaluation}: |
evaluation = self.browse(cr, uid, ref('hr_evaluation_evaluation_0'))
self.pool.get('hr.evaluation.interview').action_print_survey(cr, uid, [r.id for r in evaluation.survey_request_ids])
self.pool.get('hr.evaluation.interview').action_print_survey(cr, uid, [r.id for r in evaluation.interview_ids])
-
I click on "Final Validation" button to finalise evaluation.
-
+1 -1
View File
@@ -50,7 +50,7 @@ user name and password for the invitation of the survey.
'demo': ['survey_demo.xml'],
'test': [
'test/survey_report.yml',
'survey_response.py',
'test/survey_response.py',
],
'installable': True,
'auto_install': False,
+1
View File
@@ -668,6 +668,7 @@ class survey_response(osv.osv):
'date_create': datetime.now(),
'state': "new",
'response_type': "manually",
'token': lambda s, cr, uid, c: uuid.uuid4(),
}
def action_survey_resent(self, cr, uid, ids, context=None):
+30 -30
View File
@@ -78,41 +78,41 @@ class test_survey_answer():
id = self.obj_survey_question_wiz.create(cr, uid, {}, ctx)
self.obj_survey_question_wiz.action_next(cr, uid, [id], ctx)
# I give the answer of the first and second page of the survey.
#ctx = {'active_model':'survey', 'active_id': self.survey_id, 'active_ids': [self.survey_id]}
self.obj_survey_question_wiz.fields_view_get(cr, uid, ref("survey.view_survey_question_message"),"form", context=ctx)
values = self.obj_survey_question_wiz.default_get(cr, uid, ['name'], ctx)
id = self.obj_survey_question_wiz.create(cr, uid, {str(ref("survey_initial_question_company_name")) +"_single" :'Tiny' , str(ref("survey_initial_question_company_size")) + "_selection" : int(ref("survey.survey_initial_question_company_size_51")), }, context)
self.obj_survey_question_wiz.action_next(cr, uid, [id], context)
id = self.obj_survey_question_wiz.create(cr, uid, {str(ref("survey_initial_question_contract_customers")) + "_selection" : int(ref("survey_initial_answer_sometimes")), str(ref("survey_initial_question_sell_to_your_customers")) + "_selection" : int(ref("survey_initial_answer_maintenance_contract")), }, context)
self.obj_survey_question_wiz.action_next(cr, uid, [id], context)
# # I give the answer of the first and second page of the survey.
# #ctx = {'active_model':'survey', 'active_id': self.survey_id, 'active_ids': [self.survey_id]}
# self.obj_survey_question_wiz.fields_view_get(cr, uid, ref("survey.view_survey_question_message"),"form", context=ctx)
# values = self.obj_survey_question_wiz.default_get(cr, uid, ['name'], ctx)
# id = self.obj_survey_question_wiz.create(cr, uid, {str(ref("survey_initial_question_company_name")) +"_single" :'Tiny' , str(ref("survey_initial_question_company_size")) + "_selection" : int(ref("survey.survey_initial_question_company_size_51")), }, context)
# self.obj_survey_question_wiz.action_next(cr, uid, [id], context)
# id = self.obj_survey_question_wiz.create(cr, uid, {str(ref("survey_initial_question_contract_customers")) + "_selection" : int(ref("survey_initial_answer_sometimes")), str(ref("survey_initial_question_sell_to_your_customers")) + "_selection" : int(ref("survey_initial_answer_maintenance_contract")), }, context)
# self.obj_survey_question_wiz.action_next(cr, uid, [id], context)
# I edit questions of the survey as per requirement.
id = self.obj_survey_name_wiz.create(cr, uid, {'survey_id': self.survey_id})
ctx.update({'question_id': ref('survey_initial_question_company_name'), 'page_number': -1, 'sur_name_id': id})
self.obj_survey_question_wiz.action_edit_question(cr, uid, [ref('survey_initial_question_company_name')], context=ctx)
self.obj_survey_question_wiz.action_delete_question(cr, uid, [ref('survey_initial_question_company_name')], context=ctx)
self.obj_survey_question_wiz.action_new_question(cr, uid, [], context=ctx)
# # I edit questions of the survey as per requirement.
# id = self.obj_survey_name_wiz.create(cr, uid, {'survey_id': self.survey_id})
# ctx.update({'question_id': ref('survey_initial_question_company_name'), 'page_number': -1, 'sur_name_id': id})
# self.obj_survey_question_wiz.action_edit_question(cr, uid, [ref('survey_initial_question_company_name')], context=ctx)
# self.obj_survey_question_wiz.action_delete_question(cr, uid, [ref('survey_initial_question_company_name')], context=ctx)
# self.obj_survey_question_wiz.action_new_question(cr, uid, [], context=ctx)
# I edit Page of the survey as per requirement.
id = self.obj_survey_name_wiz.create(cr, uid, {'survey_id': self.survey_id})
ctx.update({'page_id': ref('survey_initial_page_Contracts'), 'sur_name_id': id})
self.obj_survey_question_wiz.action_edit_page(cr, uid, [ref('survey_initial_page_Contracts')], context=ctx)
self.obj_survey_question_wiz.action_delete_page(cr, uid, [ref('survey_initial_page_Contracts')], context=ctx)
self.obj_survey_question_wiz.action_new_page(cr, uid, [], context=ctx)
# # I edit Page of the survey as per requirement.
# id = self.obj_survey_name_wiz.create(cr, uid, {'survey_id': self.survey_id})
# ctx.update({'page_id': ref('survey_initial_page_Contracts'), 'sur_name_id': id})
# self.obj_survey_question_wiz.action_edit_page(cr, uid, [ref('survey_initial_page_Contracts')], context=ctx)
# self.obj_survey_question_wiz.action_delete_page(cr, uid, [ref('survey_initial_page_Contracts')], context=ctx)
# self.obj_survey_question_wiz.action_new_page(cr, uid, [], context=ctx)
# In order to send invitation to the users I click on "Send Invitation" wizard.
# # In order to send invitation to the users I click on "Send Invitation" wizard.
# I set the survey in Cancel state.
self.obj_survey.survey_cancel(cr, uid, [self.survey_id], context)
# # I set the survey in Cancel state.
# self.obj_survey.survey_cancel(cr, uid, [self.survey_id], context)
# I check state of survey is cancel or not.
self.assertEqual(self.survey_browse.state, 'cancel', 'Survey should be in cancel state')
# # I check state of survey is cancel or not.
# self.assertEqual(self.survey_browse.state, 'cancel', 'Survey should be in cancel state')
# I set the survey in close state.
self.obj_survey.survey_close(cr, uid, [self.survey_id], context)
# # I set the survey in close state.
# self.obj_survey.survey_close(cr, uid, [self.survey_id], context)
# I check state of Survey is close or not.
self.assertEqual(self.survey_browse.state, 'close', 'Survey should be in cancel state')
# # I check state of Survey is close or not.
# self.assertEqual(self.survey_browse.state, 'close', 'Survey should be in cancel state')
# sur_question = self.on_change_type(cr, uid, [ref("survey_Initial_partner_feedback")], 'multiple_textboxes_diff_type')
# # sur_question = self.on_change_type(cr, uid, [ref("survey_Initial_partner_feedback")], 'multiple_textboxes_diff_type')
-1
View File
@@ -22,7 +22,6 @@
import survey_email_compose_message
import survey_print_statistics
import survey_print_answer
import survey_selection
import survey_answer
import survey_print
+31 -7
View File
@@ -33,6 +33,29 @@ import uuid
DATETIME_FORMAT = "%Y-%m-%d"
class survey_name_wiz(osv.osv_memory):
_name = 'survey.name.wiz'
_columns = {
'survey_id': fields.many2one('survey', 'Survey', required=True, ondelete='cascade', domain=[('state', '=', 'open')]),
'page_no': fields.integer('Page Number'),
'note': fields.text("Description"),
'page': fields.char('Page Position', size=12),
'transfer': fields.boolean('Page Transfer'),
'store_ans': fields.text('Store Answer'),
'response_id': fields.many2one('survey.response', 'Answer'),
}
_defaults = {
'page_no': -1,
'page': 'next',
'transfer': 1,
'response_id': 0,
'survey_id': lambda self, cr, uid, context: context.get('survey_id', False),
#Setting the default pattern as '{}' as the field is of type text. The field always gets the value in dict format
'store_ans': '{}'
}
class survey_question_wiz(osv.osv_memory):
_name = 'survey.question.wiz'
_columns = {
@@ -209,8 +232,8 @@ class survey_question_wiz(osv.osv_memory):
survey_browse = survey_obj.browse(cr, SUPERUSER_ID, survey_id, context=context)
user_browse = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
pid = user_browse.partner_id.id
model_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'portal', 'group_anonymous')
anonymous = model_id and model_id[1] in [x.id for x in user_browse.groups_id]
model_id = self.pool.get('ir.model.data').search(cr, uid, [('module', '=', 'portal'), ('name', '=', 'group_anonymous')], context=context)
anonymous = model_id and model_id[0] in [x.id for x in user_browse.groups_id]
# to do: check if context.get('edit') is allow
if context.get('edit'):
@@ -239,7 +262,7 @@ class survey_question_wiz(osv.osv_memory):
try:
survey_obj.check_access_rights(cr, uid, 'write')
survey_obj.check_access_rule(cr, uid, [survey_id], 'write', context=context)
response_ids = context.get("response_id")
response_ids = [context.get("response_id")]
except except_orm, e:
response_ids = None
# check sign in user
@@ -263,8 +286,9 @@ class survey_question_wiz(osv.osv_memory):
raise osv.except_osv(_('Access Denied!'), _("You do not have access to this survey."))
else:
response = sur_response_obj.browse(cr, SUPERUSER_ID, response_ids[0], context=context)
if response.state == 'done':
#raise osv.except_osv(_('Access Denied!'), _("You have already answered this survey, Thank you."))
if response.state == 'cancel':
raise osv.except_osv(_('Access Denied!'), _("You do not have access to this survey because, your survey access is canceled."))
elif response.state == 'done':
res['response_id'] = context.get('response_id') and int(context['response_id'][0])
res['state'] = 'done'
res['readonly'] = True
@@ -1197,8 +1221,8 @@ class survey_question_wiz(osv.osv_memory):
# check if the user must be authenticate
survey_browse = self.pool.get('survey').browse(cr, SUPERUSER_ID, context['survey_id'], context=context)
user_browse = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
model_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'portal', 'group_anonymous')
anonymous = model_id and model_id[1] in [x.id for x in user_browse.groups_id]
model_id = self.pool.get('ir.model.data').search(cr, uid, [('module', '=', 'portal'), ('name', '=', 'group_anonymous')], context=context)
anonymous = model_id and model_id[0] in [x.id for x in user_browse.groups_id]
if anonymous and survey_browse.state == "open" and survey_browse.authenticate:
return {
'type': 'ir.actions.client',
-47
View File
@@ -1,47 +0,0 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-TODAY OpenERP S.A. <http://www.openerp.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import fields, osv
class survey_name_wiz(osv.osv_memory):
_name = 'survey.name.wiz'
_columns = {
'survey_id': fields.many2one('survey', 'Survey', required=True, ondelete='cascade', domain=[('state', '=', 'open')]),
'page_no': fields.integer('Page Number'),
'note': fields.text("Description"),
'page': fields.char('Page Position', size=12),
'transfer': fields.boolean('Page Transfer'),
'store_ans': fields.text('Store Answer'),
'response_id': fields.many2one('survey.response', 'Answer'),
}
_defaults = {
'page_no': -1,
'page': 'next',
'transfer': 1,
'response_id': 0,
'survey_id': lambda self, cr, uid, context: context.get('survey_id', False),
#Setting the default pattern as '{}' as the field is of type text. The field always gets the value in dict format
'store_ans': '{}'
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: