From 89a27bf5b6ff958dc6d0bc816b700e5b2d3f5bdd Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Thu, 16 Aug 2012 16:44:03 +0200 Subject: [PATCH 1/3] [IMP] hr_recruitment, project: better access rules for categories bzr revid: abo@openerp.com-20120816144403-4nd2bbiq5dfnwc2i --- addons/hr_recruitment/hr_recruitment.py | 23 +++++++++++++------ addons/hr_recruitment/hr_recruitment_view.xml | 3 +++ .../security/ir.model.access.csv | 2 ++ addons/project/security/ir.model.access.csv | 2 ++ 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 0ace2574d65..81a7ae6129e 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -198,6 +198,7 @@ class hr_applicant(base_stage, osv.Model): When the case is over, the state is set to \'Done\'.\ If the case needs to be reviewed then the state is \ set to \'Pending\'.'), + 'categ_ids': fields.many2many('hr.applicant_category', string='Categories'), 'company_id': fields.many2one('res.company', 'Company'), 'user_id': fields.many2one('res.users', 'Responsible'), # Applicant Columns @@ -350,7 +351,7 @@ class hr_applicant(base_stage, osv.Model): if isinstance(ids, (str, int, long)): ids = [ids] if update_vals is None: vals = {} - + update_vals.update({ 'description': msg.get('body'), 'email_from': msg.get('from'), @@ -510,7 +511,7 @@ class hr_job(osv.osv): _inherits = {'mail.alias': 'alias_id'} _columns = { 'survey_id': fields.many2one('survey', 'Interview Form', help="Choose an interview form for this job position and you will be able to print/answer this interview from all applicants who apply for this job"), - 'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True, + 'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True, help="Email alias for this job position. New emails will automatically " "create new applicants for this job position."), } @@ -521,13 +522,13 @@ class hr_job(osv.osv): def _auto_init(self, cr, context=None): """Installation hook to create aliases for all jobs and avoid constraint errors.""" - - # disable the unique alias_id not null constraint, to avoid spurious warning during + + # disable the unique alias_id not null constraint, to avoid spurious warning during # super.auto_init. We'll reinstall it afterwards. self._columns['alias_id'].required = False super(hr_job,self)._auto_init(cr, context=context) - + registry = RegistryManager.get(cr.dbname) mail_alias = registry.get('mail.alias') hr_jobs = registry.get('hr.job') @@ -555,7 +556,7 @@ class hr_job(osv.osv): mail_alias = self.pool.get('mail.alias') if not vals.get('alias_id'): vals.pop('alias_name', None) # prevent errors during copy() - alias_id = mail_alias.create_unique_alias(cr, uid, + alias_id = mail_alias.create_unique_alias(cr, uid, # Using '+' allows using subaddressing for those who don't # have a catchall domain setup. {'alias_name': 'jobs+'+vals['name']}, @@ -573,7 +574,7 @@ class hr_job(osv.osv): res = super(hr_job, self).unlink(cr, uid, ids, context=context) mail_alias.unlink(cr, uid, alias_ids, context=context) return res - + def action_print_survey(self, cr, uid, ids, context=None): if context is None: context = {} @@ -591,4 +592,12 @@ class hr_job(osv.osv): 'nodestroy':True, } +class applicant_category(osv.osv): + """ Category of applicant """ + _name = "hr.applicant_category" + _description = "Category of applicant" + _columns = { + 'name': fields.char('Name', size=64, required=True, translate=True), + } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 0e74473f853..a74707e9ca0 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -176,6 +176,9 @@ + + + diff --git a/addons/hr_recruitment/security/ir.model.access.csv b/addons/hr_recruitment/security/ir.model.access.csv index 8b029c9324a..086e63e542b 100644 --- a/addons/hr_recruitment/security/ir.model.access.csv +++ b/addons/hr_recruitment/security/ir.model.access.csv @@ -8,3 +8,5 @@ access_survey_hr_user,survey.hr.user,survey.model_survey,base.group_hr_user,1,1, access_crm_meeting_hruser,crm.meeting.hruser,base_calendar.model_crm_meeting,base.group_hr_user,1,1,1,1 access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,base.group_hr_user,1,1,1,1 access_hr_recruitment_source_all,hr.recruitment.source,model_hr_recruitment_source,,1,0,0,0 +access_hr_applicant_category,hr.applicant_category,model_hr_applicant_category,,1,0,0,0 +access_hr_applicant_category_manager,hr.applicant_category,model_hr_applicant_category,base.group_hr_manager,1,1,1,1 diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv index 3f79cfee3de..d9f6cb9d2f6 100644 --- a/addons/project/security/ir.model.access.csv +++ b/addons/project/security/ir.model.access.csv @@ -18,3 +18,5 @@ access_account_analytic_line_project,account.analytic.line project,analytic.mode access_project_task_history,project.task.history project,project.model_project_task_history,project.group_project_user,1,1,1,0 access_project_task_history_cumulative,project.task.history project,project.model_project_task_history_cumulative,project.group_project_manager,1,0,0,0 access_resource_calendar,project.resource_calendar manager,resource.model_resource_calendar,project.group_project_manager,1,0,0,0 +access_project_category,project.project_category,model_project_category,,1,0,0,0 +access_project_category_manager,project.project_category,model_project_category,project.group_project_manager,1,1,1,1 From 18e8d506e7e48b70e5cc20cc144f54f955d0ec39 Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Thu, 16 Aug 2012 17:11:48 +0200 Subject: [PATCH 2/3] [IMP] hr_recruitment: add the tags to the kanban view bzr revid: abo@openerp.com-20120816151148-ymqe4mreppwk72lh --- addons/hr_recruitment/__openerp__.py | 3 +- addons/hr_recruitment/hr_recruitment_view.xml | 8 +++++ .../static/src/js/hr_recruitment.js | 35 +++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 addons/hr_recruitment/static/src/js/hr_recruitment.js diff --git a/addons/hr_recruitment/__openerp__.py b/addons/hr_recruitment/__openerp__.py index 0de2eb5c94e..f9ae722c438 100644 --- a/addons/hr_recruitment/__openerp__.py +++ b/addons/hr_recruitment/__openerp__.py @@ -57,13 +57,14 @@ system to store and search in your CV base. 'board_hr_recruitment_statistical_view.xml', 'hr_recruitment_installer_view.xml', 'res_config_view.xml', - ], + ], 'init_xml': [ 'hr_recruitment_data.xml' ], 'demo_xml': [ 'hr_recruitment_demo.yml', ], + 'js': ['static/src/js/hr_recruitment.js'], 'test':[ 'test/recruitment_process.yml', ], diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index a74707e9ca0..d896d522d97 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -267,6 +267,7 @@ +
    @@ -311,6 +312,13 @@ +
    diff --git a/addons/hr_recruitment/static/src/js/hr_recruitment.js b/addons/hr_recruitment/static/src/js/hr_recruitment.js new file mode 100644 index 00000000000..5a2d6bd92b4 --- /dev/null +++ b/addons/hr_recruitment/static/src/js/hr_recruitment.js @@ -0,0 +1,35 @@ +openerp.hr_recruitment = function(openerp) { + openerp.web_kanban.KanbanView.include({ + applicant_display_categ_names: function() { + /* + * Set proper names to applicant categories. + * In kanban views, many2many fields only return a list of ids. + * Therefore, we have to fetch the matching data by ourselves. + */ + var self = this; + var categ_ids = []; + + // Collect categories ids + self.$element.find('span[data-categ_id]').each(function() { + categ_ids.push($(this).data('categ_id')); + }); + + // Find their matching names + var dataset = new openerp.web.DataSetSearch(self, 'hr.applicant_category', self.session.context, [['id', 'in', _.uniq(categ_ids)]]); + dataset.read_slice(['id', 'name']).then(function(result) { + _.each(result, function(v, k) { + // Set the proper value in the DOM and display the element + self.$element.find('span[data-categ_id=' + v.id + ']').text(v.name); + }); + }); + }, + on_groups_started: function() { + var self = this; + self._super.apply(self, arguments); + + if (self.dataset.model === 'hr.applicant') { + self.applicant_display_categ_names(); + } + } + }); +}; From 5d0f5d7c84757081696c7216881895f7f7a502dd Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Thu, 16 Aug 2012 17:31:54 +0200 Subject: [PATCH 3/3] [IMP] portal, hr_recruitment, project: improve descriptor files bzr revid: abo@openerp.com-20120816153154-2k1wazvhnqfrcd7i --- addons/hr_recruitment/__openerp__.py | 19 ++++----- addons/portal/__openerp__.py | 12 ++++-- addons/project/__openerp__.py | 62 +++++++++++++++++----------- 3 files changed, 55 insertions(+), 38 deletions(-) diff --git a/addons/hr_recruitment/__openerp__.py b/addons/hr_recruitment/__openerp__.py index f9ae722c438..1a6abbef976 100644 --- a/addons/hr_recruitment/__openerp__.py +++ b/addons/hr_recruitment/__openerp__.py @@ -19,12 +19,13 @@ # along with this program. If not, see . # ############################################################################## + { 'name': 'Recruitment Process', 'version': '1.0', 'category': 'Human Resources', - "sequence": 24, - "summary": "Recruitment Process, Job Descriptions", + 'sequence': 24, + 'summary': 'Recruitment Process, Job Descriptions', 'description': """ Manages job positions and the recruitment process. ================================================== @@ -46,7 +47,7 @@ system to store and search in your CV base. 'base_calendar', 'fetchmail', ], - 'update_xml': [ + 'data': [ 'wizard/hr_recruitment_employee_hired.xml', 'wizard/hr_recruitment_create_partner_job_view.xml', 'hr_recruitment_view.xml', @@ -57,20 +58,18 @@ system to store and search in your CV base. 'board_hr_recruitment_statistical_view.xml', 'hr_recruitment_installer_view.xml', 'res_config_view.xml', - ], - 'init_xml': [ 'hr_recruitment_data.xml' ], - 'demo_xml': [ + 'demo': [ 'hr_recruitment_demo.yml', ], 'js': ['static/src/js/hr_recruitment.js'], - 'test':[ - 'test/recruitment_process.yml', - ], + 'test': [ + 'test/recruitment_process.yml', + ], 'installable': True, 'auto_install': False, - 'certificate' : '001073437025460275621', + 'certificate': '001073437025460275621', 'application': True, } diff --git a/addons/portal/__openerp__.py b/addons/portal/__openerp__.py index 6669efbcf77..283e007a598 100644 --- a/addons/portal/__openerp__.py +++ b/addons/portal/__openerp__.py @@ -20,10 +20,14 @@ ############################################################################## { - 'name' : "Portal", - 'version' : "1.0", - 'depends' : ["base", "share", "auth_anonymous"], - 'author' : "OpenERP SA", + 'name' : 'Portal', + 'version' : '1.0', + 'depends' : [ + 'base', + 'share', + 'auth_anonymous' + ], + 'author' : 'OpenERP SA', 'category': 'Portal', 'description': """ Customize access to your OpenERP database to external users by creating portals. diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py index aa523b438c7..a65497c311e 100644 --- a/addons/project/__openerp__.py +++ b/addons/project/__openerp__.py @@ -19,18 +19,33 @@ # ############################################################################## - { - "name": "Project Management", - "version": "1.1", - "author": "OpenERP SA", - "website": "http://www.openerp.com", - "category": "Project Management", - "sequence": 8, - "summary": "Projects, Tasks", - "images": ["images/gantt.png", "images/project_dashboard.jpeg","images/project_task_tree.jpeg","images/project_task.jpeg","images/project.jpeg","images/task_analysis.jpeg"], - "depends": ["base_setup", "base_status", "product", "analytic", "board", "mail", "resource","web_kanban"], - "description": """ + 'name': 'Project Management', + 'version': '1.1', + 'author': 'OpenERP SA', + 'website': 'http://www.openerp.com', + 'category': 'Project Management', + 'sequence': 8, + 'summary': 'Projects, Tasks', + 'images': [ + 'images/gantt.png', + 'images/project_dashboard.jpeg', + 'images/project_task_tree.jpeg', + 'images/project_task.jpeg', + 'images/project.jpeg', + 'images/task_analysis.jpeg' + ], + 'depends': [ + 'base_setup', + 'base_status', + 'product', + 'analytic', + 'board', + 'mail', + 'resource', + 'web_kanban' + ], + 'description': """ Project Management module tracks multi-level projects, tasks, work done on tasks. ================================================================================= @@ -41,22 +56,21 @@ Dashboard for project management that includes: * List of My Open Tasks * Graph of My Remaining Hours by Project """, - "init_xml": [], - "update_xml": [ - "security/project_security.xml", - "wizard/project_task_delegate_view.xml", - "wizard/project_task_reevaluate_view.xml", - "security/ir.model.access.csv", - "project_data.xml", - "project_view.xml", - "process/task_process.xml", - "res_partner_view.xml", - "report/project_report_view.xml", + 'data': [ + 'security/project_security.xml', + 'wizard/project_task_delegate_view.xml', + 'wizard/project_task_reevaluate_view.xml', + 'security/ir.model.access.csv', + 'project_data.xml', + 'project_view.xml', + 'process/task_process.xml', + 'res_partner_view.xml', + 'report/project_report_view.xml', 'report/project_cumulative.xml', - "board_project_view.xml", + 'board_project_view.xml', 'res_config_view.xml', ], - 'demo_xml': [ + 'demo': [ 'project_demo.xml', ], 'test':[