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
-

+
-

+
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/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
-