← Back to team overview

openerp-dev-web team mailing list archive

lp:~openerp-dev/openobject-addons/addons-training-imporve-code-ysa into lp:~openobject-training/openobject-addons/training

 

Yogesh(Open ERP) has proposed merging lp:~openerp-dev/openobject-addons/addons-training-imporve-code-ysa into lp:~openobject-training/openobject-addons/training.

Requested reviews:
  Bhumika (OpenERP) (sbh-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/addons-training-imporve-code-ysa/+merge/60061

[IMP] training:- improve code.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/addons-training-imporve-code-ysa/+merge/60061
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/addons-training-imporve-code-ysa.
=== modified file 'training/invoice.py'
--- training/invoice.py	2011-04-07 13:04:11 +0000
+++ training/invoice.py	2011-05-05 13:29:35 +0000
@@ -41,12 +41,13 @@
         if context is None:
             context = {}
         srv = netsvc.LocalService('report.account.invoice')
+        email_obj = self.pool.get('training.email')
         for invoice in self.browse(cr, uid, ids, context=context):
             if invoice.send_to and invoice.type == 'out_invoice':
                 pdf, _r = srv.create(cr, uid, [invoice.id], {}, context=context)
                 if pdf:
                     filename = "Invoice_%s.pdf" % (invoice.name.replace('/', '_'))
-                    sent = self.pool.get('training.email').send_email(cr, uid, 'invoice', 'a', to=invoice.send_to, attachments=[(filename, pdf),], context=context, invoice=invoice)
+                    sent = email_obj.send_email(cr, uid, 'invoice', 'a', to=invoice.send_to, attachments=[(filename, pdf),], context=context, invoice=invoice)
                     invoice.write({'sent_by_mail': sent,
                                    'sent_by_mail_at': time.strftime('%Y-%m-%d %H%M%S'),
                                   }, context=context)

=== modified file 'training/partner.py'
--- training/partner.py	2011-04-07 11:11:57 +0000
+++ training/partner.py	2011-05-05 13:29:35 +0000
@@ -77,8 +77,8 @@
     def _get_function_by_kind(self, cr, uid, kind, context=None):
         proxy = self.pool.get('training.config.contact.function')
         ids = proxy.search(cr, uid, [('kind', '=', kind)], context=context)
-        res = [ obj.function for obj in proxy.browse(cr, uid, ids, context=context) ]
-        if not len(res):
+        result = [ obj.function for obj in proxy.browse(cr, uid, ids, context=context) ]
+        if not len(result):
             raise osv.except_osv(_('Warning'),
                                  _("""Do not forget to configure the contact's function"""))
         return result

=== modified file 'training/training.py'
--- training/training.py	2011-05-02 04:49:56 +0000
+++ training/training.py	2011-05-05 13:29:35 +0000
@@ -111,15 +111,12 @@
     }
 
     def name_get(self, cr, uid, ids, context=None):
-        if not len(ids):
-            return []
-        reads = self.read(cr, uid, ids, ['name','parent_id'], context=context)
         res = []
-        for record in reads:
-            name = record['name']
-            if record['parent_id']:
-                name = record['parent_id'][1]+' / '+name
-            res.append((record['id'], name))
+        for record in self.browse(cr, uid, ids, context):
+            name = record.name
+            if record.parent_id:
+                name = record.parent_id.name + ' / ' + name
+            res.append((record.id, name))
         return res
 
 training_course_category()
@@ -1250,7 +1247,7 @@
         if context is None:
             context = {}
         result = set()
-        for line in self.pool.get('training.subscription.line').browse(cr, 1, ids, context=context):
+        for line in self.pool.get('training.subscription.line').browse(cr, uid, ids, context=context):
             result.add(line.session_id.id)
 
         return list(result)
@@ -1379,7 +1376,7 @@
         'id' : fields.integer('Seance ID', readonly=True),
         'has_shared_seances' : fields.function(_has_shared_seances_compute, method=True, type='boolean',
                                                string="Has Shared Seances", help="Allows to know if the session has a shared seance"),
-        'name' : fields.char('Name', size=64, required=True, select=1),
+        'name' : fields.char('Name', size=64, required=True),
         'state' : fields.selection([('draft', 'Draft'),
                                     ('opened', 'Opened'),
                                     ('opened_confirmed', 'Confirmed'),
@@ -1392,7 +1389,7 @@
         'done' : fields.boolean('Done'),
         'offer_id' : fields.many2one('training.offer', 'Offer', required=True, help="Allows to select a validated offer for the session",
                                      domain="[('state', '=', 'validated')]"),
-        'offer_product_line_id' : fields.related('offer_id', 'product_line_id', type='many2one', relation='training.course_category', select=1, string='Product Line'),
+        'offer_product_line_id' : fields.related('offer_id', 'product_line_id', type='many2one', relation='training.course_category', string='Product Line'),
         'kind' : fields.related('offer_id', 'kind', type='selection', selection=training_offer_kind_compute, string='Kind', readonly=True),
         'catalog_id' : fields.many2one('training.catalog', 'Catalog', help="Allows to select a published catalog" ),
         'seance_ids' : fields.many2many('training.seance', 'training_session_seance_rel', 'session_id', 'seance_id', 'Seances', ondelete='cascade',
@@ -1439,8 +1436,7 @@
         if not ids:
             return False
         obj = self.browse(cr, uid, ids[0], context=context)
-        res = obj.date >= time.strftime('%Y-%m-%d %H:%M:%S')
-        return res
+        return obj.date >= time.strftime('%Y-%m-%d %H:%M:%S')
 
     def _check_date_holiday(self, cr, uid, ids, context=None):
         if context is None:
@@ -1450,8 +1446,7 @@
         obj = self.browse(cr, uid, ids[0], context=context)
         date = time.strftime('%Y-%m-%d', time.strptime(obj.date, '%Y-%m-%d %H:%M:%S'))
 
-        res = not self.pool.get('training.holiday.period').is_in_period(cr, date)
-        return res
+        return not self.pool.get('training.holiday.period').is_in_period(cr, date)
 
     def _check_date_of_seances(self, cr, uid, ids, context=None):
         if context is None:
@@ -2145,25 +2140,25 @@
 
     _columns = {
         'id' : fields.integer('Database ID', readonly=True),
-        'seance_id' : fields.many2one('training.seance', 'Seance', select=True, required=True, readonly=True, ondelete='cascade'),
-        'seance_date' : fields.related('seance_id', 'date', type='datetime', store=True, select=1, string="Seance Date"),
-        'group_id' : fields.related('seance_id', 'group_id', string='Group', type='many2one', relation='training.group', select=1, store=True, readonly=True),
-        'subscription_line_id' : fields.many2one('training.subscription.line', 'Subscription Line', select=True, required=True, readonly=True, ondelete='cascade'),
-        'session_id' : fields.related('subscription_line_id', 'session_id', type='many2one', relation='training.session', select=True, store=True),
+        'seance_id' : fields.many2one('training.seance', 'Seance', required=True, readonly=True, ondelete='cascade'),
+        'seance_date' : fields.related('seance_id', 'date', type='datetime', store=True, string="Seance Date"),
+        'group_id' : fields.related('seance_id', 'group_id', string='Group', type='many2one', relation='training.group', store=True, readonly=True),
+        'subscription_line_id' : fields.many2one('training.subscription.line', 'Subscription Line', required=True, readonly=True, ondelete='cascade'),
+        'session_id' : fields.related('subscription_line_id', 'session_id', type='many2one', relation='training.session', store=True),
         'course_id' : fields.related('seance_id', 'course_id', 'name', type='char', size=64, readonly=True, string="Course"),
         'duration' : fields.related('seance_id', 'duration', string='Duration', type='float', readonly=True, store=True),
-        'kind' : fields.related('seance_id', 'kind', type='selection', selection=[('standard', 'Course')], string='Kind', select=1),
-        'present' : fields.boolean('Present', help="Allows to know if a participant was present or not", select=1),
+        'kind' : fields.related('seance_id', 'kind', type='selection', selection=[('standard', 'Course')], string='Kind'),
+        'present' : fields.boolean('Present', help="Allows to know if a participant was present or not"),
         'subscription_id' : fields.related('subscription_line_id', 'subscription_id', type='many2one', relation='training.subscription', string='Subscription', readonly=True),
         'job_id' : fields.related('subscription_line_id', 'job_id', type='many2one', relation='res.partner.job',
-                                  string='Participant', select=1, readonly=True,
+                                  string='Participant', readonly=True,
                                   store={
                                       'training.participation': (_store_get_own, ['subscription_line_id'], 10),
                                       'training.subscription.line' : (_store_get_sublines, ['job_id'], 9),
                                   }
                                  ),
         'contact_id' : fields.related('subscription_line_id', 'job_id', 'contact_id', type='many2one', relation='res.partner.contact',
-                                      string='Contact', select=1, readonly=True,
+                                      string='Contact', readonly=True,
                                       store={
                                           'training.subscription.line': (_store_get_sublines, None, 10),
                                           'res.partner.job': (_store_get_jobs, ['contact_id'], 12),
@@ -2188,7 +2183,7 @@
 
         'partner_id' : fields.related('subscription_line_id', 'partner_id',
                                       type='many2one', relation='res.partner',
-                                      string='Partner', select=2, readonly=True),
+                                      string='Partner', readonly=True),
         'date' : fields.related('seance_id', 'date', type='datetime', string='Date', select=1, readonly=True, store=True),
         'purchase_ids': fields.many2many('purchase.order.line',
                                          'training_participation_purchase_rel',
@@ -2263,7 +2258,7 @@
         for po_line, (quantity, parts) in products.items():
             # Create purchase order from this po_line ('seance.purchase.line')
             purchase_id = purchase_order_pool.create_from_procurement_line(cr, uid, po_line, quantity, location_id, context=context)
-            purchase = self.pool.get('purchase.order').browse(cr, uid, purchase_id, context=context)
+            purchase = purchase_order_pool.browse(cr, uid, purchase_id, context=context)
             # Then get ids of all create purchase.order.line
             purchase_order_line_ids = [ pol.id for pol in purchase.order_line ]
 
@@ -2429,8 +2424,8 @@
 
     _columns = {
         'id' : fields.integer('Database ID', readonly=True),
-        'is_first_seance' : fields.boolean('First Seance', select=1),
-        'name' : fields.char('Name', size=64, required=True, select=1),
+        'is_first_seance' : fields.boolean('First Seance'),
+        'name' : fields.char('Name', size=64, required=True),
         'session_ids' : fields.many2many('training.session', 'training_session_seance_rel', 'seance_id', 'session_id', 'Sessions', ondelete='cascade'),
         'sessions_type': fields.function(_get_sessions_type, method=True, string='Session(s) Type', type='char', size=32),
         'forced_lecturer' : fields.boolean('Forced Lecturer(s)'),
@@ -2440,12 +2435,12 @@
                                                }, type='selection', selection=[('no', 'No'),('yes','Yes')]),
         'lecturer_note': fields.text('Lecturer Note'),
         'original_session_id' : fields.many2one('training.session', 'Original Session', ondelete='cascade'),
-        'original_offer_id': fields.related('original_session_id', 'offer_id', string="Original Offer", type='many2one', relation='training.offer', select=1),
+        'original_offer_id': fields.related('original_session_id', 'offer_id', string="Original Offer", type='many2one', relation='training.offer'),
         'original_offer_kind': fields.related('original_offer_id','kind', type='selection', selection=training_offer_kind_compute, string='Original Offer Kind', readonly=True),
         'duplicata' : fields.boolean('Duplicata', required=True),
         'duplicated' : fields.boolean('Duplicated', required=True),
         'date' : fields.datetime('Date', required=True, select=1,help="The create date of seance"),
-        'duration' : fields.float('Duration', select=1, help="The duration of the seance"),
+        'duration' : fields.float('Duration', help="The duration of the seance"),
         'participant_ids' : fields.one2many('training.participation', 'seance_id', 'Participants'),
         'group_id' : fields.many2one('training.group', 'Group', help='The group of participants'),
         'state' : fields.selection([('opened', 'Opened'),
@@ -2467,14 +2462,14 @@
         'purchase_line_ids' : fields.one2many('training.seance.purchase_line', 'seance_id', 'Supplier Commands'),
         'min_limit' : fields.integer("Minimum Threshold",help='The Minimum of Participants in Seance'),
         'max_limit' : fields.integer("Maximum Threshold",help='The Maximum of Participants in Seance'),
-        'user_id' : fields.many2one('res.users', 'Responsible', required=True, select=1),
+        'user_id' : fields.many2one('res.users', 'Responsible', required=True),
         'available_seats' : fields.function(_available_seats_compute, method=True, string='Available Seats', type='integer', help='Available seats in Seance'),
         'draft_seats' : fields.function(_draft_seats_compute, method=True, string='Draft Subscriptions', type='integer', help='Draft Subscriptions'),
         'presence_form' : fields.selection([('yes', 'Yes'),
                                             ('no', 'No')],
                                            'Presence Form Received', help='The training center has received the presence list from the lecturer'),
         'shared' : fields.function(_shared_compute, method=True, string='Shared', type='boolean', help="Allows to know if the seance is linked with a lot of sessions"),
-        'kind': fields.selection(training_course_kind_compute, 'Kind', required=True, select=1),
+        'kind': fields.selection(training_course_kind_compute, 'Kind', required=True),
         'master_id' : fields.many2one('training.seance', 'Master Seance'),
         'participant_count' : fields.function(_participant_count, method=True, type="integer",
                                               string="Confirmed Seats", help="Confirmed Subscriptions for this seance"),
@@ -2492,8 +2487,7 @@
         if  not ids:
             return False
         obj = self.browse(cr, uid, ids[0])
-        res = obj.date > time.strftime('%Y-%m-%d %H:%M:%S')
-        return res
+        return obj.date > time.strftime('%Y-%m-%d %H:%M:%S')
 
     def _check_date_holiday(self, cr, uid, ids, context=None):
         if not ids:
@@ -2897,6 +2891,7 @@
                 and not subr.partner_id.notif_participant:
                 raise osv.except_osv(_('Error'),
                         _('No notification mode (HR and/or Participant) for this partner "%s", please choose at least one') % (subr.partner_id.name))
+        return True
 
     def _notification_text_compute_one(self, cr, uid, partner_id, context=None):
         if context is None:
@@ -2924,14 +2919,14 @@
         return self.pool.get('training.subscription').search(cr, uid, [('partner_id', 'in', ids),('state', '=', 'draft')], context=context)
 
     _columns = {
-        'name' : fields.char('Reference', size=32, required=True, select=1, readonly=True, help='The unique identifier is generated by the system (customizable)'),
-        'create_date' : fields.datetime('Creation Date', select=True, readonly=True),
-        'state' : fields.selection([('draft', 'Draft'), ('confirmed','Request Sent'), ('cancelled','Cancelled'), ('done', 'Done') ], 'State', readonly=True, required=True, select=1,help='The state of the Subscription'),
-        'partner_id' : fields.many2one('res.partner', 'Partner', select=1, required=True,help='The Subscription name', **WRITABLE_ONLY_IN_DRAFT),
+        'name' : fields.char('Reference', size=32, required=True, readonly=True, help='The unique identifier is generated by the system (customizable)'),
+        'create_date' : fields.datetime('Creation Date', readonly=True),
+        'state' : fields.selection([('draft', 'Draft'), ('confirmed','Request Sent'), ('cancelled','Cancelled'), ('done', 'Done') ], 'State', readonly=True, required=True, help='The state of the Subscription'),
+        'partner_id' : fields.many2one('res.partner', 'Partner', required=True,help='The Subscription name', **WRITABLE_ONLY_IN_DRAFT),
         'partner_rh_email' : fields.char('Subscription Contact', size=64, **WRITABLE_ONLY_IN_DRAFT),
-        'address_id' : fields.many2one('res.partner.address', 'Invoice Address', select=1, required=True,help='The Subscription invoice address', **WRITABLE_ONLY_IN_DRAFT),
+        'address_id' : fields.many2one('res.partner.address', 'Invoice Address', required=True,help='The Subscription invoice address', **WRITABLE_ONLY_IN_DRAFT),
         'subscription_line_ids' : fields.one2many('training.subscription.line', 'subscription_id',
-                                                  'Subscription Lines', select=1, **WRITABLE_ONLY_IN_DRAFT),
+                                                  'Subscription Lines', **WRITABLE_ONLY_IN_DRAFT),
 
         'pricelist_id' : fields.related('partner_id', 'property_product_pricelist', string='Pricelist', type='many2one', relation='product.pricelist', readonly=True),
         'payment_term_id' : fields.many2one('account.payment.term', 'Payment Term', **WRITABLE_ONLY_IN_DRAFT),
@@ -2951,7 +2946,7 @@
     def create(self, cr, uid, vals, context):
         if context is None:
             context = {}
-        if vals.get('name', '/')=='/':
+        if vals.get('name', '/') == '/':
             vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'training.subscription')
         if not vals.get('notification_text', '') and vals.get('partner_id', None):
             vals['notification_text'] = self._notification_text_compute_one(cr, uid, vals['partner_id'], context=context)
@@ -3036,12 +3031,12 @@
         workflow = netsvc.LocalService('workflow')
         sl_proxy = self.pool.get('training.subscription.line')
         sl_ids = []
+        stack_holder_pool = self.pool.get('training.participation.stakeholder')
         for subscription in self.browse(cr, uid, ids, context=context):
             if subscription.state == 'draft':
                 for sl in subscription.subscription_line_ids:
                     workflow.trg_validate(uid, sl._name, sl.id, 'signal_cancel', cr)
             elif subscription.state == 'confirmed':
-                sh = self.pool.get('training.participation.stakeholder')
                 for sl in subscription.subscription_line_ids:
                     if sl.state == 'draft':
                         sl_ids.append(sl.id)
@@ -3053,7 +3048,7 @@
                             if contact.state == 'confirmed':
                                 objs.setdefault(contact.id, {}).setdefault('seances', []).append(seance)
 
-                    sh.send_email(cr, uid, objs.keys(), 'sub_cancelled', sl.session_id, context, objs)
+                    stack_holder_pool.send_email(cr, uid, objs.keys(), 'sub_cancelled', sl.session_id, context, objs)
                     sl_ids.append(sl.id)
 
         sl_proxy.action_workflow_invoice_and_send_emails(cr, uid, sl_ids, context)
@@ -3152,12 +3147,12 @@
         return subl_ids
 
     _columns = {
-        'name' : fields.char('Reference', size=64, required=True, readonly=True, select=1),
-        'create_uid': fields.many2one('res.users', 'Created by', readonly=True, select=1),
+        'name' : fields.char('Reference', size=64, required=True, readonly=True),
+        'create_uid': fields.many2one('res.users', 'Created by', readonly=True),
         'create_date': fields.datetime('Created at', readonly=True),
-        'validation_uid': fields.many2one('res.users', 'Validated by', readonly=True, select=2),
+        'validation_uid': fields.many2one('res.users', 'Validated by', readonly=True),
         'validation_date': fields.datetime('Validated at', readonly=True),
-        'cancellation_uid': fields.many2one('res.users', 'Cancelled by', readonly=True, select=2),
+        'cancellation_uid': fields.many2one('res.users', 'Cancelled by', readonly=True),
         'cancellation_date': fields.datetime('Cancelled at', readonly=True),
         'subscription_id' : fields.many2one('training.subscription', 'Subscription', required=True, ondelete='cascade',
                                             select=1,help='Select the subscription', **WRITABLE_ONLY_IN_DRAFT),
@@ -3183,18 +3178,18 @@
                                             ('inprogress', 'In Progress'),
                                             ('closed', 'Closed'),
                                             ('cancelled', 'Cancelled'),
-                                        ], string='Session State', select=2),
-        'session_date': fields.related('session_id', 'date', readonly=True, type="datetime", string="Session Date", select=2),
-        'offer_id' : fields.related('session_id', 'offer_id', type='many2one', relation='training.offer', string='Offer', select=1, store=True, readonly=True),
-        'offer_product_line_id' : fields.related('session_id', 'offer_id', 'product_line_id', type='many2one', relation='training.course_category', select=1, string='Product Line'),
+                                        ], string='Session State'),
+        'session_date': fields.related('session_id', 'date', readonly=True, type="datetime", string="Session Date"),
+        'offer_id' : fields.related('session_id', 'offer_id', type='many2one', relation='training.offer', string='Offer', store=True, readonly=True),
+        'offer_product_line_id' : fields.related('session_id', 'offer_id', 'product_line_id', type='many2one', relation='training.course_category', string='Product Line'),
         'price' : fields.float('Sales Price', digits_compute=dp.get_precision('Account'), required=True, write=['base.group_user'], **WRITABLE_ONLY_IN_DRAFT),
         'partner_id' : fields.related('subscription_id', 'partner_id', type='many2one', store=True,
-                                      relation='res.partner', string="Partner", select=1, readonly=True),
+                                      relation='res.partner', string="Partner", readonly=True),
         'job_id' : fields.many2one('res.partner.job', 'Participant', select=1, required=True,
                                    domain="[('name', '=', parent.partner_id),('state', '=', 'current')]",
                                    help='Select the Participant', **WRITABLE_ONLY_IN_DRAFT),
         'job_email' : fields.char('Participant Email', size=64, help='Participant Email Address', **WRITABLE_ONLY_IN_DRAFT),
-        'contact_id' : fields.related('job_id', 'contact_id', type='many2one', relation='res.partner.contact', string='Contact', select=1, readonly=True,
+        'contact_id' : fields.related('job_id', 'contact_id', type='many2one', relation='res.partner.contact', string='Contact', readonly=True,
                                         store = {
                                             'training.subscription.line': (_store_get_own, ['job_id'], 9),
                                             'res.partner.job': (_store_get_jobs, ['contact_id'], 10),
@@ -3214,7 +3209,7 @@
         'date' : fields.related('session_id', 'date', type='datetime', string='Date', readonly=True),
         'available_seats' : fields.related('session_id', 'available_seats', type='integer', readonly=True, string='Available Seats'),
         'draft_subscriptions' : fields.related('session_id', 'draft_subscriptions', type='integer', readonly=True, string='Draft Subscriptions'),
-        'has_certificate' : fields.boolean('Has Certificate', readonly=True, select=2),
+        'has_certificate' : fields.boolean('Has Certificate', readonly=True),
         'reason_cancellation' : fields.text('Reason of Cancellation', readonly=True),
         'theoritical_disponibility' : fields.function(_theoritical_disponibility_compute, method=True, string='Theoritical Disponibility', type='integer'),
         'max_limit' : fields.related('session_id', 'max_limit', string='Maximum Threshold', type='integer', store=True, readonly=True),
@@ -3436,6 +3431,7 @@
         invoice_proxy = self.pool.get('account.invoice')
         invoice_line_proxy = self.pool.get('account.invoice.line')
         seance_proxy = self.pool.get('training.seance')
+        fpos_proxy = self.pool.get('account.fiscal.position')
 
         invoices = {}
 
@@ -3464,7 +3460,6 @@
             }
             invoice_id = invoice_proxy.create(cr, uid, invoice_values, context=context)
 
-            fpos_proxy = self.pool.get('account.fiscal.position')
             fpos = invoice_values['fiscal_position'] and fpos_proxy.browse(cr, uid, [invoice_values['fiscal_position']])[0] or False
 
             il_proxy = self.pool.get('account.invoice.line')
@@ -3687,6 +3682,7 @@
         proxy_adist = self.pool.get('account.analytic.plan.instance')
         proxy_adistline = self.pool.get('account.analytic.plan.instance.line')
         workflow = netsvc.LocalService('workflow')
+        fpos_proxy = self.pool.get('account.fiscal.position')
 
         if not context:
             context = {}
@@ -3726,7 +3722,6 @@
 
             invoice_id = proxy_invoice.create(cr, uid, invoice_values)
 
-            fpos_proxy = self.pool.get('account.fiscal.position')
             fpos = invoice_values['fiscal_position'] and fpos_proxy.browse(cr, uid, invoice_values['fiscal_position']) or False
 
             global_courses = self._get_courses(cr, uid, [sl.id for sl in subscription_lines], context=context)
@@ -4221,11 +4216,11 @@
         'request_session_id': fields.related('request_id', 'session_id', type='many2one', relation='training.session', readonly=True),
         'seance_id' : fields.many2one('training.seance', 'Seance', required=True, help='Select the Seance', ondelete='cascade',
                                       domain="[('date', '>=', time.strftime('%Y-%m-%d'))]"),
-        'group_id' : fields.related('seance_id', 'group_id', type='many2one', relation='training.group', readonly=True, select=1, store=True, string='Group'),
+        'group_id' : fields.related('seance_id', 'group_id', type='many2one', relation='training.group', readonly=True, store=True, string='Group'),
         'job_id': fields.related('request_id', 'job_id', string="Contact", type='many2one', relation='res.partner.job', readonly=True),
-        'contact_id' : fields.related('job_id', 'contact_id', type='many2one', relation='res.partner.contact', readonly=True, store=True, select=2),
-        'partner_id' : fields.related('job_id', 'name', type='many2one', relation='res.partner', readonly=True, store=True, string="Partner", select=2),
-        'date' : fields.related('seance_id', 'date', type='datetime', string='Date', readonly=True, select=1, store=True),
+        'contact_id' : fields.related('job_id', 'contact_id', type='many2one', relation='res.partner.contact', readonly=True, store=True),
+        'partner_id' : fields.related('job_id', 'name', type='many2one', relation='res.partner', readonly=True, store=True, string="Partner"),
+        'date' : fields.related('seance_id', 'date', type='datetime', string='Date', readonly=True, store=True),
         'kind' : fields.related('seance_id', 'kind', type='selection', selection=[('standard', 'Course')], string='Kind', readonly=True),
         'course_id' : fields.related('seance_id', 'course_id', type='many2one', relation='training.course', string='Course', readonly=True),
         'state' : fields.selection([('draft', 'Draft'),
@@ -4249,7 +4244,7 @@
         'manual_price': fields.boolean('Manual Price'),
         'forced_price': fields.float('Renumeration', required=True, digits_compute=dp.get_precision('Account')),
         'price' : fields.function(_get_price, method=True, string='Remuneration', type='float', digits_compute=dp.get_precision('Account'), store=True),
-        'product_id' : fields.many2one('product.product', 'Product', select=2),
+        'product_id' : fields.many2one('product.product', 'Product'),
     }
 
     _defaults = {
@@ -4263,7 +4258,6 @@
     def create_purchase_order_line(self, cr, uid, ids, po_id, context=None):
         if context is None:
             context = {}
-        po_proxy = self.pool.get('purchase.order')
         pol_proxy = self.pool.get('purchase.order.line')
         workflow = netsvc.LocalService('workflow')
 
@@ -4569,13 +4563,20 @@
         if context is None:
             context = {}
         purchase_id = False
+        partner_pool = self.pool.get('res.partner')
+        product_pricelist_pool = self.pool.get('product.pricelist')
+        product_pool = product=self.pool.get('product.product')
+        anlytic_journal_pool = self.pool.get('account.analytic.journal')
+        anlytic_acc_pool = self.pool.get('account.analytic.account')
+        ac_plan_inst_pool = self.pool.get('account.analytic.plan.instance')
+
         company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
         for po_line in self.pool.get('training.seance.purchase_line').browse(cr, uid, po_line_ids, context=context):
             if not po_line.product_id.seller_ids:
                 raise osv.except_osv(_('Error'), _("Product %s doesn't have any supplier defined") % (po_line.product_id.name))
             partner = po_line.product_id.seller_ids[0].name
             partner_id = partner.id
-            address_id = self.pool.get('res.partner').address_get(cr, uid, [partner_id], ['delivery'])['delivery']
+            address_id = partner_pool.address_get(cr, uid, [partner_id], ['delivery'])['delivery']
             pricelist_id = partner.property_product_pricelist_purchase.id
 
             uom_id = po_line.product_id.uom_po_id.id
@@ -4584,7 +4585,7 @@
             if po_line.product_id.seller_ids[0].qty:
                 qty=max(qty,po_line.product_id.seller_ids[0].qty)
 
-            price = self.pool.get('product.pricelist').price_get(cr, uid, [pricelist_id], po_line.product_id.id, qty, False, {'uom': uom_id})[pricelist_id]
+            price = product_pricelist_pool.price_get(cr, uid, [pricelist_id], po_line.product_id.id, qty, False, {'uom': uom_id})[pricelist_id]
 
             newdate = mx.DateTime.strptime(po_line.seance_id.date, '%Y-%m-%d %H:%M:%S')
             newdate = newdate - mx.DateTime.RelativeDateTime(days=company.po_lead)
@@ -4593,7 +4594,7 @@
             #Passing partner_id to context for purchase order line integrity of Line name
             context.update({'lang':partner.lang, 'partner_id':partner_id})
 
-            product=self.pool.get('product.product').browse(cr, uid, po_line.product_id.id, context=context)
+            product_pool.browse(cr, uid, po_line.product_id.id, context=context)
 
 
             line = {
@@ -4610,14 +4611,14 @@
             }
 
             if po_line.course_id:
-                journal_ids = self.pool.get('account.analytic.journal').search(cr, uid, [('type','=','general'),('active','=',True)])
+                journal_ids = anlytic_journal_pool.search(cr, uid, [('type','=','general'),('active','=',True)])
                 if journal_ids:
                     journal_id = journal_ids[0]
 
                     ana_acct_id = po_line._get_analytic_account_id()
-                    ana_acct = self.pool.get('account.analytic.account').browse(cr, uid, ana_acct_id, context=context)
+                    ana_acct = anlytic_acc_pool.browse(cr, uid, ana_acct_id, context=context)
 
-                    plan_id = self.pool.get('account.analytic.plan.instance').create(cr, uid, {
+                    plan_id = ac_plan_inst_pool.create(cr, uid, {
                         'name': ana_acct.name,
                         'journal_id': journal_id,
                         'account_ids': [(0, 0, {'analytic_account_id': ana_acct.id, 'rate': 100.0})],
@@ -4689,7 +4690,7 @@
     _columns = {
         'seance_id_int' : fields.related('seance_id', 'id', type='integer', readonly=True, string="Seance ID"),
         'seance_id': fields.many2one('training.seance', 'Seance'),
-        'seance_date': fields.related('seance_id', 'date', type='datetime', string='Seance Date', readonly=True, store=True, select=1),
+        'seance_date': fields.related('seance_id', 'date', type='datetime', string='Seance Date', readonly=True, store=True),
         'course_id': fields.many2one('training.course', 'Course'),
         'seance_purchase_line_id': fields.many2one('training.seance.purchase_line', 'Purchase Line'),
         'state': fields.related('order_id', 'state',
@@ -4742,8 +4743,8 @@
     _inherit = 'res.lang'
 
     _columns = {
-        'code' : fields.char('Code', size=5, required=True, select=1),
-        'name' : fields.char('Name', size=64, required=True, select=1),
+        'code' : fields.char('Code', size=5, required=True),
+        'name' : fields.char('Name', size=64, required=True),
     }
 
 res_lang()

=== modified file 'training/training_content_review.py'
--- training/training_content_review.py	2011-04-07 11:11:57 +0000
+++ training/training_content_review.py	2011-05-05 13:29:35 +0000
@@ -345,7 +345,7 @@
 
         if values:
             self.pool.get('training.content.review').write(cr, uid, [ active_id ], { 'line_ids': values})
-        return {}
+        return {'type': 'ir.actions.act_window_close'}
 
     _columns = {
         'course_id': fields.many2one('training.course', 'Course',),

=== modified file 'training/training_email.py'
--- training/training_email.py	2011-03-21 12:26:03 +0000
+++ training/training_email.py	2011-05-05 13:29:35 +0000
@@ -69,6 +69,7 @@
     def action_send(self, cr, uid, ids, context=None):
         if context is None:
             context = {}
+        email_obj = self.pool.get('training.email')
         for obj in self.browse(cr, uid, ids, context=context):
             objects = eval(obj.objects)
 
@@ -83,16 +84,16 @@
             session = oo_objects.pop('session', None)
             seance = oo_objects.pop('seance', None)
             stylegroup = oo_objects.pop('stylegroup', None)
-            self.pool.get('training.email').send_email(cr, uid,
-                                                       trigger=info_email['trigger'],
-                                                       target=info_email['target'],
-                                                       to=info_email['to'],
-                                                       context=objects['ctx'],
-                                                       session=session,
-                                                       seance=seance,
-                                                       stylegroup=stylegroup,
-                                                       **oo_objects
-                                                      )
+            email_obj.send_email(cr, uid,
+                                       trigger=info_email['trigger'],
+                                       target=info_email['target'],
+                                       to=info_email['to'],
+                                       context=objects['ctx'],
+                                       session=session,
+                                       seance=seance,
+                                       stylegroup=stylegroup,
+                                       **oo_objects
+                                      )
 
             obj.unlink(context=context)
 

=== modified file 'training_exam/__openerp__.py'
--- training_exam/__openerp__.py	2011-04-29 12:26:35 +0000
+++ training_exam/__openerp__.py	2011-05-05 13:29:35 +0000
@@ -36,8 +36,8 @@
         'training_exam_data.xml',
     ],
     'demo_xml' : [
-        'data/training.exam.question.csv',
-        'data/training.exam.question.answer.csv',
+#        'data/training.exam.question.csv',
+#        'data/training.exam.question.answer.csv',
         'training_exam_demo.xml',
     ],
     'update_xml' : [


Follow ups