[MERGE] forward port of branch saas-3 up to revid 9380 chs@openerp.com-20140407144439...
authorChristophe Simonis <chs@openerp.com>
Mon, 7 Apr 2014 16:33:18 +0000 (18:33 +0200)
committerChristophe Simonis <chs@openerp.com>
Mon, 7 Apr 2014 16:33:18 +0000 (18:33 +0200)
bzr revid: chs@openerp.com-20140407163318-hh3jwfkj3o2c83lk

18 files changed:
1  2 
addons/account_voucher/account_voucher_view.xml
addons/calendar/calendar_data.xml
addons/crm/crm_lead.py
addons/hw_escpos/controllers/main.py
addons/hw_scanner/controllers/main.py
addons/mrp/__openerp__.py
addons/point_of_sale/point_of_sale.py
addons/project/project.py
addons/project_issue/project_issue.py
addons/sale/sale.py
addons/share/res_users.py
addons/website/models/ir_http.py
addons/website/models/ir_qweb.py
addons/website_mail/models/mail_message.py
addons/website_sale/controllers/main.py
addons/website_sale/models/sale_order.py
addons/website_sale/views/website_sale.xml
addons/website_sale_delivery/controllers/main.py

Simple merge
Simple merge
Simple merge
Simple merge
@@@ -69,15 -69,11 +69,13 @@@ Dashboard / Reports for MRP will includ
          'process/service_product_process.xml',
          'process/procurement_process.xml',
          'report/mrp_report_view.xml',
 -        'report/mrp_production_order_view.xml',
          'board_manufacturing_view.xml',
          'res_config_view.xml',
 +
 +        'views/report_mrporder.xml',
 +        'views/report_mrpbomstructure.xml',
      ],
      'demo': ['mrp_demo.xml'],
-     #TODO: This yml tests are needed to be completely reviewed again because the product wood panel is removed in product demo as it does not suit for new demo context of computer and consultant company
-     # so the ymls are too complex to change at this stage
      'test': [
           'test/bom_with_service_type_product.yml',
           'test/mrp_users.yml',
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -38,25 -24,31 +24,49 @@@ from openerp import SUPERUSER_I
  class res_users(osv.osv):
      _name = 'res.users'
      _inherit = 'res.users'
 +
 +    def _is_share(self, cr, uid, ids, name, args, context=None):
 +        res = {}
 +        for user in self.browse(cr, uid, ids, context=context):
 +            res[user.id] = not self.has_group(cr, user.id, 'base.group_user')
 +        return res
 +
 +    def _get_users_from_group(self, cr, uid, ids, context=None):
 +        result = set()
 +        for group in self.pool['res.groups'].browse(cr, uid, ids, context=context):
 +            result.update(user.id for user in group.users)
 +        return list(result)
 +
      _columns = {
 -        'share': fields.boolean('Share User', readonly=True,
 -                    help="External user with limited access, created only for the purpose of sharing data.")
 +        'share': fields.function(_is_share, string='Share User', type='boolean',
 +            store={
 +                'res.users': (lambda self, cr, uid, ids, c={}: ids, None, 50),
 +                'res.groups': (_get_users_from_group, None, 50),
 +            }, help="External user with limited access, created only for the purpose of sharing data."),
       }
  
++
+ class res_groups(osv.osv):
+     _name = "res.groups"
+     _inherit = 'res.groups'
+     _columns = {
+         'share': fields.boolean('Share Group', readonly=True,
+                     help="Group created to set access rights for sharing data with some users.")
+     }
+     def init(self, cr):
+         # force re-generation of the user groups view without the shared groups
+         self.update_user_groups_view(cr, SUPERUSER_ID)
+         parent_class = super(res_groups, self)
+         if hasattr(parent_class, 'init'):
+             parent_class.init(cr)
+     def get_application_groups(self, cr, uid, domain=None, context=None):
+         if domain is None:
+             domain = []
+         domain.append(('share', '=', False))
+         return super(res_groups, self).get_application_groups(cr, uid, domain=domain, context=context)
++
  # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
Simple merge
Simple merge
  #
  ##############################################################################
  
+ from openerp import SUPERUSER_ID
 +from openerp.tools import html2plaintext
  from openerp.tools.translate import _
- from openerp.osv import osv, fields
+ from openerp.osv import osv, fields, expression
  
  class MailMessage(osv.Model):
      _inherit = 'mail.message'
                    </t>
                </div>
            </div>
-           <div class="js_payment mb64 row" t-if="not website_sale_order.amount_total" id="payment_method">
+           <div class="js_payment mb64 row" t-if="not website_sale_order.amount_total and not errors" id="payment_method">
              <div class="col-lg-8 col-sm-8">
 -              <form target="_self" action="/shop/payment/validate/" method="post" class="pull-right">
 +              <form target="_self" action="/shop/payment/validate" method="post" class="pull-right">
                    <a style="width:100px;" class="btn btn-primary a-submit">
                      <span>Pay Now <span class="fa fa-long-arrow-right"></span></span>
                    </a>
@@@ -12,11 -12,12 +12,12 @@@ class Ecommerce(Ecommerce)
          cr, uid, context = request.cr, request.uid, request.context
          order = self.get_order()
          carrier_id = post.get('carrier_id')
-         if order and carrier_id:
-             # recompute delivery costs            
-             request.registry['website']._check_carrier_quotation(cr,uid,order,carrier_id,context=context)
-             return request.redirect("/shop/payment")
+         if carrier_id:
+             carrier_id = int(carrier_id)
+         if order:
+             request.registry['sale.order']._check_carrier_quotation(cr, uid, order, force_carrier_id=carrier_id, context=context)
+             if carrier_id:
 -                return request.redirect("/shop/payment/")
++                return request.redirect("/shop/payment")
  
          res = super(Ecommerce, self).payment(**post)
          return res