[MERGE] forward port of branch saas-3 up to revid 9394 chs@openerp.com-20140410103638-x7vajn70ewsfp0ck

bzr revid: chs@openerp.com-20140410110424-enhdg6pufhii56ni
This commit is contained in:
Christophe Simonis 2014-04-10 13:04:24 +02:00
commit 3a7e003656
12 changed files with 25 additions and 10 deletions

View File

@ -47,7 +47,7 @@ class account_installer(osv.osv_memory):
# try get the list on apps server # try get the list on apps server
try: try:
apps_server = self.pool.get('ir.config_parameter').get_param(cr, uid, 'apps.server', 'https://apps.openerp.com') apps_server = self.pool.get('ir.module.module').get_apps_server(cr, uid, context=context)
up = urlparse.urlparse(apps_server) up = urlparse.urlparse(apps_server)
url = '{0.scheme}://{0.netloc}/apps/charts?serie={1}'.format(up, serie) url = '{0.scheme}://{0.netloc}/apps/charts?serie={1}'.format(up, serie)

View File

@ -328,7 +328,7 @@ class account_asset_asset(osv.osv):
default = {} default = {}
if context is None: if context is None:
context = {} context = {}
default.update({'depreciation_line_ids': [], 'state': 'draft'}) default.update({'depreciation_line_ids': [], 'account_move_line_ids': [], 'history_ids': [], 'state': 'draft'})
return super(account_asset_asset, self).copy(cr, uid, id, default, context=context) return super(account_asset_asset, self).copy(cr, uid, id, default, context=context)
def _compute_entries(self, cr, uid, ids, period_id, context=None): def _compute_entries(self, cr, uid, ids, period_id, context=None):

View File

@ -26,6 +26,7 @@ import openerp.addons.decimal_precision as dp
class analytic_user_funct_grid(osv.osv): class analytic_user_funct_grid(osv.osv):
_name="analytic.user.funct.grid" _name="analytic.user.funct.grid"
_description= "Price per User" _description= "Price per User"
_rec_name="user_id"
_columns={ _columns={
'user_id': fields.many2one("res.users", "User", required=True,), 'user_id': fields.many2one("res.users", "User", required=True,),
'product_id': fields.many2one("product.product", "Service", required=True,), 'product_id': fields.many2one("product.product", "Service", required=True,),

View File

@ -2,6 +2,7 @@ import functools
import logging import logging
import simplejson import simplejson
import urlparse
import werkzeug.utils import werkzeug.utils
from werkzeug.exceptions import BadRequest from werkzeug.exceptions import BadRequest
@ -68,7 +69,8 @@ class OAuthLogin(openerp.addons.web.controllers.main.Home):
def get_state(self, provider): def get_state(self, provider):
state = dict( state = dict(
d=request.session.db, d=request.session.db,
p=provider['id'] p=provider['id'],
r=request.httprequest.full_path
) )
token = request.params.get('token') token = request.params.get('token')
if token: if token:
@ -137,8 +139,12 @@ class OAuthController(http.Controller):
cr.commit() cr.commit()
action = state.get('a') action = state.get('a')
menu = state.get('m') menu = state.get('m')
redirect = state.get('r')
url = '/web' url = '/web'
if action: if redirect and not redirect.startswith('/auth_oauth/signin') and \
(not redirect.startswith('/web/login') or 'redirect' in urlparse.urlsplit(redirect).query):
url = redirect
elif action:
url = '/web#action=%s' % action url = '/web#action=%s' % action
elif menu: elif menu:
url = '/web#menu_id=%s' % menu url = '/web#menu_id=%s' % menu

View File

@ -10,7 +10,7 @@
<field name="password"></field> <field name="password"></field>
<field name="active" eval="False"/> <field name="active" eval="False"/>
<!-- Avoid auto-including this user in any default group, just like a typical portal member --> <!-- Avoid auto-including this user in any default group, just like a typical portal member -->
<field name="groups_id" eval="[(4,ref('base.group_portal'))]"/> <field name="groups_id" eval="[(6, 0, [ref('base.group_portal')])]"/>
<!-- allow signuped users to have a alias --> <!-- allow signuped users to have a alias -->
<field name="alias_name">_usertemplate</field> <field name="alias_name">_usertemplate</field>
</record> </record>

View File

@ -13,6 +13,7 @@ openerp.pad = function(instance) {
event.preventDefault(); event.preventDefault();
self.set("configured", true); self.set("configured", true);
}); });
this.pad_loading_request = null;
}, },
initialize_content: function() { initialize_content: function() {
var self = this; var self = this;
@ -30,14 +31,14 @@ openerp.pad = function(instance) {
}, },
render_value: function() { render_value: function() {
var self = this; var self = this;
this._configured_deferred.always(function() { $.when(this._configured_deferred, this.pad_loading_request).always(function() {
if (! self.get('configured')) { if (! self.get('configured')) {
return; return;
}; };
var value = self.get('value'); var value = self.get('value');
if (self.get('effective_readonly')) { if (self.get('effective_readonly')) {
if (_.str.startsWith(value, 'http')) { if (_.str.startsWith(value, 'http')) {
this.pad_loading_request = self.view.dataset.call('pad_get_content', {url: value}).done(function(data) { self.pad_loading_request = self.view.dataset.call('pad_get_content', {url: value}).done(function(data) {
self.$('.oe_pad_content').removeClass('oe_pad_loading').html('<div class="oe_pad_readonly"><div>'); self.$('.oe_pad_content').removeClass('oe_pad_loading').html('<div class="oe_pad_readonly"><div>');
self.$('.oe_pad_readonly').html(data); self.$('.oe_pad_readonly').html(data);
}).fail(function() { }).fail(function() {

View File

@ -7,11 +7,12 @@
'version': '1.0', 'version': '1.0',
'description': """Payment Acquirer Base Module""", 'description': """Payment Acquirer Base Module""",
'author': 'OpenERP SA', 'author': 'OpenERP SA',
'depends': ['mail', 'account'], 'depends': ['account'],
'data': [ 'data': [
'views/payment_acquirer.xml', 'views/payment_acquirer.xml',
'views/res_config_view.xml', 'views/res_config_view.xml',
'security/ir.model.access.csv', 'security/ir.model.access.csv',
], ],
'installable': True, 'installable': True,
'auto_install': True,
} }

View File

@ -118,6 +118,7 @@
</div> </div>
<field name="company_id" groups="base.group_multi_company" widget="selection" <field name="company_id" groups="base.group_multi_company" widget="selection"
attrs="{'invisible': [('is_only_child', '=', False)]}"/> attrs="{'invisible': [('is_only_child', '=', False)]}"/>
<field name="active" />
</group> </group>
</group> </group>
<field name="description" placeholder="describe the product characteristics..." <field name="description" placeholder="describe the product characteristics..."

View File

@ -82,7 +82,6 @@
<div attrs="{'invisible':[('type','=','service')]}"> <div attrs="{'invisible':[('type','=','service')]}">
<field name="produce_delay" class="oe_inline"/> days <field name="produce_delay" class="oe_inline"/> days
</div> </div>
<field name="active"/>
</group> </group>
</group> </group>
<xpath expr="//group[@string='Sale Conditions']" position="inside"> <xpath expr="//group[@string='Sale Conditions']" position="inside">

View File

@ -1399,6 +1399,9 @@
start : function () { start : function () {
var self = this; var self = this;
this._super(); this._super();
if (!self.$target.data("snippet-view")) {
this.$target.data("snippet-view", new website.snippet.animationRegistry.parallax(this.$target));
}
this.scroll(); this.scroll();
this.$target.on('snippet-style-change snippet-style-preview', function () { this.$target.on('snippet-style-change snippet-style-preview', function () {
self.$target.data("snippet-view").set_values(); self.$target.data("snippet-view").set_values();

View File

@ -6,3 +6,4 @@ access_sale_quote_line_manager,sale.quote.line,model_sale_quote_line,base.group_
access_sale_quote_option,sale.quote.option,model_sale_quote_option,base.group_sale_salesman,1,0,0,0 access_sale_quote_option,sale.quote.option,model_sale_quote_option,base.group_sale_salesman,1,0,0,0
access_sale_quote_option_manager,sale.quote.option,model_sale_quote_option,base.group_sale_manager,1,1,1,1 access_sale_quote_option_manager,sale.quote.option,model_sale_quote_option,base.group_sale_manager,1,1,1,1
access_sale_order_option,sale.order.option,model_sale_order_option,base.group_sale_salesman,1,1,1,1 access_sale_order_option,sale.order.option,model_sale_order_option,base.group_sale_salesman,1,1,1,1
access_sale_order_option_all,sale.order.option,model_sale_order_option,,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
6 access_sale_quote_option sale.quote.option model_sale_quote_option base.group_sale_salesman 1 0 0 0
7 access_sale_quote_option_manager sale.quote.option model_sale_quote_option base.group_sale_manager 1 1 1 1
8 access_sale_order_option sale.order.option model_sale_order_option base.group_sale_salesman 1 1 1 1
9 access_sale_order_option_all sale.order.option model_sale_order_option 1 0 0 0

View File

@ -43,7 +43,7 @@ class CheckoutInfo(object):
result = dict((prefix + field_name, getattr(partner, field_name)) for field_name in self.string_billing_fields if getattr(partner, field_name)) result = dict((prefix + field_name, getattr(partner, field_name)) for field_name in self.string_billing_fields if getattr(partner, field_name))
result[prefix + 'state_id'] = partner.state_id and partner.state_id.id or '' result[prefix + 'state_id'] = partner.state_id and partner.state_id.id or ''
result[prefix + 'country_id'] = partner.country_id and partner.country_id.id or '' result[prefix + 'country_id'] = partner.country_id and partner.country_id.id or ''
result[prefix + 'company'] = partner.parent_id and partner.parent_id.name or '' result[prefix + 'company'] = partner.commercial_partner_id and partner.commercial_partner_id.is_company and partner.commercial_partner_id.name or ''
return result return result
def from_post(self, post): def from_post(self, post):
@ -383,6 +383,8 @@ class Ecommerce(http.Controller):
def add_cart(self, product_id, remove=None, **kw): def add_cart(self, product_id, remove=None, **kw):
request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid,
product_id=int(product_id), product_id=int(product_id),
number=float(kw.get('number',1)),
set_number=float(kw.get('set_number',-1)),
context=request.context) context=request.context)
return request.redirect("/shop/mycart") return request.redirect("/shop/mycart")