[MERGE]:merged with trunk

bzr revid: apa@tinyerp.com-20120801070544-9r89819sjvgn9bnk
This commit is contained in:
Amit Patel (OpenERP) 2012-08-01 12:35:44 +05:30
commit 2917ba547a
16 changed files with 54 additions and 70 deletions

View File

@ -3,8 +3,10 @@
"category": "Hidden",
"description":
"""
OpenERP Web core module.
This module provides the core of the OpenERP Web Client.
OpenERP Web core module.
========================
This module provides the core of the OpenERP Web Client.
""",
"depends" : [],
'auto_install': True,

View File

@ -426,10 +426,13 @@ class DisableCacheMiddleware(object):
referer = environ.get('HTTP_REFERER', '')
parsed = urlparse.urlparse(referer)
debug = parsed.query.count('debug') >= 1
filtered_headers = [(k,v) for k,v in headers if not (k=='Last-Modified' or (debug and (k=='Cache-Control' or k=='Expires')))]
nh = dict(headers)
if 'Last-Modified' in nh: del nh['Last-Modified']
if debug:
filtered_headers.append(('Cache-Control', 'no-cache'))
start_response(status, filtered_headers)
if 'Expires' in nh: del nh['Expires']
if 'Etag' in nh: del nh['Etag']
nh['Cache-Control'] = 'no-cache'
start_response(status, nh.items())
return self.app(environ, start_wrapped)
class Root(object):

View File

@ -997,6 +997,16 @@ class DataSet(openerpweb.Controller):
elif isinstance(kwargs[k], common.nonliterals.BaseDomain):
kwargs[k] = req.session.eval_domain(kwargs[k])
# Temporary implements future display_name special field for model#read()
if method == 'read' and kwargs.get('context') and kwargs['context'].get('future_display_name'):
if 'display_name' in args[1]:
names = req.session.model(model).name_get(args[0], **kwargs)
args[1].remove('display_name')
r = getattr(req.session.model(model), method)(*args, **kwargs)
for i in range(len(r)):
r[i]['display_name'] = names[i][1] or "%s#%d" % (model, names[i][0])
return r
return getattr(req.session.model(model), method)(*args, **kwargs)
@openerpweb.jsonrequest

View File

@ -896,7 +896,8 @@ instance.web.Client = instance.web.Widget.extend({
this.$element.on('click', '.oe_dropdown_toggle', function(ev) {
ev.preventDefault();
var $toggle = $(this);
var $menu = $toggle.parent().find('.oe_dropdown_menu');
var $menu = $toggle.siblings('.oe_dropdown_menu');
$menu = $menu.size() >= 1 ? $menu : $toggle.find('.oe_dropdown_menu');
var state = $menu.is('.oe_opened');
setTimeout(function() {
// Do not alter propagation

View File

@ -267,7 +267,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (this.$pager) {
this.$pager.show();
}
this.$element.show().css('visibility', 'hidden');
this.$element.add(this.$buttons).removeClass('oe_form_dirty');
var shown = this.has_been_loaded;
@ -277,8 +276,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
// null index means we should start a new record
return self.on_button_new();
}
return self.dataset.read_index(_.keys(self.fields_view.fields), {
context: { 'bin_size': true }
var fields = _.keys(self.fields_view.fields);
fields.push('display_name');
return self.dataset.read_index(fields, {
context: { 'bin_size': true, 'future_display_name' : true }
}).pipe(self.on_record_loaded);
});
}
@ -286,7 +287,6 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (options.editable) {
self.to_edit_mode();
}
self.$element.css('visibility', 'visible');
});
},
do_hide: function () {
@ -302,7 +302,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
this._super();
},
on_record_loaded: function(record) {
var self = this, defs = [];
var self = this, set_values = [];
if (!record) {
this.set({ 'title' : undefined });
this.do_warn("Form", "The record could not be found in the database.", true);
@ -310,19 +310,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
}
this.datarecord = record;
this._actualize_mode();
var titleDef = $.Deferred();
if (record.id) {
this.dataset.name_get(record.id).then(function(names) {
self.set({ 'title' : names[0][1] });
}).always(function() {
titleDef.resolve();
});
} else {
this.set({ 'title' : "New record" });
titleDef.resolve();
}
defs.push(titleDef);
this.set({ 'title' : record.id ? record.display_name : "New record" });
if (this.qweb) {
this.kill_current_form();
@ -334,9 +322,9 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
_(this.fields).each(function (field, f) {
field._dirty_flag = false;
var result = field.set_value(self.datarecord[f] || false);
defs.push(result);
set_values.push(result);
});
return $.when.apply(null, defs).pipe(function() {
return $.when.apply(null, set_values).pipe(function() {
if (!record.id) {
// New record: Second pass in order to trigger the onchanges
// respecting the fields order defined in the view
@ -868,8 +856,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM
if (self.dataset.index == null || self.dataset.index < 0) {
return $.when(self.on_button_new());
} else {
return self.dataset.read_index(_.keys(self.fields_view.fields), {
context : { 'bin_size' : true }
var fields = _.keys(self.fields_view.fields);
fields.push('display_name');
return self.dataset.read_index(fields, {
context : { 'bin_size' : true, 'future_display_name' : true }
}).pipe(self.on_record_loaded);
}
});
@ -2074,7 +2064,7 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we
return this.get('value') === '' || this._super();
},
focus: function() {
this.delay_focus(this.$element.find('input:first'));
this.$element.find('input:first')[0].focus();
}
});

View File

@ -1,10 +1,7 @@
{
"name": "Web Calendar",
"category": "Hidden",
"description":
"""
OpenERP Web Calendar view.
""",
"description":"""OpenERP Web Calendar view.""",
"version": "2.0",
"depends": ['web'],
"js": [

View File

@ -1,10 +1,7 @@
{
"name": "Web Dashboard",
"category": "Hidden",
"description":
"""
OpenERP Web Dashboard view.
""",
"description":"""OpenERP Web Dashboard view.""",
"version": "2.0",
"depends": ['web'],
"js": [

View File

@ -1,7 +1,7 @@
{
"name" : "OpenERP Web Diagram",
"category" : "Hidden",
"description":'Openerp Web Diagram view',
"description":"""Openerp Web Diagram view.""",
"version" : "2.0",
"depends" : ["web"],
"js": [

View File

@ -1,10 +1,7 @@
{
"name": "Web Gantt",
"category": "Hidden",
"description":
"""
OpenERP Web Gantt chart view.
""",
"description":"""OpenERP Web Gantt chart view.""",
"version": "2.0",
"depends": ['web'],
"js": [

View File

@ -1,14 +1,16 @@
{
"name": "Graph Views",
"category" : "Hidden",
"description":"""Graph Views for Web Client
"description":"""
Graph Views for Web Client.
===========================
* Parse a <graph> view but allows changing dynamically the presentation
* Graph Types: pie, lines, areas, bars, radar
* Stacked/Not Stacked for areas and bars
* Legends: top, inside (top/left), hidden
* Features: download as PNG or CSV, browse data grid, switch orientation
* Unlimited "Group By" levels (not stacked), two cross level analysis (stacked)
* Parse a <graph> view but allows changing dynamically the presentation
* Graph Types: pie, lines, areas, bars, radar
* Stacked/Not Stacked for areas and bars
* Legends: top, inside (top/left), hidden
* Features: download as PNG or CSV, browse data grid, switch orientation
* Unlimited "Group By" levels (not stacked), two cross level analysis (stacked)
""",
"version": "3.0",
"depends": ['web'],

View File

@ -1,10 +1,7 @@
{
"name": "Hello",
"category": "Hidden",
"description":
"""
OpenERP Web example module.
""",
"description":"""OpenERP Web example module.""",
"version": "2.0",
"depends": [],
"js": ["static/*/*.js", "static/*/js/*.js"],

View File

@ -1,10 +1,7 @@
{
"name" : "Base Kanban",
"category": "Hidden",
"description":
"""
OpenERP Web kanban view.
""",
"description":"""OpenERP Web kanban view.""",
"version" : "2.0",
"depends" : ["web"],
"js": [

View File

@ -1,10 +1,7 @@
{
"name" : "OpenERP Web Mobile",
"category": "Hidden",
"description":
"""
OpenERP Web Mobile.
""",
"description":"""OpenERP Web Mobile.""",
"version" : "2.0",
"depends" : [],
'auto_install': True,

View File

@ -1,10 +1,7 @@
{
"name" : "Process",
"version": "2.0",
"description":
"""
OpenERP Web process view.
""",
"description":"""OpenERP Web process view.""",
"depends" : ["web_diagram"],
"js": [
'static/lib/dracula/*.js',

View File

@ -1,7 +1,7 @@
{
"name" : "OpenERP Web Web",
"category" : "Hidden",
"description":'Openerp Web Web',
"description":"""Openerp Web Web.""",
"version" : "2.0",
"depends" : [],
"installable" : False,

View File

@ -1,10 +1,7 @@
{
"name": "Tests",
"category": "Hidden",
"description":
"""
OpenERP Web test suite.
""",
"description":"""OpenERP Web test suite.""",
"version": "2.0",
"depends": [],
"js": ["static/src/js/*.js"],