Parcourir la source

Merge branch 'develop'

version-14
Nabin Hait il y a 8 ans
Parent
révision
36abbb6659
8 fichiers modifiés avec 35 ajouts et 21 suppressions
  1. +1
    -1
      frappe/__init__.py
  2. +5
    -5
      frappe/desk/reportview.py
  3. +1
    -1
      frappe/geo/address_and_contact.py
  4. +4
    -1
      frappe/model/db_query.py
  5. +2
    -2
      frappe/patches.txt
  6. +6
    -7
      frappe/public/js/frappe/form/toolbar.js
  7. +9
    -4
      frappe/public/js/frappe/socketio_client.js
  8. +7
    -0
      frappe/tests/test_db_query.py

+ 1
- 1
frappe/__init__.py Voir le fichier

@@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json
from .exceptions import * from .exceptions import *
from .utils.jinja import get_jenv, get_template, render_template from .utils.jinja import get_jenv, get_template, render_template


__version__ = '8.0.35'
__version__ = '8.0.36'
__title__ = "Frappe Framework" __title__ = "Frappe Framework"


local = Local() local = Local()


+ 5
- 5
frappe/desk/reportview.py Voir le fichier

@@ -37,7 +37,7 @@ def get_form_params():
data["save_user_settings"] = json.loads(data["save_user_settings"]) data["save_user_settings"] = json.loads(data["save_user_settings"])
else: else:
data["save_user_settings"] = True data["save_user_settings"] = True
doctype = data["doctype"] doctype = data["doctype"]
fields = data["fields"] fields = data["fields"]


@@ -51,9 +51,9 @@ def get_form_params():
fieldname = fieldname.strip("`") fieldname = fieldname.strip("`")


df = frappe.get_meta(parenttype).get_field(fieldname) df = frappe.get_meta(parenttype).get_field(fieldname)
report_hide = df.report_hide if df else None report_hide = df.report_hide if df else None
# remove the field from the query if the report hide flag is set # remove the field from the query if the report hide flag is set
if report_hide: if report_hide:
fields.remove(field) fields.remove(field)
@@ -331,7 +331,7 @@ def build_match_conditions(doctype, as_condition=True):
else: else:
return match_conditions return match_conditions


def get_filters_cond(doctype, filters, conditions):
def get_filters_cond(doctype, filters, conditions, ignore_permissions=None):
if filters: if filters:
flt = filters flt = filters
if isinstance(filters, dict): if isinstance(filters, dict):
@@ -347,7 +347,7 @@ def get_filters_cond(doctype, filters, conditions):
query = DatabaseQuery(doctype) query = DatabaseQuery(doctype)
query.filters = flt query.filters = flt
query.conditions = conditions query.conditions = conditions
query.build_filter_conditions(flt, conditions)
query.build_filter_conditions(flt, conditions, ignore_permissions)


cond = ' and ' + ' and '.join(query.conditions) cond = ' and ' + ' and '.join(query.conditions)
else: else:


+ 1
- 1
frappe/geo/address_and_contact.py Voir le fichier

@@ -4,7 +4,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe


def load_address_and_contact(doc, key):
def load_address_and_contact(doc, key=None):
"""Loads address list and contact list in `__onload`""" """Loads address list and contact list in `__onload`"""
from frappe.geo.doctype.address.address import get_address_display from frappe.geo.doctype.address.address import get_address_display




+ 4
- 1
frappe/model/db_query.py Voir le fichier

@@ -250,8 +250,11 @@ class DatabaseQuery(object):
if match_conditions: if match_conditions:
self.conditions.append("(" + match_conditions + ")") self.conditions.append("(" + match_conditions + ")")


def build_filter_conditions(self, filters, conditions):
def build_filter_conditions(self, filters, conditions, ignore_permissions=None):
"""build conditions from user filters""" """build conditions from user filters"""
if ignore_permissions is not None:
self.flags.ignore_permissions = ignore_permissions

if isinstance(filters, dict): if isinstance(filters, dict):
filters = [filters] filters = [filters]




+ 2
- 2
frappe/patches.txt Voir le fichier

@@ -157,7 +157,6 @@ frappe.patches.v7_0.cleanup_list_settings
execute:frappe.db.set_default('language', '') execute:frappe.db.set_default('language', '')
frappe.patches.v7_1.refactor_integration_broker frappe.patches.v7_1.refactor_integration_broker
frappe.patches.v7_1.set_backup_limit frappe.patches.v7_1.set_backup_limit
frappe.patches.v7_1.disabled_print_settings_for_custom_print_format
frappe.patches.v7_2.set_doctype_engine frappe.patches.v7_2.set_doctype_engine
frappe.patches.v7_2.merge_knowledge_base frappe.patches.v7_2.merge_knowledge_base
frappe.patches.v7_0.update_report_builder_json frappe.patches.v7_0.update_report_builder_json
@@ -181,4 +180,5 @@ frappe.patches.v8_0.fix_non_english_desktop_icons # 2017-04-12
frappe.patches.v8_0.set_doctype_values_in_custom_role frappe.patches.v8_0.set_doctype_values_in_custom_role
frappe.patches.v8_0.install_new_build_system_requirements frappe.patches.v8_0.install_new_build_system_requirements
frappe.patches.v8_0.set_currency_field_precision frappe.patches.v8_0.set_currency_field_precision
frappe.patches.v8_0.rename_print_to_printing
frappe.patches.v8_0.rename_print_to_printing
frappe.patches.v7_1.disabled_print_settings_for_custom_print_format

+ 6
- 7
frappe/public/js/frappe/form/toolbar.js Voir le fichier

@@ -176,13 +176,12 @@ frappe.ui.form.Toolbar = Class.extend({


// feedback // feedback
if(!this.frm.doc.__unsaved) { if(!this.frm.doc.__unsaved) {
if(is_submittable && docstatus != 1)
return

this.page.add_menu_item(__("Request Feedback"), function() {
feedback = new frappe.utils.Feedback();
feedback.manual_feedback_request(me.frm.doc);
}, true)
if(is_submittable && docstatus == 1) {
this.page.add_menu_item(__("Request Feedback"), function() {
feedback = new frappe.utils.Feedback();
feedback.manual_feedback_request(me.frm.doc);
}, true)
}
} }


// New // New


+ 9
- 4
frappe/public/js/frappe/socketio_client.js Voir le fichier

@@ -196,10 +196,15 @@ frappe.socket = {
}, },
setup_file_watchers: function() { setup_file_watchers: function() {
var host = window.location.origin; var host = window.location.origin;
var port = '6787';
// remove the port number from string
host = host.split(':').slice(0, -1).join(":");
host = host + ':' + port;
if(window.dev_server) {
var port = '6787';
var parts = host.split(":");
// remove the port number from string if exists
if (parts.length > 2) {
host = host.split(':').slice(0, -1).join(":");
}
host = host + ':' + port;
}


frappe.socket.file_watcher = io.connect(host); frappe.socket.file_watcher = io.connect(host);
// css files auto reload // css files auto reload


+ 7
- 0
frappe/tests/test_db_query.py Voir le fichier

@@ -5,6 +5,7 @@ from __future__ import unicode_literals
import frappe, unittest import frappe, unittest


from frappe.model.db_query import DatabaseQuery from frappe.model.db_query import DatabaseQuery
from frappe.desk.reportview import get_filters_cond


class TestReportview(unittest.TestCase): class TestReportview(unittest.TestCase):
def test_basic(self): def test_basic(self):
@@ -70,6 +71,12 @@ class TestReportview(unittest.TestCase):
self.assertTrue({ "name": todays_event.name } in data) self.assertTrue({ "name": todays_event.name } in data)
self.assertTrue({ "name": event.name } in data) self.assertTrue({ "name": event.name } in data)


def test_ignore_permissions_for_get_filters_cond(self):
frappe.set_user('test1@example.com')
self.assertRaises(frappe.PermissionError, get_filters_cond, 'DocType', dict(istable=1), [])
self.assertTrue(get_filters_cond('DocType', dict(istable=1), [], ignore_permissions=True))
frappe.set_user('Administrator')

def create_event(subject="_Test Event", starts_on=None): def create_event(subject="_Test Event", starts_on=None):
""" create a test event """ """ create a test event """




Chargement…
Annuler
Enregistrer