[MERGE] from trunk
authorChristophe Matthieu <chm@openerp.com>
Tue, 23 Apr 2013 15:32:32 +0000 (17:32 +0200)
committerChristophe Matthieu <chm@openerp.com>
Tue, 23 Apr 2013 15:32:32 +0000 (17:32 +0200)
bzr revid: chm@openerp.com-20130423153232-o5wrcg1a6gx36c8i

12 files changed:
1  2 
addons/hr_evaluation/hr_evaluation.py
addons/hr_evaluation/report/hr_evaluation_report.py
addons/hr_evaluation/test/test_hr_evaluation.yml
addons/hr_recruitment/hr_recruitment.py
addons/hr_recruitment/hr_recruitment_view.xml
addons/hr_recruitment/test/recruitment_process.yml
addons/survey/report/survey_analysis_report.py
addons/survey/report/survey_browse_response.py
addons/survey/report/survey_form.py
addons/survey/survey.py
addons/survey/wizard/survey_print_answer.py
addons/survey/wizard/survey_print_statistics.py

@@@ -43,12 -42,10 +43,11 @@@ class hr_evaluation_plan(osv.osv)
          'active': True,
          'month_first': 6,
          'month_next': 12,
 -        'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.account', context=c),
 +        'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'account.account', context=c),
      }
  
- hr_evaluation_plan()
  
 +
  class hr_evaluation_plan_phase(osv.osv):
      _name = "hr_evaluation.plan.phase"
      _description = "Appraisal Plan Phase"
@@@ -99,12 -97,10 +98,11 @@@ Thanks
          '''),
      }
  
- hr_evaluation_plan_phase()
  
 +
  class hr_employee(osv.osv):
      _name = "hr.employee"
 -    _inherit="hr.employee"
 +    _inherit = "hr.employee"
      _columns = {
          '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)."),
@@@ -278,29 -270,24 +276,27 @@@ class hr_evaluation(osv.osv)
                      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)
  
- hr_evaluation()
  
 +
  class survey_request(osv.osv):
 -    _inherit = "survey.request"
 +    _inherit = "survey.response"
      _columns = {
          'is_evaluation': fields.boolean('Is Appraisal?'),
      }
  
- survey_request()
  
 +
  class hr_evaluation_interview(osv.osv):
      _name = 'hr.evaluation.interview'
 -    _inherits = {'survey.request': 'request_id'}
 -    _inherit =  'mail.thread'
 -    _rec_name = 'request_id'
 +    _inherits = {'survey.response': 'response_id'}
 +    _inherit = ['mail.thread', 'ir.needaction_mixin']
 +    _rec_name = 'response_id'
      _description = 'Appraisal Interview'
      _columns = {
 -        'request_id': fields.many2one('survey.request','Request_id', ondelete='cascade', required=True),
 +        'response_id': fields.many2one('survey.response', 'interview_id', ondelete='cascade', required=True),
          'user_to_review_id': fields.many2one('hr.employee', 'Employee to Interview'),
          'evaluation_id': fields.many2one('hr_evaluation.evaluation', 'Appraisal Form'),
 +        'user_id': fields.many2one('res.users', 'Interviewer'),
      }
      _defaults = {
          'is_evaluation': True,
  #
  ##############################################################################
  
- from openerp import pooler, tools
+ import openerp
+ from openerp import tools
  from openerp.report.interface import report_rml
  from openerp.tools import to_xml
 +import lxml
 +from lxml.html.clean import Cleaner
 +cleaner = Cleaner(style=True, links=False, add_nofollow=True, page_structure=True, safe_attrs_only=True)
 +
  
  class survey_form(report_rml):
      def create(self, cr, uid, ids, datas, context):
@@@ -34,9 -34,9 +34,8 @@@ class survey_type(osv.osv)
      _description = 'Survey Type'
      _columns = {
          'name': fields.char("Name", size=128, required=1, translate=True),
 -        'code': fields.char("Code", size=64),
      }
  
  class survey(osv.osv):
      _name = 'survey'
      _description = 'Survey'
              'context': context
          }
  
 -    def edit_survey(self, cr, uid, ids, context=None):
 -        sur_obj = self.read(cr, uid, ids,['title','page_ids'], context=context)
 -        for sur in sur_obj:
 -            name = sur['title']
 -            pages = sur['page_ids']
 -            if not pages:
 -                raise osv.except_osv(_('Warning!'), _('This survey has no question defined. Please define the questions and answers first.'))
 -            context.update({'survey_id': ids[0]})
 +    def action_survey_sent(self, cr, uid, ids, context=None):
 +        '''
 +        This function opens a window to compose an email, with the survey template message loaded by default
 +        '''
 +        self._check_valid(cr, uid, ids, context=context)
 +
 +        survey_browse = self.pool.get('survey').browse(cr, uid, ids, context=context)[0]
 +        if survey_browse.state != "open":
 +            raise osv.except_osv(_('Warning!'), _("You cannot send invitations because the survey is not open."))
 +
 +        assert len(ids) == 1, 'This option should only be used for a single id at a time.'
 +        ir_model_data = self.pool.get('ir.model.data')
 +        try:
 +            template_id = ir_model_data.get_object_reference(cr, uid, 'survey', 'email_template_survey')[1]
 +        except ValueError:
 +            template_id = False
 +        ctx = dict(context)
 +
 +        ctx.update({
 +            'default_model': 'survey',
 +            'default_res_id': ids[0],
 +            'default_use_template': bool(template_id),
 +            'default_template_id': template_id,
 +            'default_composition_mode': 'comment',
 +            'survey_state': survey_browse.state
 +            })
          return {
 +            'type': 'ir.actions.act_window',
              'view_type': 'form',
              'view_mode': 'form',
 -            'res_model': 'survey.question.wiz',
 -            'type': 'ir.actions.act_window',
 +            'res_model': 'survey.mail.compose.message',
              'target': 'new',
 -            'name': name,
 -            'context': context
 +            'context': ctx,
          }
  
--
 -class survey_history(osv.osv):
 -    _name = 'survey.history'
 -    _description = 'Survey History'
 -    _rec_name = 'date'
 -    _columns = {
 -        'survey_id': fields.many2one('survey', 'Survey'),
 -        'user_id': fields.many2one('res.users', 'User', readonly=True),
 -        'date': fields.datetime('Date started', readonly=1),
 -    }
 -    _defaults = {
 -         'date': lambda * a: datetime.datetime.now()
 -    }
 -
  class survey_page(osv.osv):
      _name = 'survey.page'
      _description = 'Survey Pages'