Merge branch 'master' into develop

This commit is contained in:
Nabin Hait 2017-01-20 15:26:01 +05:30
commit 80e97a535b
6 changed files with 41 additions and 31 deletions

View file

@ -13,7 +13,7 @@ import os, sys, importlib, inspect, json
from .exceptions import *
from .utils.jinja import get_jenv, get_template, render_template
__version__ = '7.2.11'
__version__ = '7.2.12'
__title__ = "Frappe Framework"
local = Local()

View file

@ -60,7 +60,7 @@ class DocType(Document):
self.make_amendable()
self.validate_website()
if not self.is_new():
self.update_fields_to_fetch()
self.setup_fields_to_fetch()
def check_developer_mode(self):
"""Throw exception if not developer mode or via patch"""
@ -70,8 +70,8 @@ class DocType(Document):
if not frappe.conf.get("developer_mode") and not self.custom:
frappe.throw(_("Not in Developer Mode! Set in site_config.json or make 'Custom' DocType."))
def update_fields_to_fetch(self):
'''Update values for newly set fetch values'''
def setup_fields_to_fetch(self):
'''Setup query to update values for newly set fetch values'''
try:
old_meta = frappe.get_meta(frappe.get_doc('DocType', self.name), cached=False)
old_fields_to_fetch = [df.fieldname for df in old_meta.get_fields_to_fetch()]
@ -80,26 +80,34 @@ class DocType(Document):
new_meta = frappe.get_meta(self, cached=False)
self.flags.update_fields_to_fetch_queries = []
if set(old_fields_to_fetch) != set([df.fieldname for df in new_meta.get_fields_to_fetch()]):
for df in new_meta.get_fields_to_fetch():
if df.fieldname not in old_fields_to_fetch:
link_fieldname, source_fieldname = df.options.split('.', 1)
link_df = new_meta.get_field(link_fieldname)
frappe.db.sql('''update
`tab{link_doctype}` source,
`tab{doctype}` target
set
target.`{fieldname}` = source.`{source_fieldname}`
where
target.`{link_fieldname}` = source.name
and ifnull(target.`{fieldname}`, '')="" '''.format(
link_doctype = link_df.options,
source_fieldname = source_fieldname,
doctype = self.name,
fieldname = df.fieldname,
link_fieldname = link_fieldname
))
self.flags.update_fields_to_fetch_queries.append('''update
`tab{link_doctype}` source,
`tab{doctype}` target
set
target.`{fieldname}` = source.`{source_fieldname}`
where
target.`{link_fieldname}` = source.name
and ifnull(target.`{fieldname}`, '')="" '''.format(
link_doctype = link_df.options,
source_fieldname = source_fieldname,
doctype = self.name,
fieldname = df.fieldname,
link_fieldname = link_fieldname
))
def update_fields_to_fetch(self):
'''Update fetch values based on queries setup'''
if self.flags.update_fields_to_fetch_queries:
for query in self.flags.update_fields_to_fetch_queries:
frappe.db.sql(query)
def validate_document_type(self):
if self.document_type=="Transaction":
@ -177,6 +185,8 @@ class DocType(Document):
self.change_modified_of_parent()
make_module_and_roles(self)
self.update_fields_to_fetch()
from frappe import conf
if not self.custom and not (frappe.flags.in_import or frappe.flags.in_test) and conf.get('developer_mode'):
self.export_doc()

2
frappe/email/email_body.py Normal file → Executable file
View file

@ -185,7 +185,7 @@ class EMail:
def set_message_id(self, message_id):
if message_id:
self.msg_root["Message-Id"] = message_id
self.msg_root["Message-Id"] = '<' + message_id + '>'
else:
self.msg_root["Message-Id"] = get_message_id()
self.msg_root["References"] = '<notification>'

View file

@ -143,12 +143,6 @@ scheduler_events = {
"frappe.email.doctype.auto_email_report.auto_email_report.send_daily",
"frappe.desk.page.backups.backups.delete_downloadable_backups"
],
"daily_long": [
"frappe.integrations.dropbox_integration.take_backups_daily"
],
"weekly_long": [
"frappe.integrations.dropbox_integration.take_backups_weekly"
],
"monthly": [
"frappe.email.doctype.auto_email_report.auto_email_report.send_monthly"
]

View file

@ -11,10 +11,16 @@ from frappe.utils.scheduler import get_scheduler_events
class TestIntegrationService(unittest.TestCase):
def test_scheudler_events(self):
dropbox_settings = frappe.get_doc('Dropbox Settings')
dropbox_settings.db_set('enabled', 1)
if not frappe.db.exists("Integration Service", "Dropbox"):
frappe.get_doc({
"doctype": "Integration Service",
"service": "Dropbox"
}).insert(ignore_permissions=True)
frappe.db.set_value("Integration Service", "Dropbox", "enabled", 1)
frappe.cache().delete_key('scheduler_events')
events = get_scheduler_events('daily_long')
self.assertTrue('frappe.integrations.dropbox_integration.take_backups_daily' in events)
dropbox_settings.db_set('enabled', 0)
self.assertTrue('frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backups_daily' in events)
frappe.db.set_value("Integration Service", "Dropbox", "enabled", 0)

View file

@ -1,5 +1,5 @@
<div class="form-documents">
<h5 style="margin: 5px 0px;">Related Documents</h5>
<h5 style="margin: 5px 0px;">{{__("Related Documents")}}</h5>
{% for (var i=0; i < transactions.length; i++) { %}
{% if((i % 2)===0) { %}<div class="row">{% } %}
<div class="col-xs-6">
@ -18,4 +18,4 @@
{% } %}
<!-- finally, close one-column row -->
{% if((i % 2)===0) { %}</div>{% } %}
</div>
</div>