-
Notifications
You must be signed in to change notification settings - Fork 3.2k
/
contact.py
63 lines (46 loc) · 1.76 KB
/
contact.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: MIT. See LICENSE
from contextlib import suppress
import frappe
from frappe import _
from frappe.rate_limiter import rate_limit
from frappe.utils import validate_email_address
sitemap = 1
def get_context(context):
doc = frappe.get_doc("Contact Us Settings", "Contact Us Settings")
if doc.query_options:
query_options = [opt.strip() for opt in doc.query_options.replace(",", "\n").split("\n") if opt]
else:
query_options = ["Sales", "Support", "General"]
out = {"query_options": query_options, "parents": [{"name": _("Home"), "route": "/"}]}
out.update(doc.as_dict())
return out
@frappe.whitelist(allow_guest=True)
@rate_limit(limit=1000, seconds=60 * 60)
def send_message(sender, message, subject="Website Query"):
sender = validate_email_address(sender, throw=True)
with suppress(frappe.OutgoingEmailError):
if forward_to_email := frappe.db.get_single_value("Contact Us Settings", "forward_to_email"):
frappe.sendmail(recipients=forward_to_email, reply_to=sender, content=message, subject=subject)
reply = _(
"""Thank you for reaching out to us. We will get back to you at the earliest.
Your query:
{0}"""
).format(message)
frappe.sendmail(
recipients=sender,
content=f"<div style='white-space: pre-wrap'>{reply}</div>",
subject=_("We've received your query!"),
)
# for clearing outgoing email error message
frappe.clear_last_message()
system_language = frappe.db.get_single_value("System Settings", "language")
# add to to-do ?
frappe.get_doc(
doctype="Communication",
sender=sender,
subject=_("New Message from Website Contact Page", system_language),
sent_or_received="Received",
content=message,
status="Open",
).insert(ignore_permissions=True)