Merge branch 'develop'
This commit is contained in:
commit
b1c620fe38
9 changed files with 34 additions and 14 deletions
|
|
@ -1,2 +1,2 @@
|
|||
from __future__ import unicode_literals
|
||||
__version__ = "5.0.14"
|
||||
__version__ = "5.0.15"
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from __future__ import unicode_literals, absolute_import
|
|||
import frappe
|
||||
import json
|
||||
from email.utils import formataddr, parseaddr
|
||||
from frappe.utils import get_url, get_formatted_email
|
||||
from frappe.utils import get_url, get_formatted_email, cstr
|
||||
from frappe.utils.file_manager import get_file
|
||||
import frappe.email.smtp
|
||||
from frappe import _
|
||||
|
|
@ -122,7 +122,8 @@ class Communication(Document):
|
|||
|
||||
def get_recipients(self, except_recipient=False):
|
||||
"""Build a list of users to which this email should go to"""
|
||||
original_recipients = [s.strip() for s in self.recipients.split(",")]
|
||||
# [EDGE CASE] self.recipients can be None when an email is sent as BCC
|
||||
original_recipients = [s.strip() for s in cstr(self.recipients).split(",")]
|
||||
recipients = original_recipients[:]
|
||||
|
||||
if self.reference_doctype and self.reference_name:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ app_title = "Frappe Framework"
|
|||
app_publisher = "Frappe Technologies Pvt. Ltd."
|
||||
app_description = "Full Stack Web Application Framework in Python"
|
||||
app_icon = "octicon octicon-circuit-board"
|
||||
app_version = "5.0.14"
|
||||
app_version = "5.0.15"
|
||||
app_color = "orange"
|
||||
|
||||
app_email = "support@frappe.io"
|
||||
|
|
|
|||
|
|
@ -147,7 +147,9 @@ class Document(BaseDocument):
|
|||
|
||||
def raise_no_permission_to(self, perm_type):
|
||||
"""Raise `frappe.PermissionError`."""
|
||||
raise frappe.PermissionError("No permission to {} {} {}".format(perm_type, self.doctype, self.name or ""))
|
||||
msg = _("No permission to {0} {1} {2}".format(perm_type, self.doctype, self.name or ""))
|
||||
frappe.msgprint(msg)
|
||||
raise frappe.PermissionError(msg)
|
||||
|
||||
def insert(self, ignore_permissions=None):
|
||||
"""Insert the document in the database (as a new document).
|
||||
|
|
|
|||
|
|
@ -29,7 +29,8 @@ frappe.ui.form.Control = Class.extend({
|
|||
this.make_wrapper();
|
||||
this.$wrapper
|
||||
.addClass("ui-front")
|
||||
.attr("data-fieldtype", this.df.fieldtype);
|
||||
.attr("data-fieldtype", this.df.fieldtype)
|
||||
.attr("data-fieldname", this.df.fieldname);
|
||||
this.wrapper = this.$wrapper.get(0);
|
||||
this.wrapper.fieldobj = this; // reference for event handlers
|
||||
},
|
||||
|
|
|
|||
|
|
@ -9,17 +9,29 @@ frappe.provide("frappe.datetime");
|
|||
|
||||
$.extend(frappe.datetime, {
|
||||
convert_to_user_tz: function(date) {
|
||||
return moment.tz(date, sys_defaults.time_zone).utc()
|
||||
.utcOffset(moment.user_utc_offset).format(moment.defaultDatetimeFormat);
|
||||
if(sys_defaults.time_zone) {
|
||||
return moment.tz(date, sys_defaults.time_zone).utc()
|
||||
.utcOffset(moment.user_utc_offset).format(moment.defaultDatetimeFormat);
|
||||
} else {
|
||||
return moment(date).format(moment.defaultDatetimeFormat);
|
||||
}
|
||||
},
|
||||
|
||||
convert_to_system_tz: function(date) {
|
||||
return moment(date).utc()
|
||||
.utcOffset(moment.system_utc_offset).format(moment.defaultDatetimeFormat);
|
||||
if(sys_defaults.time_zone) {
|
||||
return moment(date).utc()
|
||||
.utcOffset(moment.system_utc_offset).format(moment.defaultDatetimeFormat);
|
||||
} else {
|
||||
return moment(date).format(moment.defaultDatetimeFormat);
|
||||
}
|
||||
},
|
||||
|
||||
is_timezone_same: function() {
|
||||
return moment().tz(sys_defaults.time_zone).utcOffset() === moment().utcOffset();
|
||||
if(sys_defaults.time_zone) {
|
||||
return moment().tz(sys_defaults.time_zone).utcOffset() === moment().utcOffset();
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
},
|
||||
|
||||
str_to_obj: function(d) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
function prettyDate(time, mini){
|
||||
|
||||
if(moment) {
|
||||
var ret = moment.tz(time, sys_defaults.time_zone).fromNow(mini);
|
||||
if(sys_defaults.time_zone) {
|
||||
var ret = moment.tz(time, sys_defaults.time_zone).fromNow(mini);
|
||||
} else {
|
||||
var ret = moment(time).fromNow(mini);
|
||||
}
|
||||
if(mini) {
|
||||
if(ret === "a few seconds") {
|
||||
ret = "now";
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
data-email-footer="true">
|
||||
{{ footer }}
|
||||
</div>
|
||||
|
||||
<!-- /footer -->
|
||||
|
||||
<div class="print-html">{{ print_html or "" }}</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
2
setup.py
2
setup.py
|
|
@ -1,6 +1,6 @@
|
|||
from setuptools import setup, find_packages
|
||||
|
||||
version = "5.0.14"
|
||||
version = "5.0.15"
|
||||
|
||||
with open("requirements.txt", "r") as f:
|
||||
install_requires = f.readlines()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue