[MERGE] forward port branch 8.0 up to 8ceb943
This commit is contained in:
@@ -1312,7 +1312,7 @@ class account_move_line(osv.osv):
|
|||||||
done = {}
|
done = {}
|
||||||
for line in self.browse(cr, uid, ids, context=context):
|
for line in self.browse(cr, uid, ids, context=context):
|
||||||
err_msg = _('Move name (id): %s (%s)') % (line.move_id.name, str(line.move_id.id))
|
err_msg = _('Move name (id): %s (%s)') % (line.move_id.name, str(line.move_id.id))
|
||||||
if line.move_id.state <> 'draft' and (not line.journal_id.entry_posted):
|
if line.move_id.state <> 'draft':
|
||||||
raise UserError(_('You cannot do this modification on a confirmed entry. You can just change some non legal fields or you must unconfirm the journal entry first.\n%s.') % err_msg)
|
raise UserError(_('You cannot do this modification on a confirmed entry. You can just change some non legal fields or you must unconfirm the journal entry first.\n%s.') % err_msg)
|
||||||
if line.reconcile_id:
|
if line.reconcile_id:
|
||||||
raise UserError(_('You cannot do this modification on a reconciled entry. You can just change some non legal fields or you must unreconcile first.\n%s.') % err_msg)
|
raise UserError(_('You cannot do this modification on a reconciled entry. You can just change some non legal fields or you must unreconcile first.\n%s.') % err_msg)
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ class general_ledger(report_sxw.rml_parse, common_report_header):
|
|||||||
self.init_balance = data['form'].get('initial_balance', True)
|
self.init_balance = data['form'].get('initial_balance', True)
|
||||||
if self.init_balance:
|
if self.init_balance:
|
||||||
ctx2.update({'initial_bal': True})
|
ctx2.update({'initial_bal': True})
|
||||||
self.init_query = obj_move._query_get(self.cr, self.uid, obj='l', context=ctx2)
|
|
||||||
self.display_account = data['form']['display_account']
|
self.display_account = data['form']['display_account']
|
||||||
self.target_move = data['form'].get('target_move', 'all')
|
self.target_move = data['form'].get('target_move', 'all')
|
||||||
ctx = self.context.copy()
|
ctx = self.context.copy()
|
||||||
@@ -54,11 +53,14 @@ class general_ledger(report_sxw.rml_parse, common_report_header):
|
|||||||
period_from_id = data['form']['period_from']
|
period_from_id = data['form']['period_from']
|
||||||
period_to_id = data['form']['period_to']
|
period_to_id = data['form']['period_to']
|
||||||
ctx['periods'] = self.pool["account.period"].build_ctx_periods(self.cr, self.uid, period_from_id, period_to_id)
|
ctx['periods'] = self.pool["account.period"].build_ctx_periods(self.cr, self.uid, period_from_id, period_to_id)
|
||||||
|
# Do not let "_query_get" calculate the periods itself
|
||||||
|
ctx2.update({'periods': ctx['periods']})
|
||||||
elif data['form']['filter'] == 'filter_date':
|
elif data['form']['filter'] == 'filter_date':
|
||||||
ctx['date_from'] = data['form']['date_from']
|
ctx['date_from'] = data['form']['date_from']
|
||||||
ctx['date_to'] = data['form']['date_to']
|
ctx['date_to'] = data['form']['date_to']
|
||||||
ctx['state'] = data['form']['target_move']
|
ctx['state'] = data['form']['target_move']
|
||||||
self.context.update(ctx)
|
self.context.update(ctx)
|
||||||
|
self.init_query = obj_move._query_get(self.cr, self.uid, obj='l', context=ctx2)
|
||||||
if (data['model'] == 'ir.ui.menu'):
|
if (data['model'] == 'ir.ui.menu'):
|
||||||
new_ids = [data['form']['chart_account_id']]
|
new_ids = [data['form']['chart_account_id']]
|
||||||
objects = self.pool.get('account.account').browse(self.cr, self.uid, new_ids)
|
objects = self.pool.get('account.account').browse(self.cr, self.uid, new_ids)
|
||||||
|
|||||||
@@ -1268,7 +1268,7 @@ class calendar_event(osv.Model):
|
|||||||
"""
|
"""
|
||||||
if data['interval'] and data['interval'] < 0:
|
if data['interval'] and data['interval'] < 0:
|
||||||
raise UserError(_('interval cannot be negative.'))
|
raise UserError(_('interval cannot be negative.'))
|
||||||
if data['count'] and data['count'] <= 0:
|
if data['end_type'] == 'count' and int(data['count']) <= 0:
|
||||||
raise UserError(_('Event recurrence interval cannot be negative.'))
|
raise UserError(_('Event recurrence interval cannot be negative.'))
|
||||||
|
|
||||||
def get_week_string(freq, data):
|
def get_week_string(freq, data):
|
||||||
@@ -1538,6 +1538,7 @@ class calendar_event(osv.Model):
|
|||||||
recurrent_id=real_event_id,
|
recurrent_id=real_event_id,
|
||||||
recurrent_id_date=data.get('start'),
|
recurrent_id_date=data.get('start'),
|
||||||
rrule_type=False,
|
rrule_type=False,
|
||||||
|
end_type=False,
|
||||||
rrule='',
|
rrule='',
|
||||||
recurrency=False,
|
recurrency=False,
|
||||||
final_date=datetime.strptime(data.get('start'), DEFAULT_SERVER_DATETIME_FORMAT if data['allday'] else DEFAULT_SERVER_DATETIME_FORMAT) + timedelta(hours=values.get('duration', False) or data.get('duration'))
|
final_date=datetime.strptime(data.get('start'), DEFAULT_SERVER_DATETIME_FORMAT if data['allday'] else DEFAULT_SERVER_DATETIME_FORMAT) + timedelta(hours=values.get('duration', False) or data.get('duration'))
|
||||||
|
|||||||
@@ -102,8 +102,11 @@ function reload_favorite_list(result) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
this.ir_model_m2o.insertAfter($('div.oe_calendar_filter'));
|
this.ir_model_m2o.insertAfter($('div.oe_calendar_filter'));
|
||||||
this.ir_model_m2o.on('change:value', self, function() {
|
this.ir_model_m2o.on('change:value', self, function() {
|
||||||
self.add_filter();
|
// once selected, we reset the value to false.
|
||||||
|
if (self.ir_model_m2o.get_value()) {
|
||||||
|
self.add_filter();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
add_filter: function() {
|
add_filter: function() {
|
||||||
|
|||||||
@@ -361,9 +361,10 @@ class google_calendar(osv.AbstractModel):
|
|||||||
url = "/calendar/v3/calendars/%s/events/%s" % ('primary', google_id)
|
url = "/calendar/v3/calendars/%s/events/%s" % ('primary', google_id)
|
||||||
try:
|
try:
|
||||||
status, content, ask_time = self.pool['google.service']._do_request(cr, uid, url, params, headers, type='GET', context=context)
|
status, content, ask_time = self.pool['google.service']._do_request(cr, uid, url, params, headers, type='GET', context=context)
|
||||||
except:
|
except Exception, e:
|
||||||
_logger.info("Calendar Synchro - In except of get_one_event_synchro")
|
_logger.info("Calendar Synchro - In except of get_one_event_synchro")
|
||||||
pass
|
_logger.info(exception_to_unicode(e))
|
||||||
|
return False
|
||||||
|
|
||||||
return status_response(status) and content or False
|
return status_response(status) and content or False
|
||||||
|
|
||||||
|
|||||||
@@ -120,8 +120,8 @@ class AcquirerPaypal(osv.Model):
|
|||||||
'currency_code': tx_values['currency'] and tx_values['currency'].name or '',
|
'currency_code': tx_values['currency'] and tx_values['currency'].name or '',
|
||||||
'address1': partner_values['address'],
|
'address1': partner_values['address'],
|
||||||
'city': partner_values['city'],
|
'city': partner_values['city'],
|
||||||
'country': partner_values['country'] and partner_values['country'].name or '',
|
'country': partner_values['country'] and partner_values['country'].code or '',
|
||||||
'state': partner_values['state'] and partner_values['state'].name or '',
|
'state': partner_values['state'] and (partner_values['state'].code or partner_values['state'].name) or '',
|
||||||
'email': partner_values['email'],
|
'email': partner_values['email'],
|
||||||
'zip': partner_values['zip'],
|
'zip': partner_values['zip'],
|
||||||
'first_name': partner_values['first_name'],
|
'first_name': partner_values['first_name'],
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ class produce_price_history(osv.osv):
|
|||||||
'company_id': fields.many2one('res.company', required=True),
|
'company_id': fields.many2one('res.company', required=True),
|
||||||
'product_template_id': fields.many2one('product.template', 'Product Template', required=True, ondelete='cascade'),
|
'product_template_id': fields.many2one('product.template', 'Product Template', required=True, ondelete='cascade'),
|
||||||
'datetime': fields.datetime('Historization Time'),
|
'datetime': fields.datetime('Historization Time'),
|
||||||
'cost': fields.float('Historized Cost'),
|
'cost': fields.float('Historized Cost', digits_compute=dp.get_precision('Product Price')),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_default_company(self, cr, uid, context=None):
|
def _get_default_company(self, cr, uid, context=None):
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ class product_pricelist(report_sxw.rml_parse):
|
|||||||
if price_dict[pricelist_id]:
|
if price_dict[pricelist_id]:
|
||||||
price = float_round(price_dict[pricelist_id], precision_digits=sale_price_digits)
|
price = float_round(price_dict[pricelist_id], precision_digits=sale_price_digits)
|
||||||
else:
|
else:
|
||||||
res = self.pool.get('product.product').read(self.cr, self.uid, [product_id])
|
res = self.pool.get('product.product').read(self.cr, self.uid, [product_id], ['list_price'])
|
||||||
price = float_round(res[0]['list_price'], precision_digits=sale_price_digits)
|
price = float_round(res[0]['list_price'], precision_digits=sale_price_digits)
|
||||||
price = self.formatLang(price, digits=sale_price_digits, currency_obj=pricelist.currency_id)
|
price = self.formatLang(price, digits=sale_price_digits, currency_obj=pricelist.currency_id)
|
||||||
return price
|
return price
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
India, July 10, 2016
|
||||||
|
|
||||||
|
I hereby agree to the terms of the Odoo Individual Contributor License Agreement v1.0.
|
||||||
|
|
||||||
|
I declare that I am authorized and able to make this agreement and sign this declaration.
|
||||||
|
|
||||||
|
Signed,
|
||||||
|
|
||||||
|
Gourav Chawla gouravchawla@live.com https://github.com/Gouravchawla
|
||||||
@@ -129,7 +129,7 @@ When declaring a record in XML,
|
|||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree>
|
<tree>
|
||||||
<field name="my_field_1"/>
|
<field name="my_field_1"/>
|
||||||
<field name="my_field_2" string="My Label" widget="statusbar" statusbar_visible="draft,sent,progress,done" statusbar_colors='{"invoice_except":"red","waiting_date":"blue"}' />
|
<field name="my_field_2" string="My Label" widget="statusbar" statusbar_visible="draft,sent,progress,done" />
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ system. Available semantic components are:
|
|||||||
.. todo:: list of widgets
|
.. todo:: list of widgets
|
||||||
|
|
||||||
& options & specific attributes (e.g. widget=statusbar
|
& options & specific attributes (e.g. widget=statusbar
|
||||||
statusbar_visible statusbar_colors clickable)
|
statusbar_visible clickable)
|
||||||
``options``
|
``options``
|
||||||
JSON object specifying configuration option for the field's widget
|
JSON object specifying configuration option for the field's widget
|
||||||
(including default widgets)
|
(including default widgets)
|
||||||
@@ -505,13 +505,10 @@ The states are shown following the order used in the field (the list in a
|
|||||||
selection field, etc). States that are always visible are specified with the
|
selection field, etc). States that are always visible are specified with the
|
||||||
attribute ``statusbar_visible``.
|
attribute ``statusbar_visible``.
|
||||||
|
|
||||||
``statusbar_colors`` can be used to give a custom color to specific states.
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
<field name="state" widget="statusbar"
|
<field name="state" widget="statusbar"
|
||||||
statusbar_visible="draft,sent,progress,invoiced,done"
|
statusbar_visible="draft,sent,progress,invoiced,done" />
|
||||||
statusbar_colors="{'shipping_except':'red','waiting_date':'blue'}"/>
|
|
||||||
|
|
||||||
The Sheet
|
The Sheet
|
||||||
'''''''''
|
'''''''''
|
||||||
|
|||||||
@@ -728,6 +728,7 @@ class WorkerHTTP(Worker):
|
|||||||
""" HTTP Request workers """
|
""" HTTP Request workers """
|
||||||
def process_request(self, client, addr):
|
def process_request(self, client, addr):
|
||||||
client.setblocking(1)
|
client.setblocking(1)
|
||||||
|
client.settimeout(0.5)
|
||||||
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
||||||
# Prevent fd inherientence close_on_exec
|
# Prevent fd inherientence close_on_exec
|
||||||
flags = fcntl.fcntl(client, fcntl.F_GETFD) | fcntl.FD_CLOEXEC
|
flags = fcntl.fcntl(client, fcntl.F_GETFD) | fcntl.FD_CLOEXEC
|
||||||
|
|||||||
Reference in New Issue
Block a user