Explorar el Código

[security] [fix] stop client side queries in reportview.py

version-14
Rushabh Mehta hace 10 años
padre
commit
1f0690b05d
Se han modificado 3 ficheros con 8 adiciones y 29 borrados
  1. +4
    -1
      frappe/model/db_query.py
  2. +0
    -28
      frappe/public/js/frappe/views/listview.js
  3. +4
    -0
      frappe/widgets/reportview.py

+ 4
- 1
frappe/model/db_query.py Ver fichero

@@ -90,7 +90,10 @@ class DatabaseQuery(object):
if isinstance(self.filters, basestring): if isinstance(self.filters, basestring):
self.filters = json.loads(self.filters) self.filters = json.loads(self.filters)
if isinstance(self.fields, basestring): if isinstance(self.fields, basestring):
self.fields = json.loads(self.fields)
if self.fields == "*":
self.fields = ["*"]
else:
self.fields = json.loads(self.fields)
if isinstance(self.filters, dict): if isinstance(self.filters, dict):
fdict = self.filters fdict = self.filters
self.filters = [] self.filters = []


+ 0
- 28
frappe/public/js/frappe/views/listview.js Ver fichero

@@ -514,31 +514,3 @@ frappe.views.ListView = Class.extend({
$(parent).append(repl(icon_html, {icon_class: icon_class, label: __(label) || ''})); $(parent).append(repl(icon_html, {icon_class: icon_class, label: __(label) || ''}));
} }
}); });

// embeddable
frappe.provide('frappe.views.RecordListView');
frappe.views.RecordListView = frappe.views.DocListView.extend({
init: function(doctype, wrapper, ListView) {
this.doctype = doctype;
this.wrapper = wrapper;
this.listview = new ListView(this, doctype);
this.listview.parent = this;
this.setup();
},

setup: function() {
var me = this;
me.page_length = 10;
$(me.wrapper).empty();
me.init_list();
},

get_args: function() {
var args = this._super();
$.each((this.default_filters || []), function(i, f) {
args.filters.push(f);
});
args.docstatus = args.docstatus.concat((this.default_docstatus || []));
return args;
},
});

+ 4
- 0
frappe/widgets/reportview.py Ver fichero

@@ -20,6 +20,7 @@ def execute(doctype, query=None, filters=None, fields=None, or_filters=None, doc
order_by, limit_start, limit_page_length, as_list, with_childnames, debug) order_by, limit_start, limit_page_length, as_list, with_childnames, debug)


def get_form_params(): def get_form_params():
"""Stringify GET request parameters."""
data = frappe._dict(frappe.local.form_dict) data = frappe._dict(frappe.local.form_dict)


del data["cmd"] del data["cmd"]
@@ -31,6 +32,9 @@ def get_form_params():
if isinstance(data.get("docstatus"), basestring): if isinstance(data.get("docstatus"), basestring):
data["docstatus"] = json.loads(data["docstatus"]) data["docstatus"] = json.loads(data["docstatus"])


# queries must always be server side
data.query = None

return data return data


def compress(data): def compress(data):


Cargando…
Cancelar
Guardar