[MERGE] forward port branch saas-6 up to 8958bfe557

This commit is contained in:
Christophe Simonis
2017-06-06 13:40:34 +02:00
9 changed files with 55 additions and 26 deletions
@@ -2,7 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details. # Part of Odoo. See LICENSE file for full copyright and licensing details.
import json import json
import urllib import urllib2
from openerp.osv import osv, fields from openerp.osv import osv, fields
from openerp import tools from openerp import tools
@@ -12,10 +12,10 @@ from openerp.exceptions import UserError
def geo_find(addr): def geo_find(addr):
url = 'https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=' url = 'https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address='
url += urllib.quote(addr.encode('utf8')) url += urllib2.quote(addr.encode('utf8'))
try: try:
result = json.load(urllib.urlopen(url)) result = json.load(urllib2.urlopen(url))
except Exception, e: except Exception, e:
raise UserError(_('Cannot contact geolocation servers. Please make sure that your internet connection is up and running (%s).') % e) raise UserError(_('Cannot contact geolocation servers. Please make sure that your internet connection is up and running (%s).') % e)
if result['status'] != 'OK': if result['status'] != 'OK':
+1 -1
View File
@@ -30,7 +30,7 @@ class res_partner(osv.osv):
'opportunity_ids': fields.one2many('crm.lead', 'partner_id',\ 'opportunity_ids': fields.one2many('crm.lead', 'partner_id',\
'Opportunities', domain=[('type', '=', 'opportunity')]), 'Opportunities', domain=[('type', '=', 'opportunity')]),
'meeting_ids': fields.many2many('calendar.event', 'calendar_event_res_partner_rel','res_partner_id', 'calendar_event_id', 'meeting_ids': fields.many2many('calendar.event', 'calendar_event_res_partner_rel','res_partner_id', 'calendar_event_id',
'Meetings'), 'Meetings', copy=False),
'opportunity_count': fields.function(_opportunity_meeting_count, string="Opportunity", type='integer', multi='opp_meet'), 'opportunity_count': fields.function(_opportunity_meeting_count, string="Opportunity", type='integer', multi='opp_meet'),
'meeting_count': fields.function(_opportunity_meeting_count, string="# Meetings", type='integer', multi='opp_meet'), 'meeting_count': fields.function(_opportunity_meeting_count, string="# Meetings", type='integer', multi='opp_meet'),
} }
+13 -4
View File
@@ -57,9 +57,7 @@ index_template = """
<p> <p>
If you need to grant remote debugging access to a developer, you can do it <a href='/remote_connect'>here</a>. If you need to grant remote debugging access to a developer, you can do it <a href='/remote_connect'>here</a>.
</p> </p>
<p> %s
If you need to display the current customer basket on another device, you can do it <a href='/point_of_sale/display'>here</a>.
</p>
<p> <p>
The PosBox software installed on this posbox is <b>version 16</b>, The PosBox software installed on this posbox is <b>version 16</b>,
the posbox version number is independent from Odoo. You can upgrade the posbox version number is independent from Odoo. You can upgrade
@@ -74,10 +72,21 @@ index_template = """
class PosboxHomepage(openerp.addons.web.controllers.main.Home): class PosboxHomepage(openerp.addons.web.controllers.main.Home):
def get_hw_screen_message(self):
return """
<p>
The activate the customer display feature, you will need to reinstall the PosBox software.
You can find the latest images on the <a href="http://nightly.odoo.com/master/posbox/">Odoo Nightly builds</a> website.
Make sure to download at least the version 16.<br/>
Odoo version 11, or above, is required to use the customer display feature.
</p>
"""
@http.route('/', type='http', auth='none', website=True) @http.route('/', type='http', auth='none', website=True)
def index(self): def index(self):
#return request.render('hw_posbox_homepage.index',mimetype='text/html') #return request.render('hw_posbox_homepage.index',mimetype='text/html')
return index_template return index_template % self.get_hw_screen_message()
@http.route('/wifi', type='http', auth='none', website=True) @http.route('/wifi', type='http', auth='none', website=True)
def wifi(self): def wifi(self):
+4 -1
View File
@@ -120,7 +120,10 @@ class Scanner(Thread):
def get_devices(self): def get_devices(self):
try: try:
if not evdev: if not evdev:
return None return []
if not os.path.isdir(self.input_dir):
return []
new_devices = [device for device in listdir(self.input_dir) new_devices = [device for device in listdir(self.input_dir)
if join(self.input_dir, device) not in [dev.evdev.fn for dev in self.open_devices]] if join(self.input_dir, device) not in [dev.evdev.fn for dev in self.open_devices]]
+9
View File
@@ -4,6 +4,7 @@
from openerp import http from openerp import http
from openerp.tools import config from openerp.tools import config
from openerp.addons.web.controllers import main as web from openerp.addons.web.controllers import main as web
from openerp.addons.hw_posbox_homepage.controllers import main as homepage
import logging import logging
import netifaces as ni import netifaces as ni
@@ -16,6 +17,14 @@ self_port = str(config['xmlrpc_port'] or 8069)
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
class Homepage(homepage.PosboxHomepage):
def get_hw_screen_message(self):
return """
<p>
If you need to display the current customer basket on another device, you can do it <a href='/point_of_sale/display'>here</a>.
</p>
"""
class HardwareScreen(web.Home): class HardwareScreen(web.Home):
+7 -2
View File
@@ -1222,8 +1222,13 @@ class mrp_production(osv.osv):
source_location_id = production.location_src_id.id source_location_id = production.location_src_id.id
prod_location_id = source_location_id prod_location_id = source_location_id
prev_move= False prev_move= False
if production.bom_id.routing_id and production.bom_id.routing_id.location_id and production.bom_id.routing_id.location_id.id != source_location_id: if production.routing_id:
source_location_id = production.bom_id.routing_id.location_id.id routing = production.routing_id
else:
routing = production.bom_id.routing_id
if routing and routing.location_id and routing.location_id.id != source_location_id:
source_location_id = routing.location_id.id
prev_move = True prev_move = True
destination_location_id = production.product_id.property_stock_production.id destination_location_id = production.product_id.property_stock_production.id
+16 -13
View File
@@ -1,4 +1,4 @@
Canada, France, 8-2-2015 Canada, France, 2017-05-12
Savoir-faire Linux agrees to the terms of the Odoo Corporate Contributor License Savoir-faire Linux agrees to the terms of the Odoo Corporate Contributor License
Agreement v1.0. Agreement v1.0.
@@ -8,22 +8,25 @@ declaration.
Signed, Signed,
Maxime Chambreuil partners@savoirfairelinux.com https://github.com/savoirfairelinux Jérome Boisvert-Chouinard jerome.boisvertchouinard@savoirfairelinux.com https://github.com/jbchouinard
List of contributors: List of contributors:
Agathe Mollé agathe.molle@savoirfairelinux.com https://github.com/Ehtaga
Bruno Joliveau bruno.joliveau@savoirfairelinux.com https://github.com/bjoliveau Bruno Joliveau bruno.joliveau@savoirfairelinux.com https://github.com/bjoliveau
David Cormier david.cormier@savoirfairelinux.com https://github.com/cormier
David Dufresne david.dufresne@savoirfairelinux.com https://github.com/dufresnedavid David Dufresne david.dufresne@savoirfairelinux.com https://github.com/dufresnedavid
Davin Baragiotta davin.baragiotta@savoirfairelinux.com https://github.com/giotta Jérome Boisvert-Chouinard jerome.boisvertchouinard@savoirfairelinux.com https://github.com/jbchouinard
El Hadji Dem elhadji.dem@savoirfairelinux.com https://github.com/ehdem
Guillaume Auger guillaume.auger@savoirfairelinux.com https://github.com/jehog
Joao Alfredo Gama Batista joao.gama@savoirfairelinux.com https://github.com/joaoalf Joao Alfredo Gama Batista joao.gama@savoirfairelinux.com https://github.com/joaoalf
Jordi Riera jordi.riera@savoirfairelinux.com https://github.com/foutoucour Julie Moussu julie.mousse@savoirfairelinux.com https://github.com/JulieSFL
Julien Roux julien.roux@savoirfairelinux.com https://github.com/jrouxsfl
Loïc Faure-Lacroix loic.lacroix@savoirfairelinux.com https://github.com/llacroix
Maxime Chambreuil maxime.chambreuil@savoirfairelinux.com https://github.com/max3903
Pierre Gault pierre.gault@savoirfairelinux.com https://github.com/gaultp
Pierre Lamarche pierre.lamarche@savoirfairelinux.com https://github.com/plamarche Pierre Lamarche pierre.lamarche@savoirfairelinux.com https://github.com/plamarche
Sandy Carter sandy.carter@savoirfairelinux.com https://github.com/bwrsandman David Cormier david.cormier@savoirfairelinux.com https://github.com/cormier (up to 2017-05-12)
Vincent Vinet vincent.vinet@savoirfairelinux.com https://github.com/veloutin Davin Baragiotta davin.baragiotta@savoirfairelinux.com https://github.com/giotta (up to 2017-05-12)
El Hadji Dem elhadji.dem@savoirfairelinux.com https://github.com/ehdem (up to 2017-05-12)
Guillaume Auger guillaume.auger@savoirfairelinux.com https://github.com/jehog (up to 2017-05-12)
Jordi Riera jordi.riera@savoirfairelinux.com https://github.com/foutoucour (up to 2017-05-12)
Julien Roux julien.roux@savoirfairelinux.com https://github.com/jrouxsfl (up to 2017-05-12)
Loïc Faure-Lacroix loic.lacroix@savoirfairelinux.com https://github.com/llacroix (up to 2017-05-12)
Maxime Chambreuil maxime.chambreuil@savoirfairelinux.com https://github.com/max3903 (up to 2017-05-12)
Pierre Gault pierre.gault@savoirfairelinux.com https://github.com/gaultp (up to 2017-05-12)
Sandy Carter sandy.carter@savoirfairelinux.com https://github.com/bwrsandman (up to 2017-05-12)
Vincent Vinet vincent.vinet@savoirfairelinux.com https://github.com/veloutin (up to 2017-05-12)
+1 -1
View File
@@ -9,4 +9,4 @@ declaration.
Signed, Signed,
Jesús Ventosinos Mayor jesus@pexego.es https://github.com/jesusVMayor Jesús Ventosinos Mayor jesus@pexego.es https://github.com/jesusVMayor
Jesús Ventosinos Mayor jesus@comunitea.com https://github.com/jesusVMayor
+1 -1
View File
@@ -751,7 +751,7 @@ class BaseModel(object):
field = cls._fields.get(name) field = cls._fields.get(name)
if not field: if not field:
_logger.warning("method %s.%s: @constrains parameter %r is not a field name", cls._name, attr, name) _logger.warning("method %s.%s: @constrains parameter %r is not a field name", cls._name, attr, name)
elif not (field.store or field.column and field.column._fnct_inv): elif not (field.store or field.column and field.column._fnct_inv or field.inherited):
_logger.warning("method %s.%s: @constrains parameter %r is not writeable", cls._name, attr, name) _logger.warning("method %s.%s: @constrains parameter %r is not writeable", cls._name, attr, name)
methods.append(func) methods.append(func)