diff --git a/addons/account/report/account_analytic_entries_report.py b/addons/account/report/account_analytic_entries_report.py index f7d1177e3b0..1cd0f4c9026 100644 --- a/addons/account/report/account_analytic_entries_report.py +++ b/addons/account/report/account_analytic_entries_report.py @@ -28,11 +28,6 @@ class analytic_entries_report(osv.osv): _auto = False _columns = { 'date': fields.date('Date', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), 'user_id': fields.many2one('res.users', 'User',readonly=True), 'name': fields.char('Description', size=64, readonly=True), 'partner_id': fields.many2one('res.partner', 'Partner'), @@ -56,9 +51,6 @@ class analytic_entries_report(osv.osv): min(a.id) as id, count(distinct a.id) as nbr, a.date as date, - to_char(a.date, 'YYYY') as year, - to_char(a.date, 'MM') as month, - to_char(a.date, 'YYYY-MM-DD') as day, a.user_id as user_id, a.name as name, analytic.partner_id as partner_id, diff --git a/addons/account/report/account_analytic_entries_report_view.xml b/addons/account/report/account_analytic_entries_report_view.xml index 047d563cc58..1d2e87be339 100644 --- a/addons/account/report/account_analytic_entries_report_view.xml +++ b/addons/account/report/account_analytic_entries_report_view.xml @@ -6,7 +6,6 @@ analytic.entries.report - @@ -21,9 +20,9 @@ - - - + + + @@ -34,8 +33,9 @@ - - + + + diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index d8dc45f9a3b..8fecf85ee0b 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -55,11 +55,6 @@ class account_invoice_report(osv.osv): _columns = { 'date': fields.date('Date', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month', readonly=True), 'product_id': fields.many2one('product.product', 'Product', readonly=True), 'product_qty':fields.float('Qty', readonly=True), 'uom_name': fields.char('Reference Unit of Measure', size=128, readonly=True), @@ -105,7 +100,7 @@ class account_invoice_report(osv.osv): def _select(self): select_str = """ - SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, sub.country_id, + SELECT sub.id, sub.date, sub.product_id, sub.partner_id, sub.country_id, sub.payment_term, sub.period_id, sub.uom_name, sub.currency_id, sub.journal_id, sub.fiscal_position, sub.user_id, sub.company_id, sub.nbr, sub.type, sub.state, sub.categ_id, sub.date_due, sub.account_id, sub.account_line_id, sub.partner_bank_id, @@ -118,9 +113,6 @@ class account_invoice_report(osv.osv): select_str = """ SELECT min(ail.id) AS id, ai.date_invoice AS date, - to_char(ai.date_invoice::timestamp with time zone, 'YYYY'::text) AS year, - to_char(ai.date_invoice::timestamp with time zone, 'MM'::text) AS month, - to_char(ai.date_invoice::timestamp with time zone, 'YYYY-MM-DD'::text) AS day, ail.product_id, ai.partner_id, ai.payment_term, ai.period_id, CASE WHEN u.uom_type::text <> 'reference'::text @@ -192,9 +184,6 @@ class account_invoice_report(osv.osv): def _group_by(self): group_by_str = """ GROUP BY ail.product_id, ai.date_invoice, ai.id, - to_char(ai.date_invoice::timestamp with time zone, 'YYYY'::text), - to_char(ai.date_invoice::timestamp with time zone, 'MM'::text), - to_char(ai.date_invoice::timestamp with time zone, 'YYYY-MM-DD'::text), ai.partner_id, ai.payment_term, ai.period_id, u.name, ai.currency_id, ai.journal_id, ai.fiscal_position, ai.user_id, ai.company_id, ai.type, ai.state, pt.categ_id, ai.date_due, ai.account_id, ail.account_id, ai.partner_bank_id, ai.residual, diff --git a/addons/account/report/account_invoice_report_view.xml b/addons/account/report/account_invoice_report_view.xml index 67d568801b7..24723d7fb12 100644 --- a/addons/account/report/account_invoice_report_view.xml +++ b/addons/account/report/account_invoice_report_view.xml @@ -6,8 +6,10 @@ account.invoice.report + - + + @@ -47,9 +49,9 @@ - - - + + + diff --git a/addons/account/report/account_treasury_report_view.xml b/addons/account/report/account_treasury_report_view.xml index fe898cd81ce..f1c84849831 100644 --- a/addons/account/report/account_treasury_report_view.xml +++ b/addons/account/report/account_treasury_report_view.xml @@ -24,6 +24,8 @@ + + diff --git a/addons/account_asset/report/account_asset_report_view.xml b/addons/account_asset/report/account_asset_report_view.xml index 4655172572c..19299eee501 100644 --- a/addons/account_asset/report/account_asset_report_view.xml +++ b/addons/account_asset/report/account_asset_report_view.xml @@ -7,8 +7,11 @@ asset.asset.report - - + + + + + diff --git a/addons/crm/report/crm_phonecall_report.py b/addons/crm/report/crm_phonecall_report.py index fba095f1174..6a3e3bf208b 100644 --- a/addons/crm/report/crm_phonecall_report.py +++ b/addons/crm/report/crm_phonecall_report.py @@ -40,20 +40,12 @@ class crm_phonecall_report(osv.osv): _auto = False _columns = { - 'name': fields.char('Year', size=64, required=False, readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Section', readonly=True), 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), 'nbr': fields.integer('# of Cases', readonly=True), 'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True), - 'month':fields.selection([('01', 'January'), ('02', 'February'), \ - ('03', 'March'), ('04', 'April'),\ - ('05', 'May'), ('06', 'June'), \ - ('07', 'July'), ('08', 'August'),\ - ('09', 'September'), ('10', 'October'),\ - ('11', 'November'), ('12', 'December')], 'Month', readonly=True), 'create_date': fields.datetime('Create Date', readonly=True, select=True), - 'day': fields.char('Day', size=128, readonly=True), 'delay_close': fields.float('Delay to close', digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), 'duration': fields.float('Duration', digits=(16,2),readonly=True, group_operator="avg"), 'delay_open': fields.float('Delay to open',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), @@ -77,9 +69,6 @@ class crm_phonecall_report(osv.osv): create or replace view crm_phonecall_report as ( select id, - to_char(c.date, 'YYYY') as name, - to_char(c.date, 'MM') as month, - to_char(c.date, 'YYYY-MM-DD') as day, to_char(c.create_date, 'YYYY-MM-DD') as creation_date, to_char(c.date_open, 'YYYY-MM-DD') as opening_date, to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml index 9de9adeade3..32ae9704064 100644 --- a/addons/crm/report/crm_phonecall_report_view.xml +++ b/addons/crm/report/crm_phonecall_report_view.xml @@ -12,6 +12,7 @@ + @@ -52,9 +53,9 @@ - - - + + + diff --git a/addons/crm_partner_assign/report/crm_lead_report.py b/addons/crm_partner_assign/report/crm_lead_report.py index c7a6b76ee44..572e1796b00 100644 --- a/addons/crm_partner_assign/report/crm_lead_report.py +++ b/addons/crm_partner_assign/report/crm_lead_report.py @@ -30,22 +30,14 @@ class crm_lead_report_assign(osv.osv): _auto = False _description = "CRM Lead Report" _columns = { - 'year': fields.char('Year', size=64, required=False, readonly=True), 'partner_assigned_id':fields.many2one('res.partner', 'Partner', readonly=True), 'grade_id':fields.many2one('res.partner.grade', 'Grade', readonly=True), 'user_id':fields.many2one('res.users', 'User', readonly=True), 'country_id':fields.many2one('res.country', 'Country', readonly=True), 'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True), - 'month':fields.selection([('01', 'January'), ('02', 'February'), \ - ('03', 'March'), ('04', 'April'),\ - ('05', 'May'), ('06', 'June'), \ - ('07', 'July'), ('08', 'August'),\ - ('09', 'September'), ('10', 'October'),\ - ('11', 'November'), ('12', 'December')], 'Month', readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), - 'date_assign': fields.date('Partner Date', readonly=True), + 'date_assign': fields.date('Assign Date', readonly=True), 'create_date': fields.datetime('Create Date', readonly=True), - 'day': fields.char('Day', size=128, readonly=True), 'delay_open': fields.float('Delay to Assign',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to open the case"), 'delay_close': fields.float('Delay to Close',digits=(16,2),readonly=True, group_operator="avg",help="Number of Days to close the case"), 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"), @@ -77,9 +69,6 @@ class crm_lead_report_assign(osv.osv): CREATE OR REPLACE VIEW crm_lead_report_assign AS ( SELECT c.id, - to_char(c.date_assign, 'YYYY') as year, - to_char(c.date_assign, 'MM') as month, - to_char(c.date_assign, 'YYYY-MM-DD') as day, to_char(c.create_date, 'YYYY-MM-DD') as creation_date, to_char(c.date_open, 'YYYY-MM-DD') as opening_date, to_char(c.date_closed, 'YYYY-mm-dd') as date_closed, diff --git a/addons/crm_partner_assign/report/crm_lead_report_view.xml b/addons/crm_partner_assign/report/crm_lead_report_view.xml index a7ff8d80f0f..271c9b2016f 100644 --- a/addons/crm_partner_assign/report/crm_lead_report_view.xml +++ b/addons/crm_partner_assign/report/crm_lead_report_view.xml @@ -35,10 +35,9 @@ - - - - + + + @@ -50,9 +49,11 @@ crm.lead.assign.graph crm.lead.report.assign - - + + + + @@ -63,7 +64,7 @@ Opp. Assignment Analysis crm.lead.report.assign form - {'default_type': 'opportunity', "search_default_group_partner_date": 1, "search_default_group_grade":1,'group_by_no_leaf':1,'group_by':[]} + {'default_type': 'opportunity', 'group_by_no_leaf':1,'group_by':[]} graph [('type', '=', 'opportunity')] diff --git a/addons/crm_partner_assign/report/crm_partner_report_view.xml b/addons/crm_partner_assign/report/crm_partner_report_view.xml index 4e7e13afb15..02320219218 100644 --- a/addons/crm_partner_assign/report/crm_partner_report_view.xml +++ b/addons/crm_partner_assign/report/crm_partner_report_view.xml @@ -24,7 +24,7 @@ domain="[]" context="{'group_by':'grade_id'}" /> - @@ -35,25 +35,15 @@ - - - - crm.partner.assign.report.tree + + crm.partner.assign.report.graph crm.partner.report.assign - - - - - - - - - - - - - + + + + + @@ -62,8 +52,8 @@ Partnership Analysis crm.partner.report.assign - {'search_default_group_grade': 1, 'group_by_no_leaf':1,'group_by':[]} - tree + {'group_by_no_leaf':1,'group_by':[]} + graph [('grade_id', '!=', False)] diff --git a/addons/event/__openerp__.py b/addons/event/__openerp__.py index ad01e28f199..e7cf8c4c749 100644 --- a/addons/event/__openerp__.py +++ b/addons/event/__openerp__.py @@ -60,7 +60,6 @@ Key Features ], 'css': ['static/src/css/event.css'], 'installable': True, - 'application': True, 'auto_install': False, 'images': ['images/1_event_type_list.jpeg','images/2_events.jpeg','images/3_registrations.jpeg','images/events_kanban.jpeg'], } diff --git a/addons/fleet/fleet_board_view.xml b/addons/fleet/fleet_board_view.xml index 41093d2c283..c4732d9a0f4 100644 --- a/addons/fleet/fleet_board_view.xml +++ b/addons/fleet/fleet_board_view.xml @@ -54,10 +54,10 @@ Costs Analysis fleet.vehicle.cost - + form - tree - {"search_default_parent_false" : True,"search_default_groupby_year" : True,"search_default_groupby_cost_type" : True,"search_default_groupby_cost_subtype" : True, "search_default_groupby_vehicle_id" : True,} + graph + {"search_default_parent_false" : True,"search_default_groupby_year" : True, "search_default_groupby_cost_subtype" : True,"search_default_groupby_vehicle_id" : True}

OpenERP helps you managing the costs for your different vehicles @@ -73,10 +73,10 @@ Indicative Costs Analysis fleet.vehicle.cost - + form - tree - {"search_default_parent_true" : True,"search_default_groupby_cost_subtype" : True,"search_default_groupby_cost_type" : True,"search_default_groupby_parent_id" : True,} + graph + {"search_default_parent_true" : True,"search_default_groupby_cost_subtype" : True,"search_default_groupby_parent_id" : True,}

OpenERP helps you managing the costs for your different vehicles diff --git a/addons/fleet/fleet_view.xml b/addons/fleet/fleet_view.xml index db38821b56e..c8929d2b492 100644 --- a/addons/fleet/fleet_view.xml +++ b/addons/fleet/fleet_view.xml @@ -849,19 +849,17 @@ - - fleet.vehicle.cost.tree + + fleet.vehicle.cost.graph fleet.vehicle.cost - - - - - - - - - + + + + + + + diff --git a/addons/gamification_sale_crm/sale_crm_goals.xml b/addons/gamification_sale_crm/sale_crm_goals.xml index b48cc8a3117..4c1f8e46149 100644 --- a/addons/gamification_sale_crm/sale_crm_goals.xml +++ b/addons/gamification_sale_crm/sale_crm_goals.xml @@ -10,7 +10,7 @@ True - + [('state','!=','cancel'),('user_id','=',user.id),('type','=','out_invoice')] @@ -86,7 +86,7 @@ count orders - + [('state','=','paid'),('user_id','=',user.id),('type','=','out_invoice')] @@ -96,7 +96,7 @@ True - + [('state','=','paid'),('user_id','=',user.id),('type','=','out_invoice')] @@ -108,7 +108,7 @@ lower invoices - + [('state','!=','cancel'),('user_id','=',user.id),('type','=','out_refund')] @@ -119,7 +119,7 @@ True - + [('state','!=','cancel'),('user_id','=',user.id),('type','=','out_refund')] diff --git a/addons/hr_expense/report/hr_expense_report_view.xml b/addons/hr_expense/report/hr_expense_report_view.xml index 45a72fa0630..f2ba5290c96 100644 --- a/addons/hr_expense/report/hr_expense_report_view.xml +++ b/addons/hr_expense/report/hr_expense_report_view.xml @@ -10,6 +10,9 @@ + + + diff --git a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml index 5e2ca249d7d..8e06530ee9b 100644 --- a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml +++ b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml @@ -9,6 +9,7 @@ + diff --git a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml index 47854b1f2fd..a85b17b88af 100644 --- a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml +++ b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml @@ -9,6 +9,10 @@ + + + + diff --git a/addons/hw_escpos/controllers/main.py b/addons/hw_escpos/controllers/main.py index b1ba85b2dba..c668a1ffdd7 100644 --- a/addons/hw_escpos/controllers/main.py +++ b/addons/hw_escpos/controllers/main.py @@ -8,6 +8,7 @@ import openerp import time import random import math +import md5 import openerp.addons.hw_proxy.controllers.main as hw_proxy import subprocess from threading import Thread @@ -154,25 +155,9 @@ class EscposDriver(Thread): for tax in taxes: eprint.text(printline(tax['tax']['name'],price(tax['amount']), width=40,ratio=0.6)) - logo = None - - if receipt['company']['logo']: - img = receipt['company']['logo'] - img = img[img.find(',')+1:] - f = io.BytesIO('img') - f.write(base64.decodestring(img)) - f.seek(0) - logo_rgba = Image.open(f) - logo = Image.new('RGB', logo_rgba.size, (255,255,255)) - logo.paste(logo_rgba, mask=logo_rgba.split()[3]) - width = 300 - wfac = width/float(logo_rgba.size[0]) - height = int(logo_rgba.size[1]*wfac) - logo = logo.resize((width,height), Image.ANTIALIAS) - # Receipt Header - if logo: - eprint._convert_image(logo) + if receipt['company']['logo']: + eprint.print_base64_image(receipt['company']['logo']) eprint.text('\n') else: eprint.set(align='center',type='b',height=2,width=2) diff --git a/addons/hw_escpos/escpos/escpos.py b/addons/hw_escpos/escpos/escpos.py index df96646c9d7..a4942019f8c 100644 --- a/addons/hw_escpos/escpos/escpos.py +++ b/addons/hw_escpos/escpos/escpos.py @@ -13,6 +13,10 @@ except ImportError: import time import copy +import io +import base64 +import math +import md5 from PIL import Image @@ -30,6 +34,7 @@ class Escpos: """ ESC/POS Printer object """ device = None encoding = None + img_cache = {} def _check_image_size(self, size): @@ -49,6 +54,7 @@ class Escpos: i = 0 cont = 0 buffer = "" + self._raw(S_RASTER_N) buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1], 0) @@ -65,6 +71,36 @@ class Escpos: buffer = "" cont = 0 + def _raw_print_image(self, line, size, output=None ): + """ Print formatted image """ + i = 0 + cont = 0 + buffer = "" + raw = "" + + def __raw(string): + if output: + output(string) + else: + self._raw(string) + + raw += S_RASTER_N + buffer = "%02X%02X%02X%02X" % (((size[0]/size[1])/8), 0, size[1], 0) + raw += buffer.decode('hex') + buffer = "" + + while i < len(line): + hex_string = int(line[i:i+8],2) + buffer += "%02X" % hex_string + i += 8 + cont += 1 + if cont % 4 == 0: + raw += buffer.decode("hex") + buffer = "" + cont = 0 + + return raw + def _convert_image(self, im): """ Parse image and prepare it to a printable format """ @@ -111,16 +147,45 @@ class Escpos: pix_line += im_right img_size[0] += im_border[1] - self._print_image(pix_line, img_size) - + return (pix_line, img_size) def image(self,path_img): """ Open image file """ im_open = Image.open(path_img) im = im_open.convert("RGB") # Convert the RGB image in printable image - self._convert_image(im) + pix_line, img_size = self._convert_image(im) + self._print_image(pix_line, img_size) + def print_base64_image(self,img): + + print 'print_b64_img' + + id = md5.new(img).digest() + + if id not in self.img_cache: + print 'not in cache' + + img = img[img.find(',')+1:] + f = io.BytesIO('img') + f.write(base64.decodestring(img)) + f.seek(0) + img_rgba = Image.open(f) + img = Image.new('RGB', img_rgba.size, (255,255,255)) + img.paste(img_rgba, mask=img_rgba.split()[3]) + + print 'convert image' + + pix_line, img_size = self._convert_image(img) + + print 'print image' + + buffer = self._raw_print_image(pix_line, img_size) + self.img_cache[id] = buffer + + print 'raw image' + + self._raw(self.img_cache[id]) def qr(self,text): """ Print QR Code for the provided string """ diff --git a/addons/membership/report/report_membership_view.xml b/addons/membership/report/report_membership_view.xml index bfbdcefca5d..50b579d9ec2 100644 --- a/addons/membership/report/report_membership_view.xml +++ b/addons/membership/report/report_membership_view.xml @@ -40,6 +40,7 @@ + diff --git a/addons/mrp_operations/report/mrp_workorder_analysis.py b/addons/mrp_operations/report/mrp_workorder_analysis.py index f91961ad74c..d9d3947bae6 100644 --- a/addons/mrp_operations/report/mrp_workorder_analysis.py +++ b/addons/mrp_operations/report/mrp_workorder_analysis.py @@ -28,10 +28,6 @@ class mrp_workorder(osv.osv): _description = "Work Order Report" _auto = False _columns = { - 'year': fields.char('Year', size=64, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), - ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), - 'day': fields.char('Day', size=64, readonly=True), 'nbr': fields.integer('# of Lines', readonly=True), 'date': fields.date('Date', readonly=True), 'product_id': fields.many2one('product.product', 'Product', readonly=True), @@ -50,9 +46,6 @@ class mrp_workorder(osv.osv): create or replace view mrp_workorder as ( select to_date(to_char(wl.date_planned, 'MM-dd-YYYY'),'MM-dd-YYYY') as date, - to_char(wl.date_planned, 'YYYY') as year, - to_char(wl.date_planned, 'MM') as month, - to_char(wl.date_planned, 'YYYY-MM-DD') as day, min(wl.id) as id, mp.product_id as product_id, sum(wl.hour) as total_hours, diff --git a/addons/mrp_operations/report/mrp_workorder_analysis_view.xml b/addons/mrp_operations/report/mrp_workorder_analysis_view.xml index 144bfb95c63..92c6ef9adb2 100644 --- a/addons/mrp_operations/report/mrp_workorder_analysis_view.xml +++ b/addons/mrp_operations/report/mrp_workorder_analysis_view.xml @@ -10,7 +10,10 @@ + + + @@ -31,9 +34,9 @@ - - - + + + @@ -45,7 +48,7 @@ graph - {'search_default_Workcenter': 1,'search_default_year':1,'search_default_month':1,'group_by_no_leaf':1,'group_by':[]} + {'search_default_Workcenter': 1,'group_by_no_leaf':1,'group_by':[]} diff --git a/addons/point_of_sale/controllers/main.py b/addons/point_of_sale/controllers/main.py index a340b5f6262..b6848c8421f 100644 --- a/addons/point_of_sale/controllers/main.py +++ b/addons/point_of_sale/controllers/main.py @@ -58,13 +58,12 @@ class PosController(http.Controller): @http.route('/pos/web', type='http', auth='none') def a(self, debug=False, **k): + if not request.session.uid: + return http.local_redirect('/web/login?redirect=/pos/web') js_list = manifest_list('js',db=request.db, debug=debug) css_list = manifest_list('css',db=request.db, debug=debug) - print css_list - print js_list - js = "\n".join('' % i for i in js_list) #css = "\n".join('' % i for i in css_list) r = html_template % { @@ -76,9 +75,6 @@ class PosController(http.Controller): wc.show_application = function(){ wc.action_manager.do_action("pos.ui"); }; - wc.show_login = function(){ - window.location.href = '/'; - } wc.appendTo($(document.body)); """ } diff --git a/addons/point_of_sale/report/pos_order_report.py b/addons/point_of_sale/report/pos_order_report.py index f3ee5e317c8..5489ccf7099 100644 --- a/addons/point_of_sale/report/pos_order_report.py +++ b/addons/point_of_sale/report/pos_order_report.py @@ -28,11 +28,6 @@ class pos_order_report(osv.osv): _auto = False _columns = { 'date': fields.date('Date Order', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), - 'day': fields.char('Day', size=128, readonly=True), 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True), 'product_id':fields.many2one('product.product', 'Product', readonly=True), 'state': fields.selection([('draft', 'New'), ('paid', 'Closed'), ('done', 'Synchronized'), ('invoiced', 'Invoiced'), ('cancel', 'Cancelled')], @@ -57,15 +52,12 @@ class pos_order_report(osv.osv): select min(l.id) as id, count(*) as nbr, - to_date(to_char(s.date_order, 'dd-MM-YYYY'),'dd-MM-YYYY') as date, + s.date_order as date, sum(l.qty * u.factor) as product_qty, sum(l.qty * l.price_unit) as price_total, sum((l.qty * l.price_unit) * (l.discount / 100)) as total_discount, (sum(l.qty*l.price_unit)/sum(l.qty * u.factor))::decimal(16,2) as average_price, sum(cast(to_char(date_trunc('day',s.date_order) - date_trunc('day',s.create_date),'DD') as int)) as delay_validation, - to_char(s.date_order, 'YYYY') as year, - to_char(s.date_order, 'MM') as month, - to_char(s.date_order, 'YYYY-MM-DD') as day, s.partner_id as partner_id, s.state as state, s.user_id as user_id, @@ -78,8 +70,7 @@ class pos_order_report(osv.osv): left join product_template pt on (pt.id=l.product_id) left join product_uom u on (u.id=pt.uom_id) group by - to_char(s.date_order, 'dd-MM-YYYY'),to_char(s.date_order, 'YYYY'),to_char(s.date_order, 'MM'), - to_char(s.date_order, 'YYYY-MM-DD'), s.partner_id,s.state, + s.date_order, s.partner_id,s.state, s.user_id,s.warehouse_id,s.company_id,s.sale_journal,l.product_id,s.create_date having sum(l.qty * u.factor) != 0)""") diff --git a/addons/point_of_sale/report/pos_order_report_view.xml b/addons/point_of_sale/report/pos_order_report_view.xml index 135b6dcadaa..a34bab9c559 100644 --- a/addons/point_of_sale/report/pos_order_report_view.xml +++ b/addons/point_of_sale/report/pos_order_report_view.xml @@ -1,29 +1,18 @@ - - report.pos.order.tree + + report.pos.order.graph report.pos.order - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -36,10 +25,7 @@ - - - + @@ -50,9 +36,9 @@ - - - + + + @@ -62,9 +48,9 @@ Orders Analysis report.pos.order form - tree + graph - {'search_default_year':1,'search_default_today':1,'group_by_no_leaf':1,'group_by':['product_id']} + {'search_default_year':1, 'group_by_no_leaf':1,'group_by':['product_id']} diff --git a/addons/point_of_sale/static/src/js/devices.js b/addons/point_of_sale/static/src/js/devices.js index bb13503d903..8eb32d63873 100644 --- a/addons/point_of_sale/static/src/js/devices.js +++ b/addons/point_of_sale/static/src/js/devices.js @@ -142,7 +142,7 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal // connects to the specified url connect: function(url){ var self = this; - this.connection = new instance.web.Session(undefined,url); + this.connection = new instance.web.Session(undefined,url, { use_cors: true}); this.host = url; this.set_connection_status('connecting',{}); @@ -190,7 +190,7 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal if(!this.keptalive){ this.keptalive = true; function status(){ - self.connection.rpc('/hw_proxy/status_json',{},{timeout:500}) + self.connection.rpc('/hw_proxy/status_json',{},{timeout:2500}) .then(function(driver_status){ self.set_connection_status('connected',driver_status); },function(){ @@ -237,7 +237,14 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal this.set_connection_status('connecting'); if(options.force_ip){ - urls.push(options.force_ip); + var url = options.force_ip; + if(url.indexOf('//') < 0){ + url = 'http://'+url; + } + if(url.indexOf(':',5) < 0){ + url = url+port; + } + urls.push(url); }else{ if(localStorage['hw_proxy_url']){ urls.push(localStorage['hw_proxy_url']); diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index f65cf3b64f3..6b54c14113d 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -260,12 +260,26 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal self.company_logo.crossOrigin = 'anonymous'; var logo_loaded = new $.Deferred(); self.company_logo.onload = function(){ + var img = self.company_logo; + var ratio = 1; + var targetwidth = 300; + var maxheight = 150; + if( img.width !== targetwidth ){ + ratio = targetwidth / img.width; + } + if( img.height * ratio > maxheight ){ + ratio = maxheight / img.height; + } + var width = Math.floor(img.width * ratio); + var height = Math.floor(img.height * ratio); var c = document.createElement('canvas'); - c.width = self.company_logo.width; - c.height = self.company_logo.height; + c.width = width; + c.height = height var ctx = c.getContext('2d'); - ctx.drawImage(self.company_logo,0,0); + ctx.drawImage(self.company_logo,0,0, width, height); + self.company_logo_base64 = c.toDataURL(); + window.logo64 = self.company_logo_base64; logo_loaded.resolve(); }; self.company_logo.onerror = function(){ diff --git a/addons/project/report/project_cumulative.xml b/addons/project/report/project_cumulative.xml index 8886ae17505..e85d9d80138 100644 --- a/addons/project/report/project_cumulative.xml +++ b/addons/project/report/project_cumulative.xml @@ -6,10 +6,11 @@ project.task.history.cumulative.graph project.task.history.cumulative - + + diff --git a/addons/project/report/project_report.py b/addons/project/report/project_report.py index ed086b4318d..5a473469b2d 100644 --- a/addons/project/report/project_report.py +++ b/addons/project/report/project_report.py @@ -29,8 +29,6 @@ class report_project_task_user(osv.osv): _auto = False _columns = { 'name': fields.char('Task Summary', size=128, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'year': fields.char('Year', size=64, required=False, readonly=True), 'user_id': fields.many2one('res.users', 'Assigned To', readonly=True), 'date_start': fields.date('Assignation Date', readonly=True), 'no_of_days': fields.integer('# of Days', size=128, readonly=True), @@ -52,7 +50,6 @@ class report_project_task_user(osv.osv): 'nbr': fields.integer('# of tasks', readonly=True), 'priority': fields.selection([('4', 'Very Low'), ('3', 'Low'), ('2', 'Medium'), ('1', 'Urgent'), ('0', 'Very urgent')], string='Priority', readonly=True), - 'month':fields.selection(fields.date.MONTHS, 'Month', readonly=True), 'state': fields.selection([('draft', 'Draft'), ('open', 'In Progress'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')],'Status', readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'partner_id': fields.many2one('res.partner', 'Contact', readonly=True), @@ -67,9 +64,6 @@ class report_project_task_user(osv.osv): SELECT (select 1 ) AS nbr, t.id as id, - to_char(date_start, 'YYYY') as year, - to_char(date_start, 'MM') as month, - to_char(date_start, 'YYYY-MM-DD') as day, date_trunc('day',t.date_start) as date_start, date_trunc('day',t.date_end) as date_end, date_trunc('day',t.date_last_stage_update) as date_last_stage_update, @@ -102,9 +96,6 @@ class report_project_task_user(osv.osv): total_hours, planned_hours, hours_delay, - year, - month, - day, create_date, write_date, date_start, diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml index 6fb4e24e7ad..aced63a34d6 100644 --- a/addons/project/report/project_report_view.xml +++ b/addons/project/report/project_report_view.xml @@ -11,8 +11,12 @@ report.project.task.user - + + + + + @@ -44,9 +48,9 @@ - - - + + + @@ -59,7 +63,7 @@ form graph - {'search_default_year':1,'search_default_project':1,'group_by_no_leaf':1,'group_by':[]} + {'group_by_no_leaf':1,'group_by':[]} This report allows you to analyse the performance of your projects and users. You can analyse the quantities of tasks, the hours spent compared to the planned hours, the average number of days to open or close a task, etc. diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml index d491985cf52..a317138a310 100644 --- a/addons/purchase/board_purchase_view.xml +++ b/addons/purchase/board_purchase_view.xml @@ -17,15 +17,12 @@ purchase.report - - - @@ -39,9 +36,9 @@ purchase.report - - - + + + @@ -50,7 +47,7 @@ purchase.report form graph,tree - {'group_by':['month','category_id'],'group_by_no_leaf':1} + {'group_by_no_leaf':1} [('state','in',('approved','except_picking','except_invoice','done'))] diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py index f6a37bb37a7..ada1d83cdaf 100644 --- a/addons/purchase/report/purchase_report.py +++ b/addons/purchase/report/purchase_report.py @@ -32,8 +32,6 @@ class purchase_report(osv.osv): _auto = False _columns = { 'date': fields.date('Order Date', readonly=True, help="Date on which this document has been created"), - 'name': fields.char('Year',size=64,required=False, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), 'state': fields.selection([('draft', 'Request for Quotation'), ('confirmed', 'Waiting Supplier Ack'), ('approved', 'Approved'), @@ -60,12 +58,10 @@ class purchase_report(osv.osv): 'negociation': fields.float('Purchase-Standard Price', readonly=True, group_operator="avg"), 'price_standard': fields.float('Products Value', readonly=True, group_operator="sum"), 'nbr': fields.integer('# of Lines', readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'), - ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True), 'category_id': fields.many2one('product.category', 'Category', readonly=True) } - _order = 'name desc,price_total desc' + _order = 'date desc, price_total desc' def init(self, cr): tools.sql.drop_view_if_exists(cr, 'purchase_report') cr.execute(""" @@ -73,9 +69,6 @@ class purchase_report(osv.osv): select min(l.id) as id, s.date_order as date, - to_char(s.date_order, 'YYYY') as name, - to_char(s.date_order, 'MM') as month, - to_char(s.date_order, 'YYYY-MM-DD') as day, s.state, s.date_approve, s.minimum_planned_date as expected_date, @@ -121,9 +114,6 @@ class purchase_report(osv.osv): l.product_id, t.categ_id, s.date_order, - to_char(s.date_order, 'YYYY'), - to_char(s.date_order, 'MM'), - to_char(s.date_order, 'YYYY-MM-DD'), s.state, s.warehouse_id, u.uom_type, diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml index baaf2f8312c..50b22f40a05 100644 --- a/addons/purchase/report/purchase_report_view.xml +++ b/addons/purchase/report/purchase_report_view.xml @@ -6,7 +6,12 @@ purchase.report + + + + + @@ -43,66 +48,24 @@ - - - + + + - - purchase.order.qty.amount.graph - purchase.report - - - - - - - - - - - purchase.order.by.user.graph - purchase.report - - - - - - - - - - Purchase Analysis purchase.report form graph - {'search_default_year':1,'search_default_month':1,'search_default_group_partner_id':1,'search_default_group_product_id': 1, 'search_default_orders': 1, 'group_by_no_leaf':1,'group_by':[]} + {'search_default_year':1,'search_default_month':1, 'search_default_orders': 1, 'group_by_no_leaf':1,'group_by':[]} Purchase Analysis allows you to easily check and analyse your company purchase history and performance. From this menu you can track your negotiation performance, the delivery performance of your suppliers, etc. - - Total Qty and Amount by month - purchase.report - form - graph - - - - - Total Orders by User per month - purchase.report - form - graph - - - - @@ -113,6 +76,7 @@ form graph + {'full':'1','contact_display': 'partner','search_default_done':1, 'search_default_month':1, 'search_default_group_type':1, 'group_by': [], 'group_by_no_leaf':1,'search_default_year':1,} Reception Analysis allows you to easily check and analyse your company order receptions and the performance of your supplier's deliveries. diff --git a/addons/sale/board_sale_view.xml b/addons/sale/board_sale_view.xml index 021e0c140af..0ad4a6774fc 100644 --- a/addons/sale/board_sale_view.xml +++ b/addons/sale/board_sale_view.xml @@ -17,7 +17,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -40,8 +40,8 @@ form graph,tree - [('year','ilike',time.strftime('%Y')),('user_id','=',uid)] - {'group_by_no_leaf':1,'group_by':['month']} + [('date','<=', time.strftime('%Y-%m-%d')),('date','>=',time.strftime('%Y-01-01')),('user_id','=',uid)] + {'group_by_no_leaf':1} diff --git a/addons/stock/board_warehouse_view.xml b/addons/stock/board_warehouse_view.xml index a1f327eab5d..136d8991a99 100644 --- a/addons/stock/board_warehouse_view.xml +++ b/addons/stock/board_warehouse_view.xml @@ -7,9 +7,9 @@ report.stock.move - - + + @@ -19,7 +19,7 @@ report.stock.move form graph,tree - [('type','=','in'),('day','<=', time.strftime('%Y-%m-%d')),('day','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))] + [('type','=','in'),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))] {'search_default_in':1} @@ -28,7 +28,7 @@ report.stock.move form graph,tree - [('type','=','out'),('day','<=', time.strftime('%Y-%m-%d')),('day','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))] + [('type','=','out'),('date','<=', time.strftime('%Y-%m-%d')),('date','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))] {'search_default_out':1} diff --git a/addons/stock/report/report_stock_move.py b/addons/stock/report/report_stock_move.py index db9ea187260..1b183f5fcbd 100644 --- a/addons/stock/report/report_stock_move.py +++ b/addons/stock/report/report_stock_move.py @@ -30,11 +30,6 @@ class report_stock_move(osv.osv): _auto = False _columns = { 'date': fields.date('Date', readonly=True), - 'year': fields.char('Year', size=4, readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), - ('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'), - ('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True), 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True), 'product_id':fields.many2one('product.product', 'Product', readonly=True), 'company_id':fields.many2one('res.company', 'Company', readonly=True), @@ -63,9 +58,6 @@ class report_stock_move(osv.osv): SELECT min(sm.id) as id, date_trunc('day', sm.date) as date, - to_char(date_trunc('day',sm.date), 'YYYY') as year, - to_char(date_trunc('day',sm.date), 'MM') as month, - to_char(date_trunc('day',sm.date), 'YYYY-MM-DD') as day, avg(date(sm.date)-date(sm.create_date)) as day_diff, avg(date(sm.date_expected)-date(sm.create_date)) as day_diff1, avg(date(sm.date)-date(sm.date_expected)) as day_diff2, @@ -115,8 +107,7 @@ class report_stock_move(osv.osv): coalesce(sp.type, 'other'), date_trunc('day', sm.date), sm.partner_id, sm.state, sm.product_uom, sm.date_expected, sm.product_id, pt.standard_price, sm.picking_id, - sm.company_id, sm.location_id, sm.location_dest_id, pu.factor, pt.categ_id, sp.stock_journal_id, - year, month, day + sm.company_id, sm.location_id, sm.location_dest_id, pu.factor, pt.categ_id, sp.stock_journal_id ) """) diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml index fa578a82309..452cfd1b3e6 100644 --- a/addons/stock/report/report_stock_move_view.xml +++ b/addons/stock/report/report_stock_move_view.xml @@ -16,6 +16,9 @@ + + + @@ -52,9 +55,9 @@ - - - + + + @@ -66,6 +69,7 @@ form graph + {'contact_display': 'partner','search_default_done':1,'search_default_year':1, 'search_default_month':1, 'search_default_group_type':1, 'group_by': [], 'group_by_no_leaf':1,} Moves Analysis allows you to easily check and analyse your company stock moves. Use this report when you want to analyse the different routes taken by your products and inventory management performance. @@ -78,6 +82,7 @@ + diff --git a/addons/website/__openerp__.py b/addons/website/__openerp__.py index 9161255c835..7779686c041 100644 --- a/addons/website/__openerp__.py +++ b/addons/website/__openerp__.py @@ -27,4 +27,5 @@ OpenERP Website CMS 'js': ['static/src/js/website.backend.js'], 'qweb' : ['static/src/xml/website.backend.xml'], 'css': ['static/src/css/website.backend.css'], + 'application': True, } diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index d8773e6ebfc..6948f102fec 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -106,7 +106,7 @@ class ir_http(orm.AbstractModel): code = getattr(exception, 'code', code) if isinstance(exception, ir_qweb.QWebException): values.update(qweb_exception=exception) - if isinstance(exception.qweb.get('inner'), openerp.exceptions.AccessError): + if isinstance(exception.qweb.get('cause'), openerp.exceptions.AccessError): code = 403 if code == 500: logger.error("500 Internal Server Error:\n\n%s", values['traceback']) diff --git a/addons/website/static/description/index.html b/addons/website/static/description/index.html index 80cb043b07e..57393345bb6 100644 --- a/addons/website/static/description/index.html +++ b/addons/website/static/description/index.html @@ -6,10 +6,7 @@

- - - - +
@@ -57,7 +54,7 @@

Awesome. Astonishingly Beautiful.

Design using clean building blocks

- +

@@ -133,7 +130,7 @@

- +
diff --git a/addons/website/static/src/js/website.tour.js b/addons/website/static/src/js/website.tour.js index d0611419904..39eaa5b7279 100644 --- a/addons/website/static/src/js/website.tour.js +++ b/addons/website/static/src/js/website.tour.js @@ -17,7 +17,7 @@ website.EditorBar.include({ var $menuItem = $($.parseHTML('
  • '+tour.name+'
  • ')); $menuItem.click(function () { tour.reset(); - tour.trigger(); + tour.run(); }); menu.append($menuItem); }); @@ -100,20 +100,29 @@ website.Tour = openerp.Class.extend({ this.registerSteps(); }, - run: function (automatic, force) { - if (force) this.reset(); + run: function (automatic) { + this.reset(); for (var k in this.localStorage) { if (!k.indexOf("tour-") && k.indexOf("-test") > -1) return; } - // only one test running - if (website.Tour.busy) return; - website.Tour.busy = true; - this.localStorage.setItem("tour-"+this.id+"-test", 0); - website.Tour.waitReady.call(this, function () {this._run(automatic, force);}); + if (automatic) { + this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); + } + + // redirect to begin of the tour + if (this.path) { + var path = this.path.split('?'); + window.location.href = path[0] + "?tutorial."+this.id+"=true" + path.slice(1, path.length).join("?"); + return; + } + + var self = this; + this.localStorage.setItem("tour-"+this.id+"-test", 0); + website.Tour.waitReady.call(this, function () {self._running();}); }, running: function () { if (+this.localStorage.getItem("tour-"+this.id+"-test") >= this.steps.length) { @@ -121,33 +130,29 @@ website.Tour = openerp.Class.extend({ return; } - if (website.Tour.busy || !this.testUrl()) return; + if (website.Tour.is_busy() || !this.testUrl()) return; + + // launch tour with url + this.checkRunningUrl(); + + // mark tour as busy (only one test running) + if (this.localStorage.getItem("tour-"+this.id+"-test") != null) { + website.Tour.busy = true; + } var self = this; - website.Tour.waitReady.call(this, function () { - self._running(); - }, 500); + website.Tour.waitReady.call(this, function () {self._running();}); }, - _run: function (automatic, force) { - this.reset(); - this.localStorage.setItem("tour-"+this.id+"-test", 0); - if (automatic) { - this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); - } - this.nextStep(null, automatic ? this.autoNextStep : null, automatic ? 5000 : null); - }, _running: function () { var stepId = this.localStorage.getItem("tour-"+this.id+"-test"); var automatic = !!this.localStorage.getItem("tour-"+this.id+"-test-automatic"); - if (stepId || this.checkRuningUrl()) { - + if (stepId != null) { if (!this.check(this.step(stepId))) { var step = this.next(stepId); stepId = step ? step.stepId : stepId; } - website.Tour.busy = true; this.nextStep(stepId, automatic ? this.autoNextStep : null, automatic ? 5000 : null); } }, @@ -168,22 +173,15 @@ website.Tour = openerp.Class.extend({ $('.popover.tour').remove(); }, - trigger: function (automatic) { - this.reset(); - if (this.path) { - this.localStorage.setItem("tour-"+this.id+"-test", 0); - if (automatic) this.localStorage.setItem("tour-"+this.id+"-test-automatic", true); - var path = this.path.split('?'); - window.location.href = path[0] + "?tutorial."+this.id+"=true" + path.slice(1, path.length).join("?"); - } else { - this.run(automatic); - } - }, + testUrl: function () { return !this.testPath || this.testPath.test(window.location.href); }, - checkRuningUrl: function () { - return window.location.search.indexOf("tutorial."+this.id+"=true") > -1; + checkRunningUrl: function () { + if (window.location.search.indexOf("tutorial."+this.id+"=true") > -1) { + this.localStorage.setItem("tour-"+this.id+"-test", 0); + window.location.href = window.location.href.replace(/tutorial.+=true&?/, ''); + } }, registerSteps: function () { @@ -430,7 +428,15 @@ website.Tour.waitReady = function (callback) { }); }; website.Tour.run_test = function (id) { - website.Tour.get(id).trigger(true); + website.Tour.get(id).run(true); +}; +website.Tour.is_busy = function () { + for (var k in this.localStorage) { + if (!k.indexOf("tour-")) { + return true; + } + } + return website.Tour.busy; }; diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py index 96484882577..15973a55016 100644 --- a/addons/website/tests/test_ui.py +++ b/addons/website/tests/test_ui.py @@ -58,7 +58,6 @@ class WebsiteUiSuite(unittest.TestSuite): return iter([self]) def run(self, result): - return # clean slate if sql_db._Pool is not None: sql_db._Pool.close_all(sql_db.dsn(tools.config['db_name'])) diff --git a/addons/website/tests/ui_suite/ui_test_runner.js b/addons/website/tests/ui_suite/ui_test_runner.js index 507a8ca1e72..9a36d372f10 100644 --- a/addons/website/tests/ui_suite/ui_test_runner.js +++ b/addons/website/tests/ui_suite/ui_test_runner.js @@ -56,6 +56,16 @@ function run (test) { }; page.onConsoleMessage = function(message) { console.log(message); + try { + var result = JSON.parse(message); + if (result.event === 'success') { + phantom.exit(0); + } else { + phantom.exit(1); + } + } catch (exception) { + phantom.exit(1); + } }; page.onCallback = function(data) { diff --git a/addons/website/views/themes.xml b/addons/website/views/themes.xml index c9c3d910ffb..f56ab2b5dd7 100644 --- a/addons/website/views/themes.xml +++ b/addons/website/views/themes.xml @@ -18,7 +18,7 @@ Have a look at your homepage or try another theme below.

    -

    Try a New Bootswatch Theme

    +

    Try a New Theme

    You'll be able to change the theme at anytime

    diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 993ef43f6db..c288dbacb93 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -468,9 +468,9 @@
    -

    +

    Error message: -

    +                        
                         

    The error occured while rendering the template @@ -576,7 +576,7 @@

    Template fallback

    -

    An error occured while rendering the template .

    +

    An error occured while rendering the template .

    If this error is caused by a change of yours in the templates, you have the possibility to reset one or more templates to their factory settings.

      diff --git a/addons/website_blog/__openerp__.py b/addons/website_blog/__openerp__.py index 1a10183ac78..97c163945af 100644 --- a/addons/website_blog/__openerp__.py +++ b/addons/website_blog/__openerp__.py @@ -49,4 +49,5 @@ OpenERP Blog 'static/src/xml/*.xml' ], 'installable': True, + 'application': True, } diff --git a/addons/website_blog/static/description/index.html b/addons/website_blog/static/description/index.html index d25e8f33cc1..7ca5b48ae55 100644 --- a/addons/website_blog/static/description/index.html +++ b/addons/website_blog/static/description/index.html @@ -138,7 +138,7 @@

      Attract new visitors with a good referencing

      - +
      @@ -173,7 +173,7 @@
      - +
    diff --git a/addons/website_blog/static/src/js/website.tour.blog.js b/addons/website_blog/static/src/js/website.tour.blog.js index 5e7a7888b89..1bd9f22fa31 100644 --- a/addons/website_blog/static/src/js/website.tour.blog.js +++ b/addons/website_blog/static/src/js/website.tour.blog.js @@ -13,7 +13,7 @@ website.BlogTour = website.Tour.extend({ id: 'blog', name: "Create a blog post", - testPath: /\/blogpost\/[0-9]+\//, + testPath: /\/(blog|blogpost)\/[0-9]+\//, init: function (editor) { var self = this; self.steps = [ diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml index 3afa77581ac..cd06e515a3e 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml @@ -35,7 +35,7 @@ Contact a reseller
    -
    +

    Resellers by Country