@@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json | |||||
from .exceptions import * | from .exceptions import * | ||||
from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template | from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template | ||||
__version__ = '10.0.11' | |||||
__version__ = '10.0.12' | |||||
__title__ = "Frappe Framework" | __title__ = "Frappe Framework" | ||||
local = Local() | local = Local() | ||||
@@ -70,7 +70,8 @@ class Communication(Document): | |||||
if not (self.reference_doctype and self.reference_name): | if not (self.reference_doctype and self.reference_name): | ||||
return | return | ||||
if self.reference_doctype == "Communication" and self.sent_or_received == "Sent": | |||||
if self.reference_doctype == "Communication" and self.sent_or_received == "Sent" and \ | |||||
self.communication_type != 'Comment': | |||||
frappe.db.set_value("Communication", self.reference_name, "status", "Replied") | frappe.db.set_value("Communication", self.reference_name, "status", "Replied") | ||||
if self.communication_type in ("Communication", "Comment"): | if self.communication_type in ("Communication", "Comment"): | ||||
@@ -374,9 +374,6 @@ def get_bcc(doc, recipients=None, fetched_from_email_account=False): | |||||
bcc.append(get_owner_email(doc)) | bcc.append(get_owner_email(doc)) | ||||
bcc += get_assignees(doc) | bcc += get_assignees(doc) | ||||
if getattr(doc, "send_me_a_copy", False) and doc.sender not in bcc: | |||||
bcc.append(doc.sender) | |||||
if bcc: | if bcc: | ||||
exclude = [] | exclude = [] | ||||
exclude += [d[0] for d in frappe.db.get_all("User", ["name"], {"thread_notify": 0}, as_list=True)] | exclude += [d[0] for d in frappe.db.get_all("User", ["name"], {"thread_notify": 0}, as_list=True)] | ||||
@@ -116,7 +116,8 @@ def get_feedback_request_details(reference_doctype, reference_name, trigger="Man | |||||
frappe.msgprint(_("At least one reply is mandatory before requesting feedback")) | frappe.msgprint(_("At least one reply is mandatory before requesting feedback")) | ||||
return None | return None | ||||
if recipients and frappe.safe_eval(feedback_trigger.condition, None, context): | |||||
if recipients and (not feedback_trigger.condition or \ | |||||
frappe.safe_eval(feedback_trigger.condition, None, context)): | |||||
subject = feedback_trigger.subject | subject = feedback_trigger.subject | ||||
context.update({ "feedback_trigger": feedback_trigger }) | context.update({ "feedback_trigger": feedback_trigger }) | ||||
@@ -308,7 +308,7 @@ class DatabaseQuery(object): | |||||
if f.operator.lower() == 'between' and \ | if f.operator.lower() == 'between' and \ | ||||
(f.fieldname in ('creation', 'modified') or (df and (df.fieldtype=="Date" or df.fieldtype=="Datetime"))): | (f.fieldname in ('creation', 'modified') or (df and (df.fieldtype=="Date" or df.fieldtype=="Datetime"))): | ||||
value = get_between_date_filter(f.value) | |||||
value = get_between_date_filter(f.value, df) | |||||
fallback = "'0000-00-00 00:00:00'" | fallback = "'0000-00-00 00:00:00'" | ||||
elif df and df.fieldtype=="Date": | elif df and df.fieldtype=="Date": | ||||
@@ -584,20 +584,27 @@ def is_parent_only_filter(doctype, filters): | |||||
return only_parent_doctype | return only_parent_doctype | ||||
def get_between_date_filter(value): | |||||
def get_between_date_filter(value, df=None): | |||||
''' | ''' | ||||
return the formattted date as per the given example | return the formattted date as per the given example | ||||
[u'2017-11-01', u'2017-11-03'] => '2017-11-01 00:00:00.000000' AND '2017-11-04 00:00:00.000000' | [u'2017-11-01', u'2017-11-03'] => '2017-11-01 00:00:00.000000' AND '2017-11-04 00:00:00.000000' | ||||
''' | ''' | ||||
from_date = None | from_date = None | ||||
to_date = None | to_date = None | ||||
date_format = "%Y-%m-%d %H:%M:%S.%f" | |||||
if df: | |||||
date_format = "%Y-%m-%d %H:%M:%S.%f" if df.fieldtype == 'Datetime' else "%Y-%m-%d" | |||||
if value and isinstance(value, (list, tuple)): | if value and isinstance(value, (list, tuple)): | ||||
if len(value) >= 1: from_date = value[0] | if len(value) >= 1: from_date = value[0] | ||||
if len(value) >= 2: to_date = value[1] | if len(value) >= 2: to_date = value[1] | ||||
if not df or (df and df.fieldtype == 'Datetime'): | |||||
to_date = add_to_date(to_date,days=1) | |||||
data = "'%s' AND '%s'" % ( | data = "'%s' AND '%s'" % ( | ||||
get_datetime(from_date).strftime("%Y-%m-%d %H:%M:%S.%f"), | |||||
add_to_date(get_datetime(to_date),days=1).strftime("%Y-%m-%d %H:%M:%S.%f")) | |||||
get_datetime(from_date).strftime(date_format), | |||||
get_datetime(to_date).strftime(date_format)) | |||||
return data | return data |